{"version":3,"sources":["../PEP-Site/node_modules/ag-charts-community/dist/package/main.esm.mjs","../PEP-Site/node_modules/ag-charts-angular/fesm2020/ag-charts-angular.mjs","../PEP-Site/src/app/shared/plans-shared/components/charts/plans-pie-chart/plans-pie-chart.component.ts","../PEP-Site/src/app/shared/plans-shared/components/charts/plans-pie-chart/plans-pie-chart.component.html","../PEP-Site/src/app/shared/plans-shared/components/charts/plans-bar-chart/plans-bar-chart.component.ts","../PEP-Site/src/app/shared/plans-shared/components/charts/plans-bar-chart/plans-bar-chart.component.html","../PEP-Site/src/app/shared/plans-shared/components/base/base-plan-card/base-plan-card.component.ts","../PEP-Site/src/app/shared/plans-shared/components/team/cards/member-plan-assignment/member-assignment-item/member-assignment-item.component.ts","../PEP-Site/src/app/shared/plans-shared/components/team/cards/member-plan-assignment/member-assignment-item/member-assignment-item.component.html","../PEP-Site/src/app/shared/plans-shared/components/team/cards/member-plan-assignment/member-plan-assignment.component.ts","../PEP-Site/src/app/shared/plans-shared/components/team/cards/member-plan-assignment/member-plan-assignment.component.html","../PEP-Site/src/app/features/teams/services/team-reports.service.ts","../PEP-Site/src/app/features/teams/services/team-member-actions.service.ts","../PEP-Site/src/app/shared/plans-shared/components/self/cards/plan-card/plan-card.component.ts","../PEP-Site/src/app/shared/plans-shared/components/self/cards/plan-card/plan-card.component.html","../PEP-Site/src/app/shared/plans-shared/components/team/cards/mini-learning-plan-status/mini-learning-plan-status.component.ts","../PEP-Site/src/app/shared/plans-shared/components/team/cards/mini-learning-plan-status/mini-learning-plan-status.component.html","../PEP-Site/src/app/shared/plans-shared/components/team/cards/member-plan-assignment-mini/member-plan-assignment-mini.component.ts","../PEP-Site/src/app/shared/plans-shared/components/team/cards/member-plan-assignment-mini/member-plan-assignment-mini.component.html","../PEP-Site/src/app/shared/plans-shared/components/status/inline-plan-status/inline-plan-status.component.ts","../PEP-Site/src/app/shared/plans-shared/components/status/inline-plan-status/inline-plan-status.component.html","../PEP-Site/src/app/shared/plans-shared/plans-shared.module.ts","../PEP-Site/src/app/core/enums/page-family.enum.ts","../PEP-Site/src/app/features/teams/services/team-file.service.ts"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __reflectGet = Reflect.get;\nvar __knownSymbol = (name, symbol) => {\n return (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\n};\nvar __pow = Math.pow;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value\n}) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop];\n }\n return target;\n};\nvar __export = (target, all) => {\n for (var name in all) __defProp(target, name, {\n get: all[name],\n enumerable: true\n });\n};\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result) __defProp(target, key, result);\n return result;\n};\nvar __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = value => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = value => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = x => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nvar __await = function (promise, isYieldStar) {\n this[0] = promise;\n this[1] = isYieldStar;\n};\nvar __yieldStar = value => {\n var obj = value[__knownSymbol(\"asyncIterator\")];\n var isAwait = false;\n var method;\n var it = {};\n if (obj == null) {\n obj = value[__knownSymbol(\"iterator\")]();\n method = k => it[k] = x => obj[k](x);\n } else {\n obj = obj.call(value);\n method = k => it[k] = v => {\n if (isAwait) {\n isAwait = false;\n if (k === \"throw\") throw v;\n return v;\n }\n isAwait = true;\n return {\n done: false,\n value: new __await(new Promise(resolve => {\n var x = obj[k](v);\n if (!(x instanceof Object)) throw TypeError(\"Object expected\");\n resolve(x);\n }), 1)\n };\n };\n }\n return it[__knownSymbol(\"iterator\")] = () => it, method(\"next\"), \"throw\" in obj ? method(\"throw\") : it.throw = x => {\n throw x;\n }, \"return\" in obj && method(\"return\"), it;\n};\n\n// packages/ag-charts-community/src/options/chart/errorBarOptions.ts\nvar AgErrorBarSupportedSeriesTypes = [\"bar\", \"line\", \"scatter\"];\n\n// packages/ag-charts-community/src/options/chart/navigatorOptions.ts\nvar __MINI_CHART_SERIES_OPTIONS = {};\nvar __VERIFY_MINI_CHART_SERIES_OPTIONS = void 0;\n__VERIFY_MINI_CHART_SERIES_OPTIONS = __MINI_CHART_SERIES_OPTIONS;\n\n// packages/ag-charts-community/src/options/chart/tooltipOptions.ts\nvar AgTooltipPositionType = /* @__PURE__ */(AgTooltipPositionType2 => {\n AgTooltipPositionType2[\"POINTER\"] = \"pointer\";\n AgTooltipPositionType2[\"NODE\"] = \"node\";\n AgTooltipPositionType2[\"TOP\"] = \"top\";\n AgTooltipPositionType2[\"RIGHT\"] = \"right\";\n AgTooltipPositionType2[\"BOTTOM\"] = \"bottom\";\n AgTooltipPositionType2[\"LEFT\"] = \"left\";\n AgTooltipPositionType2[\"TOP_LEFT\"] = \"top-left\";\n AgTooltipPositionType2[\"TOP_RIGHT\"] = \"top-right\";\n AgTooltipPositionType2[\"BOTTOM_RIGHT\"] = \"bottom-right\";\n AgTooltipPositionType2[\"BOTTOM_LEFT\"] = \"bottom-left\";\n return AgTooltipPositionType2;\n})(AgTooltipPositionType || {});\n\n// packages/ag-charts-community/src/options/chart/themeOptions.ts\nvar __THEME_OVERRIDES = {};\nvar __VERIFY_THEME_OVERRIDES = void 0;\n__VERIFY_THEME_OVERRIDES = __THEME_OVERRIDES;\n\n// packages/ag-charts-community/src/options/agChartOptions.ts\nvar __FORCE_MODULE_DETECTION = 0;\n\n// packages/ag-charts-community/src/util/time/index.ts\nvar time_exports = {};\n__export(time_exports, {\n day: () => day,\n friday: () => friday,\n hour: () => hour,\n millisecond: () => millisecond,\n minute: () => minute,\n monday: () => monday,\n month: () => month,\n saturday: () => saturday,\n second: () => second,\n sunday: () => sunday,\n thursday: () => thursday,\n tuesday: () => tuesday,\n utcDay: () => utcDay,\n utcHour: () => utcHour,\n utcMinute: () => utcMinute,\n utcMonth: () => utcMonth,\n utcYear: () => utcYear,\n wednesday: () => wednesday,\n year: () => year\n});\n\n// packages/ag-charts-community/src/util/function.ts\nvar doOnceState = /* @__PURE__ */new Map();\nfunction doOnce(func, key) {\n if (doOnceState.has(key)) return;\n doOnceState.set(key, true);\n func();\n}\ndoOnce.clear = () => doOnceState.clear();\nfunction identity(x) {\n return x;\n}\nfunction* iterate(...iterators) {\n for (const iterator of iterators) {\n yield* __yieldStar(iterator);\n }\n}\nfunction* iterateReverseArray(array) {\n for (let j = array.length - 1; j >= 0; j--) {\n yield array[j];\n }\n}\nfunction throttle(callback, waitMs = 0, options) {\n const {\n leading = true,\n trailing = true\n } = options != null ? options : {};\n let timerId;\n let lastArgs;\n let shouldWait = false;\n function timeoutHandler() {\n if (trailing && lastArgs) {\n timerId = setTimeout(timeoutHandler, waitMs);\n callback(...lastArgs);\n } else {\n shouldWait = false;\n }\n lastArgs = null;\n }\n function throttleCallback(...args) {\n if (shouldWait) {\n lastArgs = args;\n } else {\n shouldWait = true;\n timerId = setTimeout(timeoutHandler, waitMs);\n if (leading) {\n callback(...args);\n } else {\n lastArgs = args;\n }\n }\n }\n return Object.assign(throttleCallback, {\n cancel() {\n clearTimeout(timerId);\n shouldWait = false;\n lastArgs = null;\n }\n });\n}\nfunction joinFunctions(...fns) {\n return () => {\n for (const fn of fns) {\n fn();\n }\n };\n}\n\n// packages/ag-charts-community/src/util/logger.ts\nvar Logger = {\n log(...logContent) {\n console.log(...logContent);\n },\n warn(message, ...logContent) {\n console.warn(`AG Charts - ${message}`, ...logContent);\n },\n error(message, ...logContent) {\n if (typeof message === \"object\") {\n console.error(`AG Charts error`, message, ...logContent);\n } else {\n console.error(`AG Charts - ${message}`, ...logContent);\n }\n },\n table(...logContent) {\n console.table(...logContent);\n },\n warnOnce(message, ...logContent) {\n doOnce(() => Logger.warn(message, ...logContent), `Logger.warn: ${message}`);\n },\n errorOnce(message, ...logContent) {\n doOnce(() => Logger.error(message, ...logContent), `Logger.error: ${message}`);\n }\n};\n\n// packages/ag-charts-community/src/util/time/interval.ts\nvar TimeInterval = class {\n constructor(_encode, _decode, _rangeCallback) {\n this._encode = _encode;\n this._decode = _decode;\n this._rangeCallback = _rangeCallback;\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 floor(date) {\n const d = new Date(date);\n const e = this._encode(d);\n return this._decode(e);\n }\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n ceil(date) {\n const d = new Date(Number(date) - 1);\n const e = this._encode(d);\n return this._decode(e + 1);\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 Range start.\n * @param stop Range end.\n * @param extend If specified, the requested range will be extended to the closest \"nice\" values.\n */\n range(start, stop, extend) {\n var _a;\n const rangeCallback = (_a = this._rangeCallback) == null ? void 0 : _a.call(this, start, stop);\n const e0 = this._encode(extend ? this.floor(start) : this.ceil(start));\n const e1 = this._encode(extend ? this.ceil(stop) : this.floor(stop));\n if (e1 < e0) {\n return [];\n }\n const range3 = [];\n for (let e = e0; e <= e1; e++) {\n const d = this._decode(e);\n range3.push(d);\n }\n rangeCallback == null ? void 0 : rangeCallback();\n return range3;\n }\n};\nvar CountableTimeInterval = class extends TimeInterval {\n getOffset(snapTo, step) {\n const s = typeof snapTo === \"number\" || snapTo instanceof Date ? this._encode(new Date(snapTo)) : 0;\n return Math.floor(s) % step;\n }\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * It can be a number of minutes, hours, days etc.\n * Must be a positive integer.\n * @param step\n */\n every(step, options) {\n let offset4 = 0;\n let rangeCallback;\n const unsafeStep = step;\n step = Math.max(1, Math.round(step));\n if (unsafeStep !== step) {\n Logger.warnOnce(`interval step of [${unsafeStep}] rounded to [${step}].`);\n }\n const {\n snapTo = \"start\"\n } = options != null ? options : {};\n if (typeof snapTo === \"string\") {\n const initialOffset = offset4;\n rangeCallback = (start, stop) => {\n const s = snapTo === \"start\" ? start : stop;\n offset4 = this.getOffset(s, step);\n return () => offset4 = initialOffset;\n };\n } else if (typeof snapTo === \"number\") {\n offset4 = this.getOffset(new Date(snapTo), step);\n } else if (snapTo instanceof Date) {\n offset4 = this.getOffset(snapTo, step);\n }\n const encode13 = date => {\n const e = this._encode(date);\n return Math.floor((e - offset4) / step);\n };\n const decode13 = encoded => {\n return this._decode(encoded * step + offset4);\n };\n return new TimeInterval(encode13, decode13, rangeCallback);\n }\n};\n\n// packages/ag-charts-community/src/util/time/millisecond.ts\nfunction encode(date) {\n return date.getTime();\n}\nfunction decode(encoded) {\n return new Date(encoded);\n}\nvar millisecond = new CountableTimeInterval(encode, decode);\nvar millisecond_default = millisecond;\n\n// packages/ag-charts-community/src/util/time/duration.ts\nvar epochYear = ( /* @__PURE__ */new Date(0)).getFullYear();\nvar durationSecond = 1e3;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\n\n// packages/ag-charts-community/src/util/time/second.ts\nvar offset = ( /* @__PURE__ */new Date()).getTimezoneOffset() * durationMinute;\nfunction encode2(date) {\n return Math.floor((date.getTime() - offset) / durationSecond);\n}\nfunction decode2(encoded) {\n return new Date(offset + encoded * durationSecond);\n}\nvar second = new CountableTimeInterval(encode2, decode2);\nvar second_default = second;\n\n// packages/ag-charts-community/src/util/time/minute.ts\nvar offset2 = ( /* @__PURE__ */new Date()).getTimezoneOffset() * durationMinute;\nfunction encode3(date) {\n return Math.floor((date.getTime() - offset2) / durationMinute);\n}\nfunction decode3(encoded) {\n return new Date(offset2 + encoded * durationMinute);\n}\nvar minute = new CountableTimeInterval(encode3, decode3);\nvar minute_default = minute;\n\n// packages/ag-charts-community/src/util/time/hour.ts\nvar offset3 = ( /* @__PURE__ */new Date()).getTimezoneOffset() * durationMinute;\nfunction encode4(date) {\n return Math.floor((date.getTime() - offset3) / durationHour);\n}\nfunction decode4(encoded) {\n return new Date(offset3 + encoded * durationHour);\n}\nvar hour = new CountableTimeInterval(encode4, decode4);\nvar hour_default = hour;\n\n// packages/ag-charts-community/src/util/time/day.ts\nfunction encode5(date) {\n const tzOffsetMs = date.getTimezoneOffset() * durationMinute;\n return Math.floor((date.getTime() - tzOffsetMs) / durationDay);\n}\nfunction decode5(encoded) {\n const d = new Date(1970, 0, 1);\n d.setDate(d.getDate() + encoded);\n return d;\n}\nvar day = new CountableTimeInterval(encode5, decode5);\nvar day_default = day;\n\n// packages/ag-charts-community/src/util/time/week.ts\nfunction weekday(weekStart) {\n const thursday2 = 4;\n const dayShift = (7 + weekStart - thursday2) % 7;\n function encode13(date) {\n const tzOffsetMs = date.getTimezoneOffset() * durationMinute;\n return Math.floor((date.getTime() - tzOffsetMs) / durationWeek - dayShift / 7);\n }\n function decode13(encoded) {\n const d = new Date(1970, 0, 1);\n d.setDate(d.getDate() + encoded * 7 + dayShift);\n return d;\n }\n return new CountableTimeInterval(encode13, decode13);\n}\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\nvar week_default = sunday;\n\n// packages/ag-charts-community/src/util/time/month.ts\nfunction encode6(date) {\n return date.getFullYear() * 12 + date.getMonth();\n}\nfunction decode6(encoded) {\n const year2 = Math.floor(encoded / 12);\n const month2 = encoded - year2 * 12;\n return new Date(year2, month2, 1);\n}\nvar month = new CountableTimeInterval(encode6, decode6);\nvar month_default = month;\n\n// packages/ag-charts-community/src/util/time/year.ts\nfunction encode7(date) {\n return date.getFullYear();\n}\nfunction decode7(encoded) {\n const d = /* @__PURE__ */new Date();\n d.setFullYear(encoded);\n d.setMonth(0, 1);\n d.setHours(0, 0, 0, 0);\n return d;\n}\nvar year = new CountableTimeInterval(encode7, decode7);\nvar year_default = year;\n\n// packages/ag-charts-community/src/util/time/utcMinute.ts\nfunction encode8(date) {\n return Math.floor(date.getTime() / durationMinute);\n}\nfunction decode8(encoded) {\n return new Date(encoded * durationMinute);\n}\nvar utcMinute = new CountableTimeInterval(encode8, decode8);\n\n// packages/ag-charts-community/src/util/time/utcHour.ts\nfunction encode9(date) {\n return Math.floor(date.getTime() / durationHour);\n}\nfunction decode9(encoded) {\n return new Date(encoded * durationHour);\n}\nvar utcHour = new CountableTimeInterval(encode9, decode9);\n\n// packages/ag-charts-community/src/util/time/utcDay.ts\nfunction encode10(date) {\n return Math.floor(date.getTime() / durationDay);\n}\nfunction decode10(encoded) {\n const d = /* @__PURE__ */new Date(0);\n d.setUTCDate(d.getUTCDate() + encoded);\n d.setUTCHours(0, 0, 0, 0);\n return d;\n}\nvar utcDay = new CountableTimeInterval(encode10, decode10);\n\n// packages/ag-charts-community/src/util/time/utcMonth.ts\nfunction encode11(date) {\n return date.getUTCFullYear() * 12 + date.getUTCMonth();\n}\nfunction decode11(encoded) {\n const year2 = Math.floor(encoded / 12);\n const month2 = encoded - year2 * 12;\n return new Date(Date.UTC(year2, month2, 1));\n}\nvar utcMonth = new CountableTimeInterval(encode11, decode11);\n\n// packages/ag-charts-community/src/util/time/utcYear.ts\nfunction encode12(date) {\n return date.getUTCFullYear();\n}\nfunction decode12(encoded) {\n const d = /* @__PURE__ */new Date();\n d.setUTCFullYear(encoded);\n d.setUTCMonth(0, 1);\n d.setUTCHours(0, 0, 0, 0);\n return d;\n}\nvar utcYear = new CountableTimeInterval(encode12, decode12);\n\n// packages/ag-charts-community/src/module/enterpriseModule.ts\nvar enterpriseModule = {\n isEnterprise: false\n};\n\n// packages/ag-charts-community/src/module/module.ts\nvar BaseModuleInstance = class {\n constructor() {\n this.destroyFns = [];\n }\n destroy() {\n for (const destroyFn of this.destroyFns) {\n destroyFn();\n }\n }\n};\nvar ModuleRegistry = class {\n constructor() {\n this.modules = [];\n this.dependencies = /* @__PURE__ */new Set();\n this.dependents = /* @__PURE__ */new Set();\n }\n register(...modules) {\n for (const module of modules) {\n this.registerDependencies(module);\n const otherModule = this.modules.find(other => module.type === other.type && module.optionsKey === other.optionsKey && module.identifier === other.identifier);\n if (otherModule) {\n if (module.packageType === \"enterprise\" && otherModule.packageType === \"community\") {\n const index = this.modules.indexOf(otherModule);\n this.modules.splice(index, 1, module);\n }\n } else {\n this.modules.push(module);\n }\n }\n }\n hasEnterpriseModules() {\n return this.modules.some(m => m.packageType === \"enterprise\");\n }\n *byType(...types) {\n for (const module of this.modules) {\n if (types.includes(module.type) && this.dependencies.has(module.optionsKey)) {\n yield module;\n }\n }\n for (const module of this.modules) {\n if (types.includes(module.type) && !this.dependencies.has(module.optionsKey) && !this.dependents.has(module.optionsKey)) {\n yield module;\n }\n }\n for (const module of this.modules) {\n if (types.includes(module.type) && this.dependents.has(module.optionsKey)) {\n yield module;\n }\n }\n }\n registerDependencies(module) {\n if (module.dependencies == null || module.dependencies.length === 0) return;\n if (this.dependencies.has(module.optionsKey)) {\n throw new Error(`Module [${module.optionsKey}] can not both be depended upon by any module and have dependencies of [${module.dependencies}].`);\n }\n for (const dep of module.dependencies) {\n if (this.dependents.has(dep)) {\n throw new Error(`Module [${dep}] can not both be depended upon by any module and have dependencies of [${module.optionsKey}].`);\n }\n this.dependencies.add(dep);\n }\n this.dependents.add(module.optionsKey);\n }\n};\nvar moduleRegistry = new ModuleRegistry();\n\n// packages/ag-charts-community/src/chart/factory/axisRegistry.ts\nvar AxisRegistry = class {\n constructor() {\n this.axesMap = /* @__PURE__ */new Map();\n this.hidden = /* @__PURE__ */new Set();\n this.themeTemplates = /* @__PURE__ */new Map();\n }\n register(axisType, module) {\n this.axesMap.set(axisType, module.instanceConstructor);\n if (module.themeTemplate) {\n this.setThemeTemplate(axisType, module.themeTemplate);\n }\n if (module.hidden) {\n this.hidden.add(axisType);\n }\n }\n create(axisType, moduleContext) {\n const AxisConstructor = this.axesMap.get(axisType);\n if (AxisConstructor) {\n return new AxisConstructor(moduleContext);\n }\n throw new Error(`AG Charts - unknown axis type: ${axisType}`);\n }\n has(axisType) {\n return this.axesMap.has(axisType);\n }\n keys() {\n return this.axesMap.keys();\n }\n publicKeys() {\n return [...this.keys()].filter(k => !this.hidden.has(k));\n }\n setThemeTemplate(axisType, themeTemplate) {\n this.themeTemplates.set(axisType, themeTemplate);\n return this;\n }\n getThemeTemplate(axisType) {\n return this.themeTemplates.get(axisType);\n }\n};\nvar axisRegistry = new AxisRegistry();\n\n// packages/ag-charts-community/src/util/decorator.ts\nvar BREAK_TRANSFORM_CHAIN = Symbol(\"BREAK\");\nvar CONFIG_KEY = \"__decorator_config\";\nfunction initialiseConfig(target, propertyKeyOrSymbol) {\n if (Object.getOwnPropertyDescriptor(target, CONFIG_KEY) == null) {\n Object.defineProperty(target, CONFIG_KEY, {\n value: {}\n });\n }\n const config = target[CONFIG_KEY];\n const propertyKey = propertyKeyOrSymbol.toString();\n if (typeof config[propertyKey] !== \"undefined\") {\n return config[propertyKey];\n }\n const valuesMap = /* @__PURE__ */new WeakMap();\n config[propertyKey] = {\n setters: [],\n getters: [],\n observers: [],\n valuesMap\n };\n const descriptor = Object.getOwnPropertyDescriptor(target, propertyKeyOrSymbol);\n const prevSet = descriptor == null ? void 0 : descriptor.set;\n const prevGet = descriptor == null ? void 0 : descriptor.get;\n const getter = function () {\n let value = prevGet ? prevGet.call(this) : valuesMap.get(this);\n for (const transformFn of config[propertyKey].getters) {\n value = transformFn(this, propertyKeyOrSymbol, value);\n if (value === BREAK_TRANSFORM_CHAIN) {\n return;\n }\n }\n return value;\n };\n const setter = function (value) {\n const {\n setters,\n observers\n } = config[propertyKey];\n let oldValue;\n if (setters.some(f => f.length > 2)) {\n oldValue = prevGet ? prevGet.call(this) : valuesMap.get(this);\n }\n for (const transformFn of setters) {\n value = transformFn(this, propertyKeyOrSymbol, value, oldValue);\n if (value === BREAK_TRANSFORM_CHAIN) {\n return;\n }\n }\n if (prevSet) {\n prevSet.call(this, value);\n } else {\n valuesMap.set(this, value);\n }\n for (const observerFn of observers) {\n observerFn(this, value, oldValue);\n }\n };\n Object.defineProperty(target, propertyKeyOrSymbol, {\n set: setter,\n get: getter,\n enumerable: true,\n configurable: false\n });\n return config[propertyKey];\n}\nfunction addTransformToInstanceProperty(setTransform, getTransform, configMetadata) {\n return (target, propertyKeyOrSymbol) => {\n const config = initialiseConfig(target, propertyKeyOrSymbol);\n config.setters.push(setTransform);\n if (getTransform) {\n config.getters.unshift(getTransform);\n }\n if (configMetadata) {\n Object.assign(config, configMetadata);\n }\n };\n}\nfunction addObserverToInstanceProperty(setObserver) {\n return (target, propertyKeyOrSymbol) => {\n initialiseConfig(target, propertyKeyOrSymbol).observers.push(setObserver);\n };\n}\nfunction isDecoratedObject(target) {\n return typeof target !== \"undefined\" && CONFIG_KEY in target;\n}\nfunction listDecoratedProperties(target) {\n const targets = /* @__PURE__ */new Set();\n while (isDecoratedObject(target)) {\n targets.add(target == null ? void 0 : target[CONFIG_KEY]);\n target = Object.getPrototypeOf(target);\n }\n return Array.from(targets).flatMap(configMap => Object.keys(configMap));\n}\nfunction extractDecoratedProperties(target) {\n return listDecoratedProperties(target).reduce((result, key) => {\n var _a;\n result[key] = (_a = target[key]) != null ? _a : null;\n return result;\n }, {});\n}\nfunction extractDecoratedPropertyMetadata(target, propertyKeyOrSymbol) {\n const propertyKey = propertyKeyOrSymbol.toString();\n while (isDecoratedObject(target)) {\n const config = target[CONFIG_KEY];\n if (Object.hasOwn(config, propertyKey)) {\n return config[propertyKey];\n }\n target = Object.getPrototypeOf(target);\n }\n}\n\n// packages/ag-charts-community/src/util/type-guards.ts\nfunction isDefined(val) {\n return val != null;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isBoolean(value) {\n return typeof value === \"boolean\";\n}\nfunction isDate(value) {\n return value instanceof Date;\n}\nfunction isValidDate(value) {\n return isDate(value) && !isNaN(Number(value));\n}\nfunction isRegExp(value) {\n return value instanceof RegExp;\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null && !isArray(value);\n}\nfunction isObjectLike(value) {\n return isArray(value) || isPlainObject(value);\n}\nfunction isPlainObject(value) {\n return typeof value === \"object\" && value !== null && value.constructor === Object;\n}\nfunction isString(value) {\n return typeof value === \"string\";\n}\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\nfunction isFiniteNumber(value) {\n return isNumber(value) && Number.isFinite(value);\n}\nfunction isHtmlElement(value) {\n return typeof window !== \"undefined\" && value instanceof HTMLElement;\n}\nfunction isEnumKey(enumObject, enumKey) {\n return isString(enumKey) && Object.keys(enumObject).includes(enumKey);\n}\nfunction isEnumValue(enumObject, enumValue) {\n return Object.values(enumObject).includes(enumValue);\n}\nfunction isSymbol(value) {\n return typeof value === \"symbol\";\n}\n\n// packages/ag-charts-community/src/util/object.ts\nfunction deepMerge(...sources) {\n return mergeDefaults(...sources.reverse());\n}\nfunction mergeDefaults(...sources) {\n var _a;\n const target = {};\n for (const source of sources) {\n if (!isObject(source)) continue;\n const keys = isDecoratedObject(source) ? listDecoratedProperties(source) : Object.keys(source);\n for (const key of keys) {\n if (isPlainObject(target[key]) && isPlainObject(source[key])) {\n target[key] = mergeDefaults(target[key], source[key]);\n } else {\n (_a = target[key]) != null ? _a : target[key] = source[key];\n }\n }\n }\n return target;\n}\nfunction mergeArrayDefaults(dataArray, ...itemDefaults) {\n if (itemDefaults && isArray(dataArray)) {\n return dataArray.map(item => mergeDefaults(item, ...itemDefaults));\n }\n return dataArray;\n}\nfunction mapValues(object, mapper) {\n return Object.entries(object).reduce((result, [key, value]) => {\n result[key] = mapper(value, key, object);\n return result;\n }, {});\n}\nfunction without(object, keys) {\n const clone = __spreadValues({}, object);\n for (const key of keys) {\n delete clone[key];\n }\n return clone;\n}\nfunction getPath(object, path) {\n const pathArray = isArray(path) ? path : path.split(\".\");\n return pathArray.reduce((value, pathKey) => value[pathKey], object);\n}\nvar SKIP_JS_BUILTINS = /* @__PURE__ */new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nfunction setPath(object, path, newValue) {\n const pathArray = isArray(path) ? path.slice() : path.split(\".\");\n const lastKey = pathArray.pop();\n if (pathArray.some(p => SKIP_JS_BUILTINS.has(p))) return;\n const lastObject = pathArray.reduce((value, pathKey) => value[pathKey], object);\n lastObject[lastKey] = newValue;\n}\nfunction partialAssign(keysToCopy, target, source) {\n if (source === void 0) {\n return target;\n }\n for (const key of keysToCopy) {\n const value = source[key];\n if (value !== void 0) {\n target[key] = value;\n }\n }\n return target;\n}\n\n// packages/ag-charts-community/src/chart/factory/chartTypes.ts\nvar ChartTypes = class extends Map {\n get(seriesType) {\n var _a;\n return (_a = super.get(seriesType)) != null ? _a : \"unknown\";\n }\n isCartesian(seriesType) {\n return this.get(seriesType) === \"cartesian\";\n }\n isPolar(seriesType) {\n return this.get(seriesType) === \"polar\";\n }\n isHierarchy(seriesType) {\n return this.get(seriesType) === \"hierarchy\";\n }\n isTopology(seriesType) {\n return this.get(seriesType) === \"topology\";\n }\n get seriesTypes() {\n return Array.from(this.keys());\n }\n get cartesianTypes() {\n return this.seriesTypes.filter(t => this.isCartesian(t));\n }\n get polarTypes() {\n return this.seriesTypes.filter(t => this.isPolar(t));\n }\n get hierarchyTypes() {\n return this.seriesTypes.filter(t => this.isHierarchy(t));\n }\n get topologyTypes() {\n return this.seriesTypes.filter(t => this.isTopology(t));\n }\n};\nvar ChartDefaults = class extends Map {\n set(chartType2, defaults) {\n return super.set(chartType2, mergeDefaults(defaults, this.get(chartType2)));\n }\n};\nvar chartTypes = new ChartTypes();\nvar publicChartTypes = new ChartTypes();\nvar chartDefaults = new ChartDefaults();\n\n// packages/ag-charts-community/src/chart/factory/expectedEnterpriseModules.ts\nvar EXPECTED_ENTERPRISE_MODULES = [{\n type: \"root\",\n optionsKey: \"animation\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"]\n}, {\n type: \"root\",\n optionsKey: \"annotations\",\n chartTypes: [\"cartesian\"]\n}, {\n type: \"root\",\n optionsKey: \"background\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"],\n optionsInnerKey: \"image\"\n}, {\n type: \"root\",\n optionsKey: \"contextMenu\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"]\n}, {\n type: \"root\",\n optionsKey: \"dataSource\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"]\n}, {\n type: \"root\",\n optionsKey: \"sync\",\n chartTypes: [\"cartesian\"]\n}, {\n type: \"root\",\n optionsKey: \"zoom\",\n chartTypes: [\"cartesian\", \"topology\"]\n}, {\n type: \"legend\",\n optionsKey: \"gradientLegend\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"],\n identifier: \"gradient\"\n}, {\n type: \"root\",\n optionsKey: \"navigator\",\n chartTypes: [\"cartesian\"],\n optionsInnerKey: \"miniChart\"\n}, {\n type: \"axis\",\n optionsKey: \"axes[]\",\n chartTypes: [\"polar\"],\n identifier: \"angle-category\"\n}, {\n type: \"axis\",\n optionsKey: \"axes[]\",\n chartTypes: [\"polar\"],\n identifier: \"angle-number\"\n}, {\n type: \"axis\",\n optionsKey: \"axes[]\",\n chartTypes: [\"polar\"],\n identifier: \"radius-category\"\n}, {\n type: \"axis\",\n optionsKey: \"axes[]\",\n chartTypes: [\"polar\"],\n identifier: \"radius-number\"\n}, {\n type: \"axis\",\n optionsKey: \"axes[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"ordinal-time\"\n}, {\n type: \"axis-option\",\n optionsKey: \"crosshair\",\n chartTypes: [\"cartesian\"]\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"box-plot\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"candlestick\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"ohlc\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"bullet\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"heatmap\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"range-area\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"range-bar\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"cartesian\"],\n identifier: \"waterfall\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"polar\"],\n identifier: \"nightingale\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"polar\"],\n identifier: \"radar-area\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"polar\"],\n identifier: \"radar-line\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"polar\"],\n identifier: \"radial-bar\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"polar\"],\n identifier: \"radial-column\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"hierarchy\"],\n identifier: \"sunburst\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"hierarchy\"],\n identifier: \"treemap\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"topology\"],\n identifier: \"map-shape\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"topology\"],\n identifier: \"map-line\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"topology\"],\n identifier: \"map-marker\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"topology\"],\n identifier: \"map-shape-background\"\n}, {\n type: \"series\",\n optionsKey: \"series[]\",\n chartTypes: [\"topology\"],\n identifier: \"map-line-background\"\n}, {\n type: \"series-option\",\n optionsKey: \"errorBar\",\n chartTypes: [\"cartesian\"],\n identifier: \"error-bars\"\n}];\nfunction isEnterpriseSeriesType(type) {\n return EXPECTED_ENTERPRISE_MODULES.some(s => s.type === \"series\" && s.identifier === type);\n}\nfunction getEnterpriseSeriesChartTypes(type) {\n var _a;\n return (_a = EXPECTED_ENTERPRISE_MODULES.find(s => s.type === \"series\" && s.identifier === type)) == null ? void 0 : _a.chartTypes;\n}\nfunction isEnterpriseCartesian(seriesType) {\n var _a;\n const type = (_a = getEnterpriseSeriesChartTypes(seriesType)) == null ? void 0 : _a.find(v => v === \"cartesian\");\n return type === \"cartesian\";\n}\nfunction isEnterprisePolar(seriesType) {\n var _a;\n const type = (_a = getEnterpriseSeriesChartTypes(seriesType)) == null ? void 0 : _a.find(v => v === \"polar\");\n return type === \"polar\";\n}\nfunction isEnterpriseHierarchy(seriesType) {\n var _a;\n const type = (_a = getEnterpriseSeriesChartTypes(seriesType)) == null ? void 0 : _a.find(v => v === \"hierarchy\");\n return type === \"hierarchy\";\n}\nfunction isEnterpriseTopology(seriesType) {\n var _a;\n const type = (_a = getEnterpriseSeriesChartTypes(seriesType)) == null ? void 0 : _a.find(v => v === \"topology\");\n return type === \"topology\";\n}\nfunction isEnterpriseModule(module) {\n return module.packageType === \"enterprise\";\n}\nfunction verifyIfModuleExpected(module) {\n var _a;\n if (!isEnterpriseModule(module)) {\n throw new Error(\"AG Charts - internal configuration error, only enterprise modules need verification.\");\n }\n const stub = EXPECTED_ENTERPRISE_MODULES.find(s => {\n return s.type === module.type && s.optionsKey === module.optionsKey && s.identifier === module.identifier && module.chartTypes.every(t => s.chartTypes.includes(t));\n });\n if (stub) {\n (_a = stub.useCount) != null ? _a : stub.useCount = 0;\n stub.useCount++;\n }\n return stub != null;\n}\nfunction getUnusedExpectedModules() {\n return EXPECTED_ENTERPRISE_MODULES.filter(({\n useCount\n }) => useCount == null || useCount === 0);\n}\n\n// packages/ag-charts-community/src/chart/mapping/types.ts\nfunction optionsType(input) {\n var _a, _b, _c;\n return (_c = (_b = (_a = input.series) == null ? void 0 : _a[0]) == null ? void 0 : _b.type) != null ? _c : \"line\";\n}\nfunction isAgCartesianChartOptions(input) {\n const specifiedType = optionsType(input);\n if (specifiedType == null) {\n return true;\n }\n if (specifiedType === \"cartesian\") {\n Logger.warnOnce(`type '${specifiedType}' is deprecated, use a series type instead`);\n return true;\n }\n return chartTypes.isCartesian(specifiedType) || isEnterpriseCartesian(specifiedType);\n}\nfunction isAgPolarChartOptions(input) {\n const specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === \"polar\") {\n Logger.warnOnce(`type '${specifiedType}' is deprecated, use a series type instead`);\n return true;\n }\n return chartTypes.isPolar(specifiedType) || isEnterprisePolar(specifiedType);\n}\nfunction isAgHierarchyChartOptions(input) {\n const specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === \"hierarchy\") {\n Logger.warnOnce(`type '${specifiedType}' is deprecated, use a series type instead`);\n return true;\n }\n return chartTypes.isHierarchy(specifiedType) || isEnterpriseHierarchy(specifiedType);\n}\nfunction isAgTopologyChartOptions(input) {\n const specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n if (specifiedType === \"topology\") {\n Logger.warnOnce(`type '${specifiedType}' is deprecated, use a series type instead`);\n return true;\n }\n return chartTypes.isTopology(specifiedType) || isEnterpriseTopology(specifiedType);\n}\nfunction isAgPolarChartOptionsWithSeriesBasedLegend(input) {\n const specifiedType = optionsType(input);\n return isAgPolarChartOptions(input) && specifiedType !== \"pie\" && specifiedType !== \"donut\";\n}\nfunction isSeriesOptionType(input) {\n if (input == null) {\n return false;\n }\n return chartTypes.has(input);\n}\nfunction isAxisOptionType(input) {\n if (input == null) {\n return false;\n }\n return axisRegistry.has(input);\n}\n\n// packages/ag-charts-community/src/chart/factory/processEnterpriseOptions.ts\nfunction removeUsedEnterpriseOptions(options) {\n var _a, _b, _c, _d;\n const usedOptions = [];\n const optionsChartType = chartTypes.get(optionsType(options));\n for (const {\n type,\n chartTypes: moduleChartTypes,\n optionsKey,\n optionsInnerKey,\n identifier\n } of EXPECTED_ENTERPRISE_MODULES) {\n if (optionsChartType !== \"unknown\" && !moduleChartTypes.includes(optionsChartType)) continue;\n if (type === \"root\" || type === \"legend\") {\n const optionValue = options[optionsKey];\n if (optionValue == null) continue;\n if (!optionsInnerKey) {\n usedOptions.push(optionsKey);\n delete options[optionsKey];\n } else if (optionValue[optionsInnerKey]) {\n usedOptions.push(`${optionsKey}.${optionsInnerKey}`);\n delete optionValue[optionsInnerKey];\n }\n } else if (type === \"axis\") {\n if (!(\"axes\" in options) || !((_a = options.axes) == null ? void 0 : _a.some(axis => axis.type === identifier))) continue;\n usedOptions.push(`axis[type=${identifier}]`);\n options.axes = options.axes.filter(axis => axis.type !== identifier);\n } else if (type === \"axis-option\") {\n if (!(\"axes\" in options) || !((_b = options.axes) == null ? void 0 : _b.some(axis => axis[optionsKey]))) continue;\n usedOptions.push(`axis.${optionsKey}`);\n options.axes.forEach(axis => {\n if (axis[optionsKey]) {\n delete axis[optionsKey];\n }\n });\n } else if (type === \"series\") {\n if (!((_c = options.series) == null ? void 0 : _c.some(series => series.type === identifier))) continue;\n usedOptions.push(`series[type=${identifier}]`);\n options.series = options.series.filter(series => series.type !== identifier);\n } else if (type === \"series-option\") {\n if (!((_d = options.series) == null ? void 0 : _d.some(series => series[optionsKey]))) continue;\n usedOptions.push(`series.${optionsKey}`);\n options.series.forEach(series => {\n if (series[optionsKey]) {\n delete series[optionsKey];\n }\n });\n }\n }\n if (usedOptions.length) {\n let enterprisePackageName = \"ag-charts-enterprise\";\n let enterpriseReferenceUrl = \"https://charts.ag-grid.com/javascript/installation/\";\n if (options.mode === \"integrated\") {\n enterprisePackageName = \"ag-grid-charts-enterprise' or 'ag-grid-enterprise/charts-enterprise\";\n enterpriseReferenceUrl = \"https://www.ag-grid.com/javascript-data-grid/integrated-charts-installation/\";\n }\n Logger.warnOnce([`unable to use these enterprise features as '${enterprisePackageName}' has not been loaded:`, \"\", ...usedOptions, \"\", `See: ${enterpriseReferenceUrl}`].join(\"\\n\"));\n }\n}\n\n// packages/ag-charts-community/src/util/properties.ts\nvar BaseProperties = class {\n set(properties) {\n const {\n className = this.constructor.name\n } = this.constructor;\n if (typeof properties !== \"object\") {\n Logger.warn(`unable to set ${className} - expecting a properties object`);\n return this;\n }\n const keys = new Set(Object.keys(properties));\n for (const propertyKey of listDecoratedProperties(this)) {\n if (keys.has(propertyKey)) {\n const value = properties[propertyKey];\n const self = this;\n if (isProperties(self[propertyKey])) {\n self[propertyKey] = self[propertyKey] instanceof PropertiesArray ? self[propertyKey].reset(value) : self[propertyKey].set(value);\n } else {\n self[propertyKey] = value;\n }\n keys.delete(propertyKey);\n }\n }\n for (const unknownKey of keys) {\n Logger.warn(`unable to set [${unknownKey}] in ${className} - property is unknown`);\n }\n return this;\n }\n isValid() {\n return listDecoratedProperties(this).every(propertyKey => {\n const {\n optional\n } = extractDecoratedPropertyMetadata(this, propertyKey);\n const valid = optional || typeof this[propertyKey] !== \"undefined\";\n if (!valid) {\n Logger.warnOnce(`[${propertyKey}] is required.`);\n }\n return valid;\n });\n }\n toJson() {\n return listDecoratedProperties(this).reduce((object, propertyKey) => {\n const propertyValue = this[propertyKey];\n object[propertyKey] = isProperties(propertyValue) ? propertyValue.toJson() : propertyValue;\n return object;\n }, {});\n }\n};\nvar PropertiesArray = class _PropertiesArray extends Array {\n constructor(itemFactory, ...properties) {\n super(properties.length);\n Object.defineProperty(this, \"itemFactory\", {\n value: itemFactory,\n enumerable: false,\n configurable: false\n });\n this.set(properties);\n }\n set(properties) {\n if (isArray(properties)) {\n this.length = properties.length;\n for (let i = 0; i < properties.length; i++) {\n this[i] = new this.itemFactory().set(properties[i]);\n }\n }\n return this;\n }\n reset(properties) {\n return new _PropertiesArray(this.itemFactory, ...properties);\n }\n toJson() {\n return this.map(value => {\n var _a, _b;\n return (_b = (_a = value == null ? void 0 : value.toJson) == null ? void 0 : _a.call(value)) != null ? _b : value;\n });\n }\n};\nfunction isProperties(value) {\n return value instanceof BaseProperties || value instanceof PropertiesArray;\n}\n\n// packages/ag-charts-community/src/util/json.ts\nvar CLASS_INSTANCE_TYPE = \"class-instance\";\nfunction jsonDiff(source, target, skip) {\n if (isArray(target)) {\n if (!isArray(source) || source.length !== target.length || target.some((v, i) => jsonDiff(source[i], v) != null)) {\n return target;\n }\n } else if (isPlainObject(target)) {\n if (!isPlainObject(source)) {\n return target;\n }\n const result = {};\n const allKeys = /* @__PURE__ */new Set([...Object.keys(source), ...Object.keys(target)]);\n for (const key of allKeys) {\n if (source[key] === target[key] || (skip == null ? void 0 : skip.includes(key))) {\n continue;\n }\n if (typeof source[key] === typeof target[key]) {\n const diff2 = jsonDiff(source[key], target[key]);\n if (diff2 !== null) {\n result[key] = diff2;\n }\n } else {\n result[key] = target[key];\n }\n }\n return Object.keys(result).length ? result : null;\n } else if (source !== target) {\n return target;\n }\n return null;\n}\nfunction deepClone(source, options) {\n if (isArray(source)) {\n return source.map(item => deepClone(item, options));\n }\n if (isPlainObject(source)) {\n return mapValues(source, (value, key) => {\n var _a;\n return ((_a = options == null ? void 0 : options.shallow) == null ? void 0 : _a.includes(key)) ? shallowClone(value) : deepClone(value, options);\n });\n }\n return shallowClone(source);\n}\nfunction shallowClone(source) {\n if (isArray(source)) {\n return [...source];\n }\n if (isPlainObject(source)) {\n return __spreadValues({}, source);\n }\n if (isDate(source)) {\n return new Date(source);\n }\n if (isRegExp(source)) {\n return new RegExp(source.source, source.flags);\n }\n return source;\n}\nfunction jsonWalk(json, visit, opts, ...jsons) {\n var _a;\n if (isArray(json)) {\n visit(json, ...jsons);\n json.forEach((node, index) => {\n jsonWalk(node, visit, opts, ...keyMapper(jsons, index));\n });\n } else if (isPlainObject(json)) {\n visit(json, ...jsons);\n for (const key of Object.keys(json)) {\n if ((_a = opts == null ? void 0 : opts.skip) == null ? void 0 : _a.includes(key)) {\n continue;\n }\n const value = json[key];\n if (isArray(value) || isPlainObject(value)) {\n jsonWalk(value, visit, opts, ...keyMapper(jsons, key));\n }\n }\n }\n}\nfunction jsonApply(target, source, params = {}) {\n const {\n path,\n constructedArrays,\n matcherPath = path == null ? void 0 : path.replace(/(\\[[0-9+]+])/i, \"[]\"),\n skip = []\n } = params;\n if (target == null) {\n throw new Error(`AG Charts - target is uninitialised: ${path != null ? path : \"\"}`);\n }\n if (source == null) {\n return target;\n }\n if (isProperties(target)) {\n return target.set(source);\n }\n const targetAny = target;\n const targetType = classify(target);\n for (const property in source) {\n if (SKIP_JS_BUILTINS.has(property)) continue;\n const propertyMatcherPath = `${matcherPath ? matcherPath + \".\" : \"\"}${property}`;\n if (skip.includes(propertyMatcherPath)) continue;\n const newValue = source[property];\n const propertyPath = `${path ? path + \".\" : \"\"}${property}`;\n const targetClass = targetAny.constructor;\n const currentValue = targetAny[property];\n let ctr;\n try {\n const currentValueType = classify(currentValue);\n const newValueType = classify(newValue);\n if (targetType === CLASS_INSTANCE_TYPE && !(property in target)) {\n Logger.warn(`unable to set [${propertyPath}] in ${targetClass == null ? void 0 : targetClass.name} - property is unknown`);\n continue;\n }\n if (currentValueType != null && newValueType != null && newValueType !== currentValueType && (currentValueType !== CLASS_INSTANCE_TYPE || newValueType !== \"object\")) {\n Logger.warn(`unable to set [${propertyPath}] in ${targetClass == null ? void 0 : targetClass.name} - can't apply type of [${newValueType}], allowed types are: [${currentValueType}]`);\n continue;\n }\n if (isProperties(currentValue)) {\n targetAny[property].set(newValue);\n } else if (newValueType === \"array\") {\n ctr != null ? ctr : ctr = constructedArrays == null ? void 0 : constructedArrays.get(currentValue);\n if (ctr == null) {\n targetAny[property] = newValue;\n } else {\n const newValueArray = newValue;\n targetAny[property] = newValueArray.map(v => jsonApply(new ctr(), v, __spreadProps(__spreadValues({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath + \"[]\"\n })));\n }\n } else if (newValueType === CLASS_INSTANCE_TYPE) {\n targetAny[property] = newValue;\n } else if (newValueType === \"object\") {\n if (currentValue != null) {\n jsonApply(currentValue, newValue, __spreadProps(__spreadValues({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath\n }));\n } else if (ctr == null) {\n targetAny[property] = {};\n jsonApply(targetAny[property], newValue, __spreadProps(__spreadValues({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath\n }));\n } else {\n targetAny[property] = jsonApply(new ctr(), newValue, __spreadProps(__spreadValues({}, params), {\n path: propertyPath,\n matcherPath: propertyMatcherPath\n }));\n }\n } else {\n targetAny[property] = newValue;\n }\n } catch (error) {\n Logger.warn(`unable to set [${propertyPath}] in [${targetClass == null ? void 0 : targetClass.name}]; nested error is: ${error.message}`);\n }\n }\n return target;\n}\nfunction keyMapper(data, key) {\n return data.map(dataObject => dataObject == null ? void 0 : dataObject[key]);\n}\nfunction classify(value) {\n if (value == null) {\n return null;\n }\n if (isHtmlElement(value) || isDate(value)) {\n return \"primitive\";\n }\n if (isArray(value)) {\n return \"array\";\n }\n if (isObject(value)) {\n return isPlainObject(value) ? \"object\" : CLASS_INSTANCE_TYPE;\n }\n if (isFunction(value)) {\n return \"function\";\n }\n return \"primitive\";\n}\n\n// packages/ag-charts-community/src/chart/factory/seriesRegistry.ts\nvar SeriesRegistry = class {\n constructor() {\n this.seriesMap = /* @__PURE__ */new Map();\n this.themeTemplates = /* @__PURE__ */new Map();\n }\n register(seriesType, {\n chartTypes: [chartType2],\n instanceConstructor,\n defaultAxes,\n themeTemplate,\n enterpriseThemeTemplate,\n paletteFactory,\n solo,\n stackable,\n groupable,\n stackedByDefault,\n swapDefaultAxesCondition,\n hidden\n }) {\n this.setThemeTemplate(seriesType, themeTemplate, enterpriseThemeTemplate);\n this.seriesMap.set(seriesType, {\n instanceConstructor,\n defaultAxes,\n paletteFactory,\n solo,\n stackable,\n groupable,\n stackedByDefault,\n swapDefaultAxesCondition\n });\n chartTypes.set(seriesType, chartType2);\n if (!hidden) {\n publicChartTypes.set(seriesType, chartType2);\n }\n }\n create(seriesType, moduleContext) {\n var _a;\n const SeriesConstructor = (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.instanceConstructor;\n if (SeriesConstructor) {\n return new SeriesConstructor(moduleContext);\n }\n throw new Error(`AG Charts - unknown series type: ${seriesType}`);\n }\n cloneDefaultAxes(seriesType) {\n var _a;\n const defaultAxes = (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.defaultAxes;\n return defaultAxes ? {\n axes: deepClone(defaultAxes)\n } : null;\n }\n setThemeTemplate(seriesType, themeTemplate, enterpriseThemeTemplate = {}) {\n const currentTemplate = this.themeTemplates.get(seriesType);\n this.themeTemplates.set(seriesType, {\n community: mergeDefaults(themeTemplate, currentTemplate == null ? void 0 : currentTemplate.community),\n enterprise: mergeDefaults(enterpriseThemeTemplate, themeTemplate, currentTemplate == null ? void 0 : currentTemplate.community)\n });\n }\n getThemeTemplate(seriesType) {\n const themeTemplate = this.themeTemplates.get(seriesType);\n return enterpriseModule.isEnterprise ? themeTemplate == null ? void 0 : themeTemplate.enterprise : themeTemplate == null ? void 0 : themeTemplate.community;\n }\n getPaletteFactory(seriesType) {\n var _a;\n return (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.paletteFactory;\n }\n isSolo(seriesType) {\n var _a, _b;\n return (_b = (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.solo) != null ? _b : false;\n }\n isGroupable(seriesType) {\n var _a, _b;\n return (_b = (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.groupable) != null ? _b : false;\n }\n isStackable(seriesType) {\n var _a, _b;\n return (_b = (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.stackable) != null ? _b : false;\n }\n isStackedByDefault(seriesType) {\n var _a, _b;\n return (_b = (_a = this.seriesMap.get(seriesType)) == null ? void 0 : _a.stackedByDefault) != null ? _b : false;\n }\n isDefaultAxisSwapNeeded(options) {\n var _a, _b, _c;\n let result;\n for (const series of (_a = options.series) != null ? _a : []) {\n const {\n type = \"line\"\n } = series;\n const isDefaultAxisSwapped = (_c = (_b = this.seriesMap.get(type)) == null ? void 0 : _b.swapDefaultAxesCondition) == null ? void 0 : _c.call(_b, series);\n if (isDefaultAxisSwapped != null) {\n if (result != null && result != isDefaultAxisSwapped) {\n throw new Error(\"AG Charts - The provided series have incompatible directions\");\n }\n result = isDefaultAxisSwapped;\n }\n }\n return result;\n }\n};\nvar seriesRegistry = new SeriesRegistry();\n\n// packages/ag-charts-community/src/chart/factory/legendRegistry.ts\nvar LegendRegistry = class {\n constructor() {\n this.legendMap = /* @__PURE__ */new Map();\n this.themeTemplates = /* @__PURE__ */new Map();\n }\n register(legendType, {\n optionsKey,\n instanceConstructor,\n themeTemplate\n }) {\n this.legendMap.set(legendType, {\n optionsKey,\n instanceConstructor\n });\n this.themeTemplates.set(optionsKey, themeTemplate);\n }\n create(legendType, moduleContext) {\n var _a;\n const LegendConstructor = (_a = this.legendMap.get(legendType)) == null ? void 0 : _a.instanceConstructor;\n if (LegendConstructor) {\n return new LegendConstructor(moduleContext);\n }\n throw new Error(`AG Charts - unknown legend type: ${legendType}`);\n }\n getThemeTemplates() {\n return Object.fromEntries(this.themeTemplates);\n }\n getKeys() {\n return Array.from(this.legendMap.entries()).reduce((result, [legendType, record]) => {\n result[legendType] = record.optionsKey;\n return result;\n }, {});\n }\n};\nvar legendRegistry = new LegendRegistry();\n\n// packages/ag-charts-community/src/chart/themes/constants.ts\nvar FONT_SIZE = /* @__PURE__ */(FONT_SIZE2 => {\n FONT_SIZE2[FONT_SIZE2[\"SMALL\"] = 12] = \"SMALL\";\n FONT_SIZE2[FONT_SIZE2[\"MEDIUM\"] = 13] = \"MEDIUM\";\n FONT_SIZE2[FONT_SIZE2[\"LARGE\"] = 17] = \"LARGE\";\n return FONT_SIZE2;\n})(FONT_SIZE || {});\nvar FONT_WEIGHT = /* @__PURE__ */(FONT_WEIGHT3 => {\n FONT_WEIGHT3[\"NORMAL\"] = \"normal\";\n FONT_WEIGHT3[\"BOLD\"] = \"bold\";\n FONT_WEIGHT3[\"BOLDER\"] = \"bolder\";\n FONT_WEIGHT3[\"LIGHTER\"] = \"lighter\";\n return FONT_WEIGHT3;\n})(FONT_WEIGHT || {});\nvar POSITION = /* @__PURE__ */(POSITION3 => {\n POSITION3[\"TOP\"] = \"top\";\n POSITION3[\"RIGHT\"] = \"right\";\n POSITION3[\"BOTTOM\"] = \"bottom\";\n POSITION3[\"LEFT\"] = \"left\";\n return POSITION3;\n})(POSITION || {});\nvar CARTESIAN_AXIS_TYPE = /* @__PURE__ */(CARTESIAN_AXIS_TYPE2 => {\n CARTESIAN_AXIS_TYPE2[\"CATEGORY\"] = \"category\";\n CARTESIAN_AXIS_TYPE2[\"ORDINAL_TIME\"] = \"ordinal-time\";\n CARTESIAN_AXIS_TYPE2[\"NUMBER\"] = \"number\";\n CARTESIAN_AXIS_TYPE2[\"TIME\"] = \"time\";\n CARTESIAN_AXIS_TYPE2[\"LOG\"] = \"log\";\n return CARTESIAN_AXIS_TYPE2;\n})(CARTESIAN_AXIS_TYPE || {});\nvar POLAR_AXIS_TYPE = /* @__PURE__ */(POLAR_AXIS_TYPE2 => {\n POLAR_AXIS_TYPE2[\"ANGLE_CATEGORY\"] = \"angle-category\";\n POLAR_AXIS_TYPE2[\"ANGLE_NUMBER\"] = \"angle-number\";\n POLAR_AXIS_TYPE2[\"RADIUS_CATEGORY\"] = \"radius-category\";\n POLAR_AXIS_TYPE2[\"RADIUS_NUMBER\"] = \"radius-number\";\n return POLAR_AXIS_TYPE2;\n})(POLAR_AXIS_TYPE || {});\nvar POLAR_AXIS_SHAPE = /* @__PURE__ */(POLAR_AXIS_SHAPE2 => {\n POLAR_AXIS_SHAPE2[\"CIRCLE\"] = \"circle\";\n POLAR_AXIS_SHAPE2[\"POLYGON\"] = \"polygon\";\n return POLAR_AXIS_SHAPE2;\n})(POLAR_AXIS_SHAPE || {});\n\n// packages/ag-charts-community/src/chart/themes/defaultColors.ts\nvar DEFAULT_FILLS = {\n BLUE: \"#5090dc\",\n ORANGE: \"#ffa03a\",\n GREEN: \"#459d55\",\n CYAN: \"#34bfe1\",\n YELLOW: \"#e1cc00\",\n VIOLET: \"#9669cb\",\n GRAY: \"#b5b5b5\",\n MAGENTA: \"#bd5aa7\",\n BROWN: \"#8a6224\",\n RED: \"#ef5452\"\n};\nvar DEFAULT_STROKES = {\n BLUE: \"#2b5c95\",\n ORANGE: \"#cc6f10\",\n GREEN: \"#1e652e\",\n CYAN: \"#18859e\",\n YELLOW: \"#a69400\",\n VIOLET: \"#603c88\",\n GRAY: \"#575757\",\n MAGENTA: \"#7d2f6d\",\n BROWN: \"#4f3508\",\n RED: \"#a82529\"\n};\n\n// packages/ag-charts-community/src/chart/themes/symbols.ts\nvar IS_DARK_THEME = Symbol(\"is-dark-theme\");\nvar EXTENDS_AXES_DEFAULTS = Symbol(\"extends-axes-defaults\");\nvar EXTENDS_AXES_LINE_DEFAULTS = Symbol(\"extends-axes-line-defaults\");\nvar EXTENDS_AXES_TICK_DEFAULTS = Symbol(\"extends-axes-tick-defaults\");\nvar EXTENDS_AXES_GRID_LINE_DEFAULTS = Symbol(\"extends-axes-grid-line-defaults\");\nvar EXTENDS_SERIES_DEFAULTS = Symbol(\"extends-series-defaults\");\nvar EXTENDS_CARTESIAN_MARKER_DEFAULTS = Symbol(\"extends-cartesian-marker-defaults\");\nvar DEFAULT_FONT_FAMILY = Symbol(\"default-font\");\nvar DEFAULT_LABEL_COLOUR = Symbol(\"default-label-colour\");\nvar DEFAULT_INVERTED_LABEL_COLOUR = Symbol(\"default-inverted-label-colour\");\nvar DEFAULT_INSIDE_SERIES_LABEL_COLOUR = Symbol(\"default-inside-series-label-colour\");\nvar DEFAULT_MUTED_LABEL_COLOUR = Symbol(\"default-muted-label-colour\");\nvar DEFAULT_AXIS_GRID_COLOUR = Symbol(\"default-axis-grid-colour\");\nvar DEFAULT_AXIS_LINE_COLOUR = Symbol(\"default-axis-line-colour\");\nvar DEFAULT_CROSS_LINES_COLOUR = Symbol(\"default-cross-lines-colour\");\nvar DEFAULT_BACKGROUND_COLOUR = Symbol(\"default-background-colour\");\nvar DEFAULT_SHADOW_COLOUR = Symbol(\"default-shadow-colour\");\nvar DEFAULT_COLOURS = Symbol(\"default-colours\");\nvar DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS = Symbol(\"default-waterfall-series-positive-colors\");\nvar DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS = Symbol(\"default-waterfall-series-negative-colors\");\nvar DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS = Symbol(\"default-waterfall-series-total-colors\");\nvar DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE = Symbol(\"default-waterfall-series-connector-line-stroke\");\nvar DEFAULT_POLAR_SERIES_STROKE = Symbol(\"default-polar-series-stroke\");\nvar DEFAULT_DIVERGING_SERIES_COLOUR_RANGE = Symbol(\"default-diverging-series-colour-range\");\nvar DEFAULT_HIERARCHY_FILLS = Symbol(\"default-hierarchy-fills\");\nvar DEFAULT_HIERARCHY_STROKES = Symbol(\"default-hierarchy-strokes\");\nvar DEFAULT_ANNOTATION_STROKE = Symbol(\"default-annotation-stroke\");\nvar DEFAULT_ANNOTATION_BACKGROUND_FILL = Symbol(\"default-annotation-background-fill\");\nvar DEFAULT_ANNOTATION_HANDLE_FILL = Symbol(\"default-annotation-handle-fill\");\n\n// packages/ag-charts-community/src/chart/themes/chartTheme.ts\nvar DEFAULT_BACKGROUND_FILL = \"white\";\nvar DEFAULT_PALETTE = {\n fills: Object.values(DEFAULT_FILLS),\n strokes: Object.values(DEFAULT_STROKES)\n};\nvar CHART_TYPE_CONFIG = {\n get cartesian() {\n return {\n seriesTypes: chartTypes.cartesianTypes,\n commonOptions: [\"zoom\", \"navigator\"]\n };\n },\n get polar() {\n return {\n seriesTypes: chartTypes.polarTypes,\n commonOptions: []\n };\n },\n get hierarchy() {\n return {\n seriesTypes: chartTypes.hierarchyTypes,\n commonOptions: []\n };\n },\n get topology() {\n return {\n seriesTypes: chartTypes.topologyTypes,\n commonOptions: []\n };\n }\n};\nvar CHART_TYPE_SPECIFIC_COMMON_OPTIONS = Object.values(CHART_TYPE_CONFIG).reduce((r, {\n commonOptions\n}) => r.concat(commonOptions), []);\nvar _ChartTheme = class _ChartTheme {\n getPalette() {\n return DEFAULT_PALETTE;\n }\n static getAxisDefaults(overrideDefaults) {\n return mergeDefaults(overrideDefaults, {\n title: {\n enabled: false,\n text: \"Axis Title\",\n spacing: 25,\n fontWeight: \"normal\" /* NORMAL */,\n fontSize: 13 /* MEDIUM */,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR\n },\n label: {\n fontSize: 12 /* SMALL */,\n fontFamily: DEFAULT_FONT_FAMILY,\n padding: 5,\n color: DEFAULT_LABEL_COLOUR,\n avoidCollisions: true\n },\n line: {\n enabled: true,\n width: 1,\n color: DEFAULT_AXIS_LINE_COLOUR\n },\n tick: {\n enabled: false,\n width: 1,\n color: DEFAULT_AXIS_LINE_COLOUR\n },\n gridLine: {\n enabled: true,\n style: [{\n stroke: DEFAULT_AXIS_GRID_COLOUR,\n lineDash: []\n }]\n },\n crossLines: {\n enabled: false,\n fill: DEFAULT_CROSS_LINES_COLOUR,\n stroke: DEFAULT_CROSS_LINES_COLOUR,\n fillOpacity: 0.1,\n strokeWidth: 1,\n label: {\n enabled: false,\n fontSize: 12 /* SMALL */,\n fontFamily: DEFAULT_FONT_FAMILY,\n padding: 5,\n color: DEFAULT_LABEL_COLOUR\n }\n }\n });\n }\n static getSeriesDefaults() {\n return {\n visible: true,\n showInLegend: true,\n highlightStyle: {\n item: {\n fill: \"#ffffff54\",\n stroke: `#0006`,\n strokeWidth: 2\n },\n series: {\n dimOpacity: 1\n }\n },\n nodeClickRange: \"exact\",\n tooltip: {\n enabled: true\n }\n };\n }\n static getCartesianSeriesMarkerDefaults() {\n return {\n enabled: true,\n shape: \"circle\",\n size: 7,\n strokeWidth: 1\n };\n }\n static getChartDefaults() {\n return {\n background: {\n visible: true,\n fill: DEFAULT_BACKGROUND_COLOUR\n },\n padding: {\n top: 20,\n right: 20,\n bottom: 20,\n left: 20\n },\n keyboard: {\n enabled: true\n },\n title: {\n enabled: false,\n text: \"Title\",\n fontWeight: \"normal\" /* NORMAL */,\n fontSize: 17 /* LARGE */,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR,\n wrapping: \"hyphenate\"\n },\n subtitle: {\n enabled: false,\n text: \"Subtitle\",\n spacing: 20,\n fontSize: 13 /* MEDIUM */,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_MUTED_LABEL_COLOUR,\n wrapping: \"hyphenate\"\n },\n footnote: {\n enabled: false,\n text: \"Footnote\",\n spacing: 20,\n fontSize: 13 /* MEDIUM */,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: \"rgb(140, 140, 140)\",\n wrapping: \"hyphenate\"\n },\n legend: {\n position: \"bottom\" /* BOTTOM */,\n spacing: 30,\n listeners: {},\n item: {\n paddingX: 16,\n paddingY: 8,\n marker: {\n size: 15,\n padding: 8\n },\n toggleSeriesVisible: true,\n label: {\n color: DEFAULT_LABEL_COLOUR,\n fontSize: 12 /* SMALL */,\n fontFamily: DEFAULT_FONT_FAMILY\n }\n },\n reverseOrder: false,\n pagination: {\n marker: {\n size: 12\n },\n activeStyle: {\n fill: DEFAULT_LABEL_COLOUR\n },\n inactiveStyle: {\n fill: DEFAULT_MUTED_LABEL_COLOUR\n },\n highlightStyle: {\n fill: DEFAULT_LABEL_COLOUR\n },\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n }\n },\n tooltip: {\n enabled: true,\n darkTheme: IS_DARK_THEME,\n range: \"nearest\",\n delay: 0\n },\n overlays: {\n loading: {\n darkTheme: IS_DARK_THEME\n },\n noData: {\n darkTheme: IS_DARK_THEME\n },\n noVisibleSeries: {\n darkTheme: IS_DARK_THEME\n }\n },\n listeners: {}\n };\n }\n constructor(options = {}) {\n const {\n overrides,\n palette: palette10\n } = deepClone(options);\n const defaults = this.createChartConfigPerChartType(this.getDefaults());\n if (overrides) {\n this.mergeOverrides(defaults, overrides);\n }\n this.config = Object.freeze(this.templateTheme(defaults));\n this.palette = mergeDefaults(palette10, this.getPalette());\n }\n mergeOverrides(defaults, overrides) {\n for (const {\n seriesTypes,\n commonOptions\n } of Object.values(CHART_TYPE_CONFIG)) {\n const cleanedCommon = __spreadValues({}, overrides.common);\n for (const commonKey of CHART_TYPE_SPECIFIC_COMMON_OPTIONS) {\n if (!commonOptions.includes(commonKey)) {\n delete cleanedCommon[commonKey];\n }\n }\n if (!cleanedCommon) continue;\n for (const s of seriesTypes) {\n const seriesType = s;\n defaults[seriesType] = mergeDefaults(cleanedCommon, defaults[seriesType]);\n }\n }\n chartTypes.seriesTypes.forEach(s => {\n const seriesType = s;\n if (overrides[seriesType]) {\n defaults[seriesType] = mergeDefaults(overrides[seriesType], defaults[seriesType]);\n }\n });\n }\n createChartConfigPerChartType(config) {\n for (const [nextType, {\n seriesTypes\n }] of Object.entries(CHART_TYPE_CONFIG)) {\n const typeDefaults = chartDefaults.get(nextType);\n for (const seriesType of seriesTypes) {\n config[seriesType] || (config[seriesType] = deepClone(typeDefaults));\n }\n }\n return config;\n }\n getDefaults() {\n const getOverridesByType = (chartType2, seriesTypes) => {\n var _a;\n const result = {};\n const chartTypeDefaults = __spreadValues(__spreadValues(__spreadValues({\n axes: {}\n }, legendRegistry.getThemeTemplates()), _ChartTheme.getChartDefaults()), chartDefaults.get(chartType2));\n for (const seriesType of seriesTypes) {\n result[seriesType] = mergeDefaults(seriesRegistry.getThemeTemplate(seriesType), (_a = result[seriesType]) != null ? _a : deepClone(chartTypeDefaults));\n const {\n axes\n } = result[seriesType];\n for (const axisType of axisRegistry.keys()) {\n axes[axisType] = mergeDefaults(axes[axisType], axisRegistry.getThemeTemplate(axisType), chartType2 === \"cartesian\" && _ChartTheme.cartesianAxisDefault[axisType]);\n }\n }\n return result;\n };\n return mergeDefaults(getOverridesByType(\"cartesian\", chartTypes.cartesianTypes), getOverridesByType(\"polar\", chartTypes.polarTypes), getOverridesByType(\"hierarchy\", chartTypes.hierarchyTypes), getOverridesByType(\"topology\", chartTypes.topologyTypes));\n }\n templateTheme(themeTemplate) {\n const themeInstance = deepClone(themeTemplate);\n const {\n extensions,\n properties\n } = this.getTemplateParameters();\n jsonWalk(themeInstance, node => {\n if (node[\"__extends__\"]) {\n const extendsValue = node[\"__extends__\"];\n const source = extensions.get(extendsValue);\n if (source == null) {\n throw new Error(`AG Charts - no template variable provided for: ${extendsValue}`);\n }\n Object.keys(source).forEach(key => {\n if (!(key in node)) {\n node[key] = source[key];\n } else if (isObject(node[key])) {\n node[key] = mergeDefaults(node[key], source[key]);\n }\n });\n delete node[\"__extends__\"];\n }\n if (isArray(node)) {\n for (let i = 0; i < node.length; i++) {\n const symbol = node[i];\n if (properties.has(symbol)) {\n node[i] = properties.get(symbol);\n }\n }\n } else {\n for (const [name, value] of Object.entries(node)) {\n if (properties.has(value)) {\n node[name] = properties.get(value);\n }\n }\n }\n });\n return deepClone(themeInstance);\n }\n static getDefaultColors() {\n return {\n fills: DEFAULT_FILLS,\n strokes: DEFAULT_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: DEFAULT_FILLS.BLUE,\n stroke: DEFAULT_STROKES.BLUE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: DEFAULT_FILLS.ORANGE,\n stroke: DEFAULT_STROKES.ORANGE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: DEFAULT_FILLS.GRAY,\n stroke: DEFAULT_STROKES.GRAY,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n getTemplateParameters() {\n const extensions = /* @__PURE__ */new Map();\n extensions.set(EXTENDS_AXES_DEFAULTS, _ChartTheme.getAxisDefaults());\n extensions.set(EXTENDS_AXES_LINE_DEFAULTS, _ChartTheme.getAxisDefaults().line);\n extensions.set(EXTENDS_AXES_TICK_DEFAULTS, _ChartTheme.getAxisDefaults().tick);\n extensions.set(EXTENDS_AXES_GRID_LINE_DEFAULTS, _ChartTheme.getAxisDefaults().gridLine);\n extensions.set(EXTENDS_SERIES_DEFAULTS, _ChartTheme.getSeriesDefaults());\n extensions.set(EXTENDS_CARTESIAN_MARKER_DEFAULTS, _ChartTheme.getCartesianSeriesMarkerDefaults());\n const properties = /* @__PURE__ */new Map();\n properties.set(IS_DARK_THEME, false);\n properties.set(DEFAULT_FONT_FAMILY, \"Verdana, sans-serif\");\n properties.set(DEFAULT_LABEL_COLOUR, \"rgb(70, 70, 70)\");\n properties.set(DEFAULT_INVERTED_LABEL_COLOUR, \"white\");\n properties.set(DEFAULT_MUTED_LABEL_COLOUR, \"rgb(140, 140, 140)\");\n properties.set(DEFAULT_AXIS_GRID_COLOUR, \"rgb(224,234,241)\");\n properties.set(DEFAULT_AXIS_LINE_COLOUR, \"rgb(195, 195, 195)\");\n properties.set(DEFAULT_CROSS_LINES_COLOUR, \"rgb(70, 70, 70)\");\n properties.set(DEFAULT_INSIDE_SERIES_LABEL_COLOUR, DEFAULT_BACKGROUND_FILL);\n properties.set(DEFAULT_BACKGROUND_COLOUR, DEFAULT_BACKGROUND_FILL);\n properties.set(DEFAULT_SHADOW_COLOUR, \"rgba(0, 0, 0, 0.5)\");\n properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [DEFAULT_FILLS.ORANGE, DEFAULT_FILLS.YELLOW, DEFAULT_FILLS.GREEN]);\n properties.set(DEFAULT_HIERARCHY_FILLS, [\"#ffffff\", \"#e0e5ea\", \"#c1ccd5\", \"#a3b4c1\", \"#859cad\"]);\n properties.set(DEFAULT_HIERARCHY_STROKES, [\"#ffffff\", \"#c5cbd1\", \"#a4b1bd\", \"#8498a9\", \"#648096\"]);\n properties.set(DEFAULT_POLAR_SERIES_STROKE, DEFAULT_BACKGROUND_FILL);\n properties.set(DEFAULT_COLOURS, _ChartTheme.getDefaultColors());\n properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _ChartTheme.getWaterfallSeriesDefaultPositiveColors());\n properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _ChartTheme.getWaterfallSeriesDefaultNegativeColors());\n properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _ChartTheme.getWaterfallSeriesDefaultTotalColors());\n properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _ChartTheme.getWaterfallSeriesDefaultTotalColors().stroke);\n properties.set(DEFAULT_ANNOTATION_STROKE, DEFAULT_STROKES.BLUE);\n properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, DEFAULT_FILLS.BLUE);\n properties.set(DEFAULT_ANNOTATION_HANDLE_FILL, DEFAULT_BACKGROUND_FILL);\n return {\n extensions,\n properties\n };\n }\n};\n_ChartTheme.cartesianAxisDefault = {\n [\"number\" /* NUMBER */]: _ChartTheme.getAxisDefaults({\n line: {\n enabled: false\n }\n }),\n [\"log\" /* LOG */]: _ChartTheme.getAxisDefaults({\n base: 10,\n line: {\n enabled: false\n }\n }),\n [\"category\" /* CATEGORY */]: _ChartTheme.getAxisDefaults({\n groupPaddingInner: 0.1,\n label: {\n autoRotate: true\n },\n gridLine: {\n enabled: false\n }\n }),\n [\"time\" /* TIME */]: _ChartTheme.getAxisDefaults({\n gridLine: {\n enabled: false\n }\n }),\n \"grouped-category\": _ChartTheme.getAxisDefaults()\n};\nvar ChartTheme = _ChartTheme;\n\n// packages/ag-charts-community/src/chart/themes/darkTheme.ts\nvar DEFAULT_DARK_BACKGROUND_FILL = \"#192232\";\nvar DEFAULT_DARK_FILLS = {\n BLUE: \"#5090dc\",\n ORANGE: \"#ffa03a\",\n GREEN: \"#459d55\",\n CYAN: \"#34bfe1\",\n YELLOW: \"#e1cc00\",\n VIOLET: \"#9669cb\",\n GRAY: \"#b5b5b5\",\n MAGENTA: \"#bd5aa7\",\n BROWN: \"#8a6224\",\n RED: \"#ef5452\"\n};\nvar DEFAULT_DARK_STROKES = {\n BLUE: \"#74a8e6\",\n ORANGE: \"#ffbe70\",\n GREEN: \"#6cb176\",\n CYAN: \"#75d4ef\",\n YELLOW: \"#f6e559\",\n VIOLET: \"#aa86d8\",\n GRAY: \"#a1a1a1\",\n MAGENTA: \"#ce7ab9\",\n BROWN: \"#997b52\",\n RED: \"#ff7872\"\n};\nvar palette = {\n fills: Object.values(DEFAULT_DARK_FILLS),\n strokes: Object.values(DEFAULT_DARK_STROKES)\n};\nvar DarkTheme = class _DarkTheme extends ChartTheme {\n static getDefaultColors() {\n return {\n fills: DEFAULT_DARK_FILLS,\n strokes: DEFAULT_DARK_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: DEFAULT_DARK_FILLS.BLUE,\n stroke: DEFAULT_DARK_STROKES.BLUE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: DEFAULT_DARK_FILLS.ORANGE,\n stroke: DEFAULT_DARK_STROKES.ORANGE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: DEFAULT_DARK_FILLS.GRAY,\n stroke: DEFAULT_DARK_STROKES.GRAY,\n label: {\n color: \"white\"\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(IS_DARK_THEME, true);\n result.properties.set(DEFAULT_COLOURS, _DarkTheme.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _DarkTheme.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _DarkTheme.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _DarkTheme.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _DarkTheme.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_POLAR_SERIES_STROKE, DEFAULT_DARK_BACKGROUND_FILL);\n result.properties.set(DEFAULT_LABEL_COLOUR, \"white\");\n result.properties.set(DEFAULT_MUTED_LABEL_COLOUR, \"#7D91A0\");\n result.properties.set(DEFAULT_AXIS_GRID_COLOUR, \"#545A6E\");\n result.properties.set(DEFAULT_CROSS_LINES_COLOUR, \"white\");\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [DEFAULT_DARK_FILLS.ORANGE, DEFAULT_DARK_FILLS.YELLOW, DEFAULT_DARK_FILLS.GREEN]);\n result.properties.set(DEFAULT_HIERARCHY_FILLS, [\"#192834\", \"#253746\", \"#324859\", \"#3f596c\", \"#4d6a80\"]);\n result.properties.set(DEFAULT_HIERARCHY_STROKES, [\"#192834\", \"#3b5164\", \"#496275\", \"#577287\", \"#668399\"]);\n result.properties.set(DEFAULT_BACKGROUND_COLOUR, DEFAULT_DARK_BACKGROUND_FILL);\n result.properties.set(DEFAULT_INSIDE_SERIES_LABEL_COLOUR, DEFAULT_DARK_BACKGROUND_FILL);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, DEFAULT_DARK_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, DEFAULT_DARK_FILLS.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_HANDLE_FILL, DEFAULT_DARK_BACKGROUND_FILL);\n return result;\n }\n getPalette() {\n return palette;\n }\n constructor(options) {\n super(options);\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/materialDark.ts\nvar MATERIAL_DARK_FILLS = {\n BLUE: \"#2196F3\",\n ORANGE: \"#FF9800\",\n GREEN: \"#4CAF50\",\n CYAN: \"#00BCD4\",\n YELLOW: \"#FFEB3B\",\n VIOLET: \"#7E57C2\",\n GRAY: \"#9E9E9E\",\n MAGENTA: \"#F06292\",\n BROWN: \"#795548\",\n RED: \"#F44336\"\n};\nvar MATERIAL_DARK_STROKES = {\n BLUE: \"#90CAF9\",\n ORANGE: \"#FFCC80\",\n GREEN: \"#A5D6A7\",\n CYAN: \"#80DEEA\",\n YELLOW: \"#FFF9C4\",\n VIOLET: \"#B39DDB\",\n GRAY: \"#E0E0E0\",\n MAGENTA: \"#F48FB1\",\n BROWN: \"#A1887F\",\n RED: \"#EF9A9A\"\n};\nvar palette2 = {\n fills: Object.values(MATERIAL_DARK_FILLS),\n strokes: Object.values(MATERIAL_DARK_STROKES)\n};\nvar MaterialDark = class _MaterialDark extends DarkTheme {\n static getDefaultColors() {\n return {\n fills: MATERIAL_DARK_FILLS,\n strokes: MATERIAL_DARK_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: MATERIAL_DARK_FILLS.BLUE,\n stroke: MATERIAL_DARK_STROKES.BLUE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: MATERIAL_DARK_FILLS.RED,\n stroke: MATERIAL_DARK_STROKES.RED,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: MATERIAL_DARK_FILLS.GRAY,\n stroke: MATERIAL_DARK_STROKES.GRAY,\n label: {\n color: \"white\"\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _MaterialDark.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _MaterialDark.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _MaterialDark.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _MaterialDark.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [MATERIAL_DARK_FILLS.ORANGE, MATERIAL_DARK_FILLS.YELLOW, MATERIAL_DARK_FILLS.GREEN]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _MaterialDark.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, MATERIAL_DARK_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, MATERIAL_DARK_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette2;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/materialLight.ts\nvar MATERIAL_LIGHT_FILLS = {\n BLUE: \"#2196F3\",\n ORANGE: \"#FF9800\",\n GREEN: \"#4CAF50\",\n CYAN: \"#00BCD4\",\n YELLOW: \"#FFEB3B\",\n VIOLET: \"#7E57C2\",\n GRAY: \"#9E9E9E\",\n MAGENTA: \"#F06292\",\n BROWN: \"#795548\",\n RED: \"#F44336\"\n};\nvar MATERIAL_LIGHT_STROKES = {\n BLUE: \"#1565C0\",\n ORANGE: \"#E65100\",\n GREEN: \"#2E7D32\",\n CYAN: \"#00838F\",\n YELLOW: \"#F9A825\",\n VIOLET: \"#4527A0\",\n GRAY: \"#616161\",\n MAGENTA: \"#C2185B\",\n BROWN: \"#4E342E\",\n RED: \"#B71C1C\"\n};\nvar palette3 = {\n fills: Object.values(MATERIAL_LIGHT_FILLS),\n strokes: Object.values(MATERIAL_LIGHT_STROKES)\n};\nvar MaterialLight = class _MaterialLight extends ChartTheme {\n static getDefaultColors() {\n return {\n fills: MATERIAL_LIGHT_FILLS,\n strokes: MATERIAL_LIGHT_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: MATERIAL_LIGHT_FILLS.BLUE,\n stroke: MATERIAL_LIGHT_STROKES.BLUE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: MATERIAL_LIGHT_FILLS.RED,\n stroke: MATERIAL_LIGHT_STROKES.RED,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: MATERIAL_LIGHT_FILLS.GRAY,\n stroke: MATERIAL_LIGHT_STROKES.GRAY,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _MaterialLight.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _MaterialLight.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _MaterialLight.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _MaterialLight.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [MATERIAL_LIGHT_FILLS.ORANGE, MATERIAL_LIGHT_FILLS.YELLOW, MATERIAL_LIGHT_FILLS.GREEN]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _MaterialLight.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, MATERIAL_LIGHT_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, MATERIAL_LIGHT_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette3;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/polychromaDark.ts\nvar POLYCHROMA_DARK_FILLS = {\n BLUE: \"#436ff4\",\n PURPLE: \"#9a7bff\",\n MAGENTA: \"#d165d2\",\n PINK: \"#f0598b\",\n RED: \"#f47348\",\n ORANGE: \"#f2a602\",\n YELLOW: \"#e9e201\",\n GREEN: \"#21b448\",\n CYAN: \"#00b9a2\",\n MODERATE_BLUE: \"#00aee4\"\n};\nvar POLYCHROMA_DARK_STROKES = {\n BLUE: \"#6698ff\",\n PURPLE: \"#c0a3ff\",\n MAGENTA: \"#fc8dfc\",\n PINK: \"#ff82b1\",\n RED: \"#ff9b70\",\n ORANGE: \"#ffcf4e\",\n YELLOW: \"#ffff58\",\n GREEN: \"#58dd70\",\n CYAN: \"#51e2c9\",\n MODERATE_BLUE: \"#4fd7ff\"\n};\nvar POLYCHROMA_DARK_FILL_GRAY = \"#bbbbbb\";\nvar POLYCHROMA_DARK_STROKE_GRAY = \"#eeeeee\";\nvar palette4 = {\n fills: Object.values(POLYCHROMA_DARK_FILLS),\n strokes: Object.values(POLYCHROMA_DARK_STROKES)\n};\nvar PolychromaDark = class _PolychromaDark extends DarkTheme {\n static getDefaultColors() {\n return {\n fills: POLYCHROMA_DARK_FILLS,\n strokes: POLYCHROMA_DARK_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: POLYCHROMA_DARK_FILLS.BLUE,\n stroke: POLYCHROMA_DARK_STROKES.BLUE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: POLYCHROMA_DARK_FILLS.RED,\n stroke: POLYCHROMA_DARK_STROKES.RED,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: POLYCHROMA_DARK_FILL_GRAY,\n stroke: POLYCHROMA_DARK_STROKE_GRAY,\n label: {\n color: \"white\"\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _PolychromaDark.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _PolychromaDark.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _PolychromaDark.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _PolychromaDark.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [POLYCHROMA_DARK_FILLS.BLUE, POLYCHROMA_DARK_FILLS.RED]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _PolychromaDark.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, POLYCHROMA_DARK_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, POLYCHROMA_DARK_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette4;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/polychromaLight.ts\nvar POLYCHROMA_LIGHT_FILLS = {\n BLUE: \"#436ff4\",\n PURPLE: \"#9a7bff\",\n MAGENTA: \"#d165d2\",\n PINK: \"#f0598b\",\n RED: \"#f47348\",\n ORANGE: \"#f2a602\",\n YELLOW: \"#e9e201\",\n GREEN: \"#21b448\",\n CYAN: \"#00b9a2\",\n MODERATE_BLUE: \"#00aee4\"\n};\nvar POLYCHROMA_LIGHT_STROKES = {\n BLUE: \"#2346c9\",\n PURPLE: \"#7653d4\",\n MAGENTA: \"#a73da9\",\n PINK: \"#c32d66\",\n RED: \"#c84b1c\",\n ORANGE: \"#c87f00\",\n YELLOW: \"#c1b900\",\n GREEN: \"#008c1c\",\n CYAN: \"#00927c\",\n MODERATE_BLUE: \"#0087bb\"\n};\nvar POLYCHROMA_LIGHT_FILL_GRAY = \"#bbbbbb\";\nvar POLYCHROMA_LIGHT_STROKE_GRAY = \"#888888\";\nvar palette5 = {\n fills: Object.values(POLYCHROMA_LIGHT_FILLS),\n strokes: Object.values(POLYCHROMA_LIGHT_STROKES)\n};\nvar PolychromaLight = class _PolychromaLight extends ChartTheme {\n static getDefaultColors() {\n return {\n fills: POLYCHROMA_LIGHT_FILLS,\n strokes: POLYCHROMA_LIGHT_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: POLYCHROMA_LIGHT_FILLS.BLUE,\n stroke: POLYCHROMA_LIGHT_STROKES.BLUE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: POLYCHROMA_LIGHT_FILLS.RED,\n stroke: POLYCHROMA_LIGHT_STROKES.RED,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: POLYCHROMA_LIGHT_FILL_GRAY,\n stroke: POLYCHROMA_LIGHT_STROKE_GRAY,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _PolychromaLight.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _PolychromaLight.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _PolychromaLight.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _PolychromaLight.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [POLYCHROMA_LIGHT_FILLS.BLUE, POLYCHROMA_LIGHT_FILLS.RED]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _PolychromaLight.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, POLYCHROMA_LIGHT_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, POLYCHROMA_LIGHT_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette5;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/sheetsDark.ts\nvar SHEETS_DARK_FILLS = {\n BLUE: \"#4472C4\",\n ORANGE: \"#ED7D31\",\n GRAY: \"#A5A5A5\",\n YELLOW: \"#FFC000\",\n MODERATE_BLUE: \"#5B9BD5\",\n GREEN: \"#70AD47\",\n DARK_GRAY: \"#7B7B7B\",\n DARK_BLUE: \"#264478\",\n VERY_DARK_GRAY: \"#636363\",\n DARK_YELLOW: \"#997300\"\n};\nvar SHEETS_DARK_STROKES = {\n BLUE: \"#6899ee\",\n ORANGE: \"#ffa55d\",\n GRAY: \"#cdcdcd\",\n YELLOW: \"#ffea53\",\n MODERATE_BLUE: \"#82c3ff\",\n GREEN: \"#96d56f\",\n DARK_GRAY: \"#a1a1a1\",\n DARK_BLUE: \"#47689f\",\n VERY_DARK_GRAY: \"#878787\",\n DARK_YELLOW: \"#c0993d\"\n};\nvar palette6 = {\n fills: Object.values(SHEETS_DARK_FILLS),\n strokes: Object.values(SHEETS_DARK_STROKES)\n};\nvar SheetsDark = class _SheetsDark extends DarkTheme {\n static getDefaultColors() {\n return {\n fills: __spreadProps(__spreadValues({}, SHEETS_DARK_FILLS), {\n RED: SHEETS_DARK_FILLS.ORANGE\n }),\n strokes: __spreadProps(__spreadValues({}, SHEETS_DARK_STROKES), {\n RED: SHEETS_DARK_STROKES.ORANGE\n })\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: SHEETS_DARK_FILLS.BLUE,\n stroke: SHEETS_DARK_STROKES.BLUE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: SHEETS_DARK_FILLS.ORANGE,\n stroke: SHEETS_DARK_STROKES.ORANGE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: SHEETS_DARK_FILLS.GRAY,\n stroke: SHEETS_DARK_STROKES.GRAY,\n label: {\n color: \"white\"\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _SheetsDark.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _SheetsDark.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _SheetsDark.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _SheetsDark.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [SHEETS_DARK_FILLS.ORANGE, SHEETS_DARK_FILLS.YELLOW, SHEETS_DARK_FILLS.GREEN]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _SheetsDark.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, SHEETS_DARK_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, SHEETS_DARK_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette6;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/sheetsLight.ts\nvar SHEETS_LIGHT_FILLS = {\n BLUE: \"#5281d5\",\n ORANGE: \"#ff8d44\",\n GRAY: \"#b5b5b5\",\n YELLOW: \"#ffd02f\",\n MODERATE_BLUE: \"#6aabe6\",\n GREEN: \"#7fbd57\",\n DARK_GRAY: \"#8a8a8a\",\n DARK_BLUE: \"#335287\",\n VERY_DARK_GRAY: \"#717171\",\n DARK_YELLOW: \"#a98220\"\n};\nvar SHEETS_LIGHT_STROKES = {\n BLUE: \"#214d9b\",\n ORANGE: \"#c25600\",\n GRAY: \"#7f7f7f\",\n YELLOW: \"#d59800\",\n MODERATE_BLUE: \"#3575ac\",\n GREEN: \"#4b861a\",\n DARK_GRAY: \"#575757\",\n DARK_BLUE: \"#062253\",\n VERY_DARK_GRAY: \"#414141\",\n DARK_YELLOW: \"#734f00\"\n};\nvar palette7 = {\n fills: Object.values(SHEETS_LIGHT_FILLS),\n strokes: Object.values(SHEETS_LIGHT_STROKES)\n};\nvar SheetsLight = class _SheetsLight extends ChartTheme {\n static getDefaultColors() {\n return {\n fills: __spreadProps(__spreadValues({}, SHEETS_LIGHT_FILLS), {\n RED: SHEETS_LIGHT_FILLS.ORANGE\n }),\n strokes: __spreadProps(__spreadValues({}, SHEETS_LIGHT_STROKES), {\n RED: SHEETS_LIGHT_STROKES.ORANGE\n })\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: SHEETS_LIGHT_FILLS.BLUE,\n stroke: SHEETS_LIGHT_STROKES.BLUE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: SHEETS_LIGHT_FILLS.ORANGE,\n stroke: SHEETS_LIGHT_STROKES.ORANGE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: SHEETS_LIGHT_FILLS.GRAY,\n stroke: SHEETS_LIGHT_STROKES.GRAY,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _SheetsLight.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _SheetsLight.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _SheetsLight.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _SheetsLight.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [SHEETS_LIGHT_FILLS.ORANGE, SHEETS_LIGHT_FILLS.YELLOW, SHEETS_LIGHT_FILLS.GREEN]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _SheetsLight.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, SHEETS_LIGHT_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, SHEETS_LIGHT_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette7;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/vividDark.ts\nvar VIVID_DARK_FILLS = {\n BLUE: \"#0083ff\",\n ORANGE: \"#ff6600\",\n GREEN: \"#00af00\",\n CYAN: \"#00ccff\",\n YELLOW: \"#f7c700\",\n VIOLET: \"#ac26ff\",\n GRAY: \"#a7a7b7\",\n MAGENTA: \"#e800c5\",\n BROWN: \"#b54300\",\n RED: \"#ff0000\"\n};\nvar VIVID_DARK_STROKES = {\n BLUE: \"#67b7ff\",\n ORANGE: \"#ffc24d\",\n GREEN: \"#5cc86f\",\n CYAN: \"#54ebff\",\n VIOLET: \"#c18aff\",\n YELLOW: \"#fff653\",\n GRAY: \"#aeaeae\",\n MAGENTA: \"#f078d4\",\n BROWN: \"#ba8438\",\n RED: \"#ff726e\"\n};\nvar palette8 = {\n fills: Object.values(VIVID_DARK_FILLS),\n strokes: Object.values(VIVID_DARK_STROKES)\n};\nvar VividDark = class _VividDark extends DarkTheme {\n static getDefaultColors() {\n return {\n fills: VIVID_DARK_FILLS,\n strokes: VIVID_DARK_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: VIVID_DARK_FILLS.BLUE,\n stroke: VIVID_DARK_STROKES.BLUE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: VIVID_DARK_FILLS.ORANGE,\n stroke: VIVID_DARK_STROKES.ORANGE,\n label: {\n color: \"white\"\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: VIVID_DARK_FILLS.GRAY,\n stroke: VIVID_DARK_STROKES.GRAY,\n label: {\n color: \"white\"\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _VividDark.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _VividDark.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _VividDark.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _VividDark.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [VIVID_DARK_FILLS.ORANGE, VIVID_DARK_FILLS.YELLOW, VIVID_DARK_FILLS.GREEN]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _VividDark.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, VIVID_DARK_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, VIVID_DARK_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette8;\n }\n};\n\n// packages/ag-charts-community/src/chart/themes/vividLight.ts\nvar VIVID_FILLS = {\n BLUE: \"#0083ff\",\n ORANGE: \"#ff6600\",\n GREEN: \"#00af00\",\n CYAN: \"#00ccff\",\n YELLOW: \"#f7c700\",\n VIOLET: \"#ac26ff\",\n GRAY: \"#a7a7b7\",\n MAGENTA: \"#e800c5\",\n BROWN: \"#b54300\",\n RED: \"#ff0000\"\n};\nvar VIVID_STROKES = {\n BLUE: \"#0f68c0\",\n ORANGE: \"#d47100\",\n GREEN: \"#007922\",\n CYAN: \"#009ac2\",\n VIOLET: \"#bca400\",\n YELLOW: \"#753cac\",\n GRAY: \"#646464\",\n MAGENTA: \"#9b2685\",\n BROWN: \"#6c3b00\",\n RED: \"#cb0021\"\n};\nvar palette9 = {\n fills: Object.values(VIVID_FILLS),\n strokes: Object.values(VIVID_STROKES)\n};\nvar VividLight = class _VividLight extends ChartTheme {\n static getDefaultColors() {\n return {\n fills: VIVID_FILLS,\n strokes: VIVID_STROKES\n };\n }\n static getWaterfallSeriesDefaultPositiveColors() {\n return {\n fill: VIVID_FILLS.BLUE,\n stroke: VIVID_STROKES.BLUE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultNegativeColors() {\n return {\n fill: VIVID_FILLS.ORANGE,\n stroke: VIVID_STROKES.ORANGE,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n static getWaterfallSeriesDefaultTotalColors() {\n return {\n fill: VIVID_FILLS.GRAY,\n stroke: VIVID_STROKES.GRAY,\n label: {\n color: DEFAULT_LABEL_COLOUR\n }\n };\n }\n getTemplateParameters() {\n const result = super.getTemplateParameters();\n result.properties.set(DEFAULT_COLOURS, _VividLight.getDefaultColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS, _VividLight.getWaterfallSeriesDefaultPositiveColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS, _VividLight.getWaterfallSeriesDefaultNegativeColors());\n result.properties.set(DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS, _VividLight.getWaterfallSeriesDefaultTotalColors());\n result.properties.set(DEFAULT_DIVERGING_SERIES_COLOUR_RANGE, [VIVID_FILLS.ORANGE, VIVID_FILLS.YELLOW, VIVID_FILLS.GREEN]);\n result.properties.set(DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE, _VividLight.getWaterfallSeriesDefaultTotalColors().stroke);\n result.properties.set(DEFAULT_ANNOTATION_STROKE, VIVID_STROKES.BLUE);\n result.properties.set(DEFAULT_ANNOTATION_BACKGROUND_FILL, VIVID_FILLS.BLUE);\n return result;\n }\n getPalette() {\n return palette9;\n }\n};\n\n// packages/ag-charts-community/src/chart/mapping/themes.ts\nvar lightTheme = () => new ChartTheme();\nvar darkTheme = () => new DarkTheme();\nvar lightThemes = {\n undefined: lightTheme,\n null: lightTheme,\n \"ag-default\": lightTheme,\n \"ag-sheets\": () => new SheetsLight(),\n \"ag-polychroma\": () => new PolychromaLight(),\n \"ag-vivid\": () => new VividLight(),\n \"ag-material\": () => new MaterialLight()\n};\nvar darkThemes = {\n undefined: darkTheme,\n null: darkTheme,\n \"ag-default-dark\": darkTheme,\n \"ag-sheets-dark\": () => new SheetsDark(),\n \"ag-polychroma-dark\": () => new PolychromaDark(),\n \"ag-vivid-dark\": () => new VividDark(),\n \"ag-material-dark\": () => new MaterialDark()\n};\nvar themes = __spreadValues(__spreadValues({}, darkThemes), lightThemes);\nfunction validateChartThemeObject(unknownObject) {\n if (unknownObject === null) {\n return;\n }\n let valid = true;\n const {\n baseTheme,\n palette: palette10,\n overrides\n } = unknownObject;\n if (baseTheme !== void 0 && typeof baseTheme !== \"string\" && typeof baseTheme !== \"object\") {\n Logger.warn(`invalid theme.baseTheme type ${typeof baseTheme}, expected (string | object).`);\n valid = false;\n }\n if (overrides !== void 0 && typeof overrides !== \"object\") {\n Logger.warn(`invalid theme.overrides type ${typeof overrides}, expected object.`);\n valid = false;\n }\n if (typeof palette10 === \"object\") {\n if (palette10 !== null) {\n const {\n fills,\n strokes\n } = palette10;\n if (fills !== void 0 && !Array.isArray(fills)) {\n Logger.warn(`theme.overrides.fills must be undefined or an array`);\n valid = false;\n }\n if (strokes !== void 0 && !Array.isArray(strokes)) {\n Logger.warn(`theme.overrides.strokes must be undefined or an array`);\n valid = false;\n }\n }\n } else if (palette10 !== void 0) {\n Logger.warn(`invalid theme.palette type ${typeof palette10}, expected object.`);\n valid = false;\n }\n if (valid) {\n return unknownObject;\n }\n}\nfunction validateChartTheme(value) {\n if (value === void 0 || typeof value === \"string\" || value instanceof ChartTheme) {\n return value;\n }\n if (typeof value === \"object\") {\n return validateChartThemeObject(value);\n }\n Logger.warn(`invalid theme value type ${typeof value}, expected object or string.`);\n}\nfunction getChartTheme(unvalidatedValue) {\n let value = validateChartTheme(unvalidatedValue);\n if (value instanceof ChartTheme) {\n return value;\n }\n if (value == null || typeof value === \"string\") {\n const stockTheme = themes[value];\n if (stockTheme) {\n return stockTheme();\n }\n Logger.warnOnce(`the theme [${value}] is invalid, using [ag-default] instead.`);\n return lightTheme();\n }\n const overrides = [];\n let palette10;\n while (typeof value === \"object\") {\n overrides.push(value.overrides);\n palette10 != null ? palette10 : palette10 = value.palette;\n value = value.baseTheme;\n }\n const flattenedTheme = {\n baseTheme: value,\n overrides: mergeDefaults(...overrides),\n palette: palette10\n };\n const baseTheme = flattenedTheme.baseTheme ? getChartTheme(flattenedTheme.baseTheme) : lightTheme();\n return new baseTheme.constructor(flattenedTheme);\n}\n\n// packages/ag-charts-community/src/util/array.ts\nfunction extent(values) {\n if (values.length === 0) {\n return;\n }\n let min = Infinity;\n let max = -Infinity;\n for (let n of values) {\n if (n instanceof Date) {\n n = n.getTime();\n }\n if (typeof n !== \"number\") {\n continue;\n }\n if (n < min) {\n min = n;\n }\n if (n > max) {\n max = n;\n }\n }\n const result = [min, max];\n if (result.every(isFinite)) {\n return result;\n }\n}\nfunction normalisedExtent(d, min, max) {\n return normalisedExtentWithMetadata(d, min, max).extent;\n}\nfunction normalisedExtentWithMetadata(d, min, max) {\n var _a;\n let clipped = false;\n if (d.length > 2) {\n d = (_a = extent(d)) != null ? _a : [NaN, NaN];\n }\n if (!isNaN(min)) {\n clipped || (clipped = min > d[0]);\n d = [min, d[1]];\n }\n if (!isNaN(max)) {\n clipped || (clipped = max < d[1]);\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return {\n extent: d,\n clipped\n };\n}\nfunction arraysEqual(a, b) {\n if (a == null || b == null || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (Array.isArray(a[i]) && Array.isArray(b[i])) {\n if (!arraysEqual(a[i], b[i])) {\n return false;\n }\n } else if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nfunction toArray(value) {\n if (typeof value === \"undefined\") {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\nfunction unique(array) {\n return Array.from(new Set(array));\n}\nfunction groupBy(array, iteratee) {\n return array.reduce((result, item) => {\n var _a;\n const groupKey = iteratee(item);\n (_a = result[groupKey]) != null ? _a : result[groupKey] = [];\n result[groupKey].push(item);\n return result;\n }, {});\n}\nfunction circularSliceArray(data, size, offset4 = 0) {\n if (data.length === 0) {\n return [];\n }\n const result = [];\n for (let i = 0; i < size; i++) {\n result.push(data.at((i + offset4) % data.length));\n }\n return result;\n}\nfunction bifurcate(isLeft, array) {\n return array.reduce(([left, right], value) => isLeft(value) ? [[...left, value], right] : [left, [...right, value]], [[], []]);\n}\nfunction* mapIterable(src, predicate) {\n for (const e of src) {\n yield predicate(e);\n }\n}\nfunction constStringsIncludes(array, value) {\n const casting = array;\n return casting.includes(value);\n}\nfunction isInStringUnion(unionValues, value) {\n return constStringsIncludes(unionValues, value);\n}\nfunction allInStringUnion(unionValues, values) {\n return !values.some(v => !isInStringUnion(unionValues, v));\n}\n\n// packages/ag-charts-community/src/util/dom.ts\nvar verifiedGlobals = {};\nvar injectCache = /* @__PURE__ */new WeakMap();\nif (typeof window !== \"undefined\") {\n verifiedGlobals.window = window;\n} else if (typeof global !== \"undefined\") {\n verifiedGlobals.window = global.window;\n}\nif (typeof document !== \"undefined\") {\n verifiedGlobals.document = document;\n} else if (typeof global !== \"undefined\") {\n verifiedGlobals.document = global.document;\n}\nfunction getDocument(propertyName) {\n var _a;\n return propertyName ? (_a = verifiedGlobals.document) == null ? void 0 : _a[propertyName] : verifiedGlobals.document;\n}\nfunction getWindow(propertyName) {\n var _a;\n return propertyName ? (_a = verifiedGlobals.window) == null ? void 0 : _a[propertyName] : verifiedGlobals.window;\n}\nfunction createElement(tagName, className, style) {\n const element2 = getDocument().createElement(tagName);\n if (typeof className === \"object\") {\n style = className;\n className = void 0;\n }\n if (className) {\n element2.classList.add(className);\n }\n if (style) {\n Object.assign(element2.style, style);\n }\n return element2;\n}\nfunction downloadUrl(dataUrl, fileName) {\n const {\n body\n } = getDocument();\n const element2 = createElement(\"a\", {\n display: \"none\"\n });\n element2.href = dataUrl;\n element2.download = fileName;\n body.appendChild(element2);\n element2.click();\n setTimeout(() => body.removeChild(element2));\n}\nfunction injectStyle(cssStyle, uniqueId) {\n var _a, _b;\n const document2 = getDocument();\n if (uniqueId && ((_a = injectCache.get(document2)) == null ? void 0 : _a.has(uniqueId))) return;\n const styleElement = createElement(\"style\");\n styleElement.innerHTML = cssStyle;\n document2.head.insertBefore(styleElement, document2.head.querySelector(\"style\"));\n if (uniqueId && !injectCache.has(document2)) {\n injectCache.set(document2, /* @__PURE__ */new Set([uniqueId]));\n } else if (uniqueId) {\n (_b = injectCache.get(document2)) == null ? void 0 : _b.add(uniqueId);\n }\n}\nfunction setDocument(document2) {\n verifiedGlobals.document = document2;\n}\nfunction setWindow(window2) {\n verifiedGlobals.window = window2;\n}\n\n// packages/ag-charts-community/src/util/debug.ts\nvar LONG_TIME_PERIOD_THRESHOLD = 2e3;\nvar timeOfLastLog = Date.now();\nvar logTimeGap = () => {\n const timeSinceLastLog = Date.now() - timeOfLastLog;\n if (timeSinceLastLog > LONG_TIME_PERIOD_THRESHOLD) {\n const prettyDuration = (Math.floor(timeSinceLastLog / 100) / 10).toFixed(1);\n Logger.log(`**** ${prettyDuration}s since last log message ****`);\n }\n timeOfLastLog = Date.now();\n};\nvar Debug = {\n create(...debugSelectors) {\n const resultFn = (...logContent) => {\n if (Debug.check(...debugSelectors)) {\n if (typeof logContent[0] === \"function\") {\n logContent = toArray(logContent[0]());\n }\n logTimeGap();\n Logger.log(...logContent);\n }\n };\n return Object.assign(resultFn, {\n check: () => Debug.check(...debugSelectors)\n });\n },\n check(...debugSelectors) {\n if (debugSelectors.length === 0) {\n debugSelectors.push(true);\n }\n const chartDebug = toArray(getWindow(\"agChartsDebug\"));\n return chartDebug.some(selector => debugSelectors.includes(selector));\n }\n};\n\n// packages/ag-charts-community/src/module/optionsModule.ts\nvar unthemedSeries = /* @__PURE__ */new Set([\"map-shape-background\", \"map-line-background\"]);\nvar ChartOptions = class {\n constructor(userOptions, specialOverrides) {\n var _b, _c, _d;\n const cloneOptions = {\n shallow: [\"data\"]\n };\n const options = deepClone(userOptions, cloneOptions);\n const chartType2 = this.optionsType(options);\n this.sanityCheckAndCleanup(options);\n this.userOptions = options;\n this.activeTheme = getChartTheme(options.theme);\n this.defaultAxes = this.getDefaultAxes(options);\n this.specialOverrides = this.specialOverridesDefaults(__spreadValues({}, specialOverrides));\n const _a = this.getSeriesThemeConfig(chartType2),\n {\n axes: axesThemes = {},\n annotations: annotationsThemes = {},\n series: _\n } = _a,\n themeDefaults = __objRest(_a, [\"axes\", \"annotations\", \"series\"]);\n this.processedOptions = deepClone(mergeDefaults(this.userOptions, themeDefaults, this.defaultAxes), cloneOptions);\n this.processAxesOptions(this.processedOptions, axesThemes);\n this.processSeriesOptions(this.processedOptions);\n this.processMiniChartSeriesOptions(this.processedOptions);\n this.processAnnotationsOptions(this.processedOptions, annotationsThemes);\n if ((isAgCartesianChartOptions(this.processedOptions) || isAgPolarChartOptionsWithSeriesBasedLegend(this.processedOptions)) && ((_b = this.processedOptions.legend) == null ? void 0 : _b.enabled) == null) {\n (_d = (_c = this.processedOptions).legend) != null ? _d : _c.legend = {};\n this.processedOptions.legend.enabled = this.processedOptions.series.length > 1;\n }\n this.enableConfiguredOptions(this.processedOptions);\n if (!enterpriseModule.isEnterprise) {\n removeUsedEnterpriseOptions(this.processedOptions);\n }\n }\n getOptions() {\n var _a;\n return (_a = this.processedOptions) != null ? _a : {};\n }\n diffOptions(options) {\n return jsonDiff(options, this.processedOptions);\n }\n getSeriesThemeConfig(seriesType) {\n var _a, _b;\n return deepClone((_b = (_a = this.activeTheme) == null ? void 0 : _a.config[seriesType]) != null ? _b : {});\n }\n getDefaultAxes(options) {\n const optionsType2 = this.optionsType(options);\n const axesDefaults = seriesRegistry.cloneDefaultAxes(optionsType2);\n if (seriesRegistry.isDefaultAxisSwapNeeded(options)) {\n this.swapAxesPosition(axesDefaults);\n }\n return axesDefaults;\n }\n optionsType(options) {\n var _a, _b, _c;\n return (_c = (_b = (_a = options.series) == null ? void 0 : _a[0]) == null ? void 0 : _b.type) != null ? _c : \"line\";\n }\n sanityCheckAndCleanup(options) {\n var _a;\n this.deprecationWarnings(options);\n this.axesTypeIntegrity(options);\n this.seriesTypeIntegrity(options);\n this.soloSeriesIntegrity(options);\n this.removeDisabledOptions(options);\n this.removeLeftoverSymbols(options);\n if (((_a = options.series) == null ? void 0 : _a.some(s => s.type === \"bullet\")) && options.sync != null && options.sync.enabled !== false) {\n Logger.warnOnce(\"bullet series cannot be synced, disabling synchronization.\");\n delete options.sync;\n }\n }\n swapAxesPosition(options) {\n var _a;\n if (isAgCartesianChartOptions(options)) {\n const [axis0, axis1] = (_a = options.axes) != null ? _a : [];\n options.axes = [__spreadProps(__spreadValues({}, axis0), {\n position: axis1.position\n }), __spreadProps(__spreadValues({}, axis1), {\n position: axis0.position\n })];\n }\n }\n processAxesOptions(options, axesThemes) {\n if (!(\"axes\" in options)) return;\n options.axes = options.axes.map(axis => {\n var _a, _c, _d;\n const _b = mergeDefaults((_a = axesThemes[axis.type]) == null ? void 0 : _a[axis.position], axesThemes[axis.type]),\n {\n crossLines: crossLinesTheme\n } = _b,\n axisTheme = __objRest(_b, [\"crossLines\"]);\n if (axis.crossLines) {\n axis.crossLines = mergeArrayDefaults(axis.crossLines, crossLinesTheme);\n }\n const gridLineStyle = (_c = axisTheme.gridLine) == null ? void 0 : _c.style;\n if (((_d = axis.gridLine) == null ? void 0 : _d.style) && (gridLineStyle == null ? void 0 : gridLineStyle.length)) {\n axis.gridLine.style = axis.gridLine.style.map((style, index) => style.stroke != null || style.lineDash != null ? mergeDefaults(style, gridLineStyle.at(index % gridLineStyle.length)) : style);\n }\n const _e = mergeDefaults(axis, axisTheme),\n {\n top: _1,\n right: _2,\n bottom: _3,\n left: _4\n } = _e,\n axisOptions = __objRest(_e, [\"top\", \"right\", \"bottom\", \"left\"]);\n return axisOptions;\n });\n }\n processSeriesOptions(options) {\n const defaultSeriesType = this.getDefaultSeriesType(options);\n const defaultTooltipPosition = this.getTooltipPositionDefaults(options);\n const userPalette = Boolean(isObject(options.theme) && options.theme.palette);\n const paletteOptions = {\n colourIndex: 0,\n userPalette\n };\n const processedSeries = options.series.map(series => {\n var _a, _b;\n (_a = series.type) != null ? _a : series.type = defaultSeriesType;\n const _c = (_b = this.getSeriesThemeConfig(series.type).series) != null ? _b : {},\n {\n innerLabels: innerLabelsTheme\n } = _c,\n seriesTheme = __objRest(_c, [\"innerLabels\"]);\n const seriesPaletteOptions = unthemedSeries.has(series.type) ? {\n colourIndex: 0,\n userPalette\n } : paletteOptions;\n const palette10 = this.getSeriesPalette(series.type, seriesPaletteOptions);\n const seriesOptions = mergeDefaults(this.getSeriesGroupingOptions(series), series, defaultTooltipPosition, seriesTheme, palette10);\n if (seriesOptions.innerLabels) {\n seriesOptions.innerLabels = mergeArrayDefaults(seriesOptions.innerLabels, innerLabelsTheme);\n }\n return this.activeTheme.templateTheme(seriesOptions);\n });\n options.series = this.setSeriesGroupingOptions(processedSeries);\n }\n processMiniChartSeriesOptions(options) {\n var _a, _b;\n let miniChartSeries = (_b = (_a = options.navigator) == null ? void 0 : _a.miniChart) == null ? void 0 : _b.series;\n if (miniChartSeries == null) return;\n const paletteOptions = {\n colourIndex: 0,\n userPalette: Boolean(isObject(options.theme) && options.theme.palette)\n };\n miniChartSeries = miniChartSeries.map(series => {\n var _a2, _b2;\n (_a2 = series.type) != null ? _a2 : series.type = \"line\";\n const _c = (_b2 = this.getSeriesThemeConfig(series.type).series) != null ? _b2 : {},\n {\n innerLabels: _\n } = _c,\n seriesTheme = __objRest(_c, [\"innerLabels\"]);\n const seriesOptions = mergeDefaults(this.getSeriesGroupingOptions(series), series, seriesTheme, this.getSeriesPalette(series.type, paletteOptions));\n return this.activeTheme.templateTheme(seriesOptions);\n });\n options.navigator.miniChart.series = this.setSeriesGroupingOptions(miniChartSeries);\n }\n processAnnotationsOptions(options, _annotationsThemes) {\n if (!isAgCartesianChartOptions(options)) return;\n }\n getSeriesPalette(seriesType, options) {\n const paletteFactory = seriesRegistry.getPaletteFactory(seriesType);\n const {\n colourIndex: colourOffset,\n userPalette\n } = options;\n const {\n fills = [],\n strokes = []\n } = this.activeTheme.palette;\n return paletteFactory == null ? void 0 : paletteFactory({\n userPalette,\n colorsCount: Math.max(fills.length, strokes.length),\n themeTemplateParameters: this.activeTheme.getTemplateParameters(),\n takeColors(count) {\n options.colourIndex += count;\n return {\n fills: circularSliceArray(fills, count, colourOffset),\n strokes: circularSliceArray(strokes, count, colourOffset)\n };\n }\n });\n }\n getSeriesGroupingOptions(series) {\n const groupable = seriesRegistry.isGroupable(series.type);\n const stackable = seriesRegistry.isStackable(series.type);\n const stackedByDefault = seriesRegistry.isStackedByDefault(series.type);\n if (series.grouped && !groupable) {\n Logger.warnOnce(`unsupported grouping of series type \"${series.type}\".`);\n }\n if ((series.stacked || series.stackGroup) && !stackable) {\n Logger.warnOnce(`unsupported stacking of series type \"${series.type}\".`);\n }\n let {\n grouped,\n stacked\n } = series;\n stacked != null ? stacked : stacked = (stackedByDefault || series.stackGroup != null) && !(groupable && grouped);\n grouped != null ? grouped : grouped = true;\n return {\n stacked: stackable && stacked,\n grouped: groupable && grouped && !(stackable && stacked)\n };\n }\n setSeriesGroupingOptions(allSeries) {\n const seriesGroups = this.getSeriesGrouping(allSeries);\n Debug.create(true, \"opts\")(\"setSeriesGroupingOptions() - series grouping: \", seriesGroups);\n const groupIdx = {};\n const groupCount2 = seriesGroups.reduce((countMap, seriesGroup) => {\n var _a, _b;\n if (seriesGroup.groupType === \"default\" /* DEFAULT */) {\n return countMap;\n }\n (_b = countMap[_a = seriesGroup.seriesType]) != null ? _b : countMap[_a] = 0;\n countMap[seriesGroup.seriesType] += seriesGroup.groupType === \"stack\" /* STACK */ ? 1 : seriesGroup.series.length;\n return countMap;\n }, {});\n return seriesGroups.flatMap(seriesGroup => {\n var _a, _b;\n (_b = groupIdx[_a = seriesGroup.seriesType]) != null ? _b : groupIdx[_a] = 0;\n switch (seriesGroup.groupType) {\n case \"stack\" /* STACK */:\n const groupIndex = groupIdx[seriesGroup.seriesType]++;\n return seriesGroup.series.map((series, stackIndex) => Object.assign(series, {\n seriesGrouping: {\n groupIndex,\n groupCount: groupCount2[seriesGroup.seriesType],\n stackIndex,\n stackCount: seriesGroup.series.length\n }\n }));\n case \"group\" /* GROUP */:\n return seriesGroup.series.map(series => Object.assign(series, {\n seriesGrouping: {\n groupIndex: groupIdx[seriesGroup.seriesType]++,\n groupCount: groupCount2[seriesGroup.seriesType],\n stackIndex: 0,\n stackCount: 0\n }\n }));\n }\n return seriesGroup.series;\n }).map(_a => {\n var _b = _a,\n {\n stacked: _,\n grouped: __\n } = _b,\n seriesOptions = __objRest(_b, [\"stacked\", \"grouped\"]);\n return seriesOptions;\n });\n }\n getSeriesGroupId(series) {\n var _a;\n return [series.type, series.xKey, series.stacked ? (_a = series.stackGroup) != null ? _a : \"stacked\" : \"grouped\"].filter(Boolean).join(\"-\");\n }\n getSeriesGrouping(allSeries) {\n const groupMap = /* @__PURE__ */new Map();\n return allSeries.reduce((result, series) => {\n const seriesType = series.type;\n if (!series.stacked && !series.grouped) {\n result.push({\n groupType: \"default\" /* DEFAULT */,\n seriesType,\n series: [series]\n });\n } else {\n const groupId = this.getSeriesGroupId(series);\n if (!groupMap.has(groupId)) {\n const groupType = series.stacked ? \"stack\" /* STACK */ : \"group\" /* GROUP */;\n const record = {\n groupType,\n seriesType,\n series: []\n };\n groupMap.set(groupId, record);\n result.push(record);\n }\n groupMap.get(groupId).series.push(series);\n }\n return result;\n }, []);\n }\n getDefaultSeriesType(options) {\n if (isAgCartesianChartOptions(options)) {\n return \"line\";\n } else if (isAgPolarChartOptions(options)) {\n return \"pie\";\n } else if (isAgHierarchyChartOptions(options)) {\n return \"treemap\";\n } else if (isAgTopologyChartOptions(options)) {\n return \"map-shape\";\n }\n throw new Error(\"Invalid chart options type detected.\");\n }\n getTooltipPositionDefaults(options) {\n var _a;\n const position = (_a = options.tooltip) == null ? void 0 : _a.position;\n if (!isPlainObject(position)) {\n return;\n }\n const {\n type,\n xOffset,\n yOffset\n } = position;\n const result = {};\n if (isString(type) && isEnumValue(AgTooltipPositionType, type)) {\n result.type = type;\n }\n if (isFiniteNumber(xOffset)) {\n result.xOffset = xOffset;\n }\n if (isFiniteNumber(yOffset)) {\n result.yOffset = yOffset;\n }\n return {\n tooltip: {\n position: result\n }\n };\n }\n deprecationWarnings(options) {\n const deprecatedArrayProps = {\n yKeys: \"yKey\",\n yNames: \"yName\"\n };\n Object.entries(deprecatedArrayProps).forEach(([oldProp, newProp]) => {\n var _a;\n if ((_a = options.series) == null ? void 0 : _a.some(s => s[oldProp] != null)) {\n Logger.warnOnce(`Property [series.${oldProp}] is deprecated, please use [series.${newProp}] and multiple series instead.`);\n }\n });\n }\n axesTypeIntegrity(options) {\n var _a;\n if (\"axes\" in options) {\n const axes = (_a = options.axes) != null ? _a : [];\n for (const {\n type\n } of axes) {\n if (!isAxisOptionType(type)) {\n delete options.axes;\n const expectedTypes = Array.from(axisRegistry.publicKeys()).join(\", \");\n Logger.warnOnce(`unknown axis type: ${type}; expected one of: ${expectedTypes}`);\n }\n }\n }\n }\n seriesTypeIntegrity(options) {\n var _a;\n const series = (_a = options.series) != null ? _a : [];\n options.series = series.filter(({\n type\n }) => {\n if (type == null || isSeriesOptionType(type) || isEnterpriseSeriesType(type)) {\n return true;\n }\n Logger.warnOnce(`unknown series type: ${type}; expected one of: ${publicChartTypes.seriesTypes.join(\", \")}`);\n });\n }\n soloSeriesIntegrity(options) {\n const allSeries = options.series;\n if (allSeries && allSeries.length > 1 && allSeries.some(series => seriesRegistry.isSolo(series.type))) {\n const mainSeriesType = this.optionsType(options);\n if (seriesRegistry.isSolo(mainSeriesType)) {\n Logger.warn(`series[0] of type '${mainSeriesType}' is incompatible with other series types. Only processing series[0]`);\n options.series = allSeries.slice(0, 1);\n } else {\n const {\n solo,\n nonSolo\n } = groupBy(allSeries, s => seriesRegistry.isSolo(s.type) ? \"solo\" : \"nonSolo\");\n const rejects = unique(solo.map(s => s.type)).join(\", \");\n Logger.warn(`Unable to mix these series types with the lead series type: ${rejects}`);\n options.series = nonSolo;\n }\n }\n }\n enableConfiguredOptions(options) {\n jsonWalk(this.userOptions, (visitingUserOpts, visitingMergedOpts) => {\n if (visitingMergedOpts && \"enabled\" in visitingMergedOpts && !visitingMergedOpts._enabledFromTheme && visitingUserOpts.enabled == null) {\n visitingMergedOpts.enabled = true;\n }\n }, {\n skip: [\"data\", \"theme\"]\n }, options);\n jsonWalk(options, visitingMergedOpts => {\n if (visitingMergedOpts._enabledFromTheme != null) {\n delete visitingMergedOpts._enabledFromTheme;\n }\n }, {\n skip: [\"data\", \"theme\"]\n });\n }\n removeDisabledOptions(options) {\n jsonWalk(options, optionsNode => {\n if (\"enabled\" in optionsNode && optionsNode.enabled === false) {\n Object.keys(optionsNode).forEach(key => {\n if (key === \"enabled\") return;\n delete optionsNode[key];\n });\n }\n }, {\n skip: [\"data\", \"theme\"]\n });\n }\n removeLeftoverSymbols(options) {\n jsonWalk(options, optionsNode => {\n if (!optionsNode || !isObject(optionsNode)) return;\n for (const [key, value] of Object.entries(optionsNode)) {\n if (isSymbol(value)) {\n delete optionsNode[key];\n }\n }\n }, {\n skip: [\"data\"]\n });\n }\n specialOverridesDefaults(options) {\n if (options.window != null) {\n setWindow(options.window);\n } else if (typeof window !== \"undefined\") {\n options.window = window;\n } else if (typeof global !== \"undefined\") {\n options.window = global.window;\n }\n if (options.document != null) {\n setDocument(options.document);\n } else if (typeof document !== \"undefined\") {\n options.document = document;\n } else if (typeof global !== \"undefined\") {\n options.document = global.document;\n }\n if (options.window == null) {\n throw new Error(\"AG Charts - unable to resolve global window\");\n }\n if (options.document == null) {\n throw new Error(\"AG Charts - unable to resolve global document\");\n }\n return options;\n }\n};\n\n// packages/ag-charts-community/src/util/deprecation.ts\nfunction createDeprecationWarning() {\n return (key, message) => {\n const msg = [`Property [${key}] is deprecated.`, message].filter(Boolean).join(\" \");\n Logger.warnOnce(msg);\n };\n}\nfunction Deprecated(message, opts) {\n const warnDeprecated = createDeprecationWarning();\n const def = opts == null ? void 0 : opts.default;\n return addTransformToInstanceProperty((_, key, value) => {\n if (value !== def) {\n warnDeprecated(key.toString(), message);\n }\n return value;\n });\n}\nfunction DeprecatedAndRenamedTo(newPropName, mapValue) {\n const warnDeprecated = createDeprecationWarning();\n return addTransformToInstanceProperty((target, key, value) => {\n if (value !== target[newPropName]) {\n warnDeprecated(key.toString(), `Use [${newPropName}] instead.`);\n setPath(target, newPropName, mapValue ? mapValue(value) : value);\n }\n return BREAK_TRANSFORM_CHAIN;\n }, (target, key) => {\n warnDeprecated(key.toString(), `Use [${newPropName}] instead.`);\n return getPath(target, newPropName);\n });\n}\n\n// packages/ag-charts-community/src/motion/fromToMotion.ts\nvar fromToMotion_exports = {};\n__export(fromToMotion_exports, {\n NODE_UPDATE_STATE_TO_PHASE_MAPPING: () => NODE_UPDATE_STATE_TO_PHASE_MAPPING,\n fromToMotion: () => fromToMotion,\n staticFromToMotion: () => staticFromToMotion\n});\n\n// packages/ag-charts-community/src/util/id.ts\nvar ID_MAP = /* @__PURE__ */new Map();\nfunction resetIds() {\n ID_MAP.clear();\n}\nfunction createId(instance) {\n var _a;\n const constructor = instance.constructor;\n const className = Object.hasOwn(constructor, \"className\") ? constructor.className : constructor.name;\n if (!className) {\n throw new Error(`The ${constructor} is missing the 'className' property.`);\n }\n const nextId = ((_a = ID_MAP.get(className)) != null ? _a : 0) + 1;\n ID_MAP.set(className, nextId);\n return `${className}-${nextId}`;\n}\n\n// packages/ag-charts-community/src/util/interpolating.ts\nvar interpolate = \"$interpolate\";\nvar isInterpolating = x => x[interpolate] != null;\n\n// packages/ag-charts-community/src/util/number.ts\nfunction clamp(min, value, max) {\n return Math.min(max, Math.max(min, value));\n}\nfunction clampArray(value, array) {\n const [min, max] = findMinMax(array);\n return clamp(min, value, max);\n}\nfunction findMinMax(array) {\n return array.length ? [Math.min(...array), Math.max(...array)] : [];\n}\nfunction findRangeExtent(array) {\n const [min, max] = findMinMax(array);\n return max - min;\n}\nfunction isEqual(a, b, epsilon2 = 1e-10) {\n return Math.abs(a - b) < epsilon2;\n}\nfunction isNegative(value) {\n return Math.sign(value) === -1 || Object.is(value, -0);\n}\nfunction round(value, decimals = 2) {\n const base = __pow(10, decimals);\n return Math.round(value * base) / base;\n}\nfunction toFixed(value, fractionOrSignificantDigits = 2) {\n const power = Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n if (power >= 0 || !isFinite(power)) {\n return value.toFixed(fractionOrSignificantDigits);\n }\n return value.toFixed(Math.abs(power) - 1 + fractionOrSignificantDigits);\n}\nfunction mod(n, m) {\n return Math.floor(n % m + (n < 0 ? m : 0));\n}\nfunction countFractionDigits(value, maximumFractionDigits = 10) {\n const [, decimal = \"\"] = (Math.abs(value) % 1).toLocaleString(\"en-GB\", {\n minimumFractionDigits: 0,\n maximumFractionDigits\n }).split(\".\");\n return decimal.length;\n}\n\n// packages/ag-charts-community/src/scene/nearest.ts\nfunction nearestSquared(x, y, objects, maxDistanceSquared = Infinity) {\n const result = {\n nearest: void 0,\n distanceSquared: maxDistanceSquared\n };\n for (const obj of objects) {\n const thisDistance = obj.distanceSquared(x, y);\n if (thisDistance === 0) {\n return {\n nearest: obj,\n distanceSquared: 0\n };\n } else if (thisDistance < result.distanceSquared) {\n result.nearest = obj;\n result.distanceSquared = thisDistance;\n }\n }\n return result;\n}\nfunction nearestSquaredInContainer(x, y, container, maxDistanceSquared = Infinity) {\n const {\n x: tx,\n y: ty\n } = container.transformPoint(x, y);\n const result = {\n nearest: void 0,\n distanceSquared: maxDistanceSquared\n };\n for (const child of container.children) {\n const {\n nearest,\n distanceSquared: distanceSquared2\n } = child.nearestSquared(tx, ty, result.distanceSquared);\n if (distanceSquared2 === 0) {\n return {\n nearest,\n distanceSquared: distanceSquared2\n };\n } else if (distanceSquared2 < result.distanceSquared) {\n result.nearest = nearest;\n result.distanceSquared = distanceSquared2;\n }\n }\n return result;\n}\n\n// packages/ag-charts-community/src/scene/bbox.ts\nvar _BBox = class _BBox {\n constructor(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n clone() {\n const {\n x,\n y,\n width,\n height\n } = this;\n return new _BBox(x, y, width, height);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y && this.width === other.width && this.height === other.height;\n }\n containsPoint(x, y) {\n return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height;\n }\n collidesBBox(other) {\n return this.x < other.x + other.width && this.x + this.width > other.x && this.y < other.y + other.height && this.y + this.height > other.y;\n }\n computeCenter() {\n return {\n x: this.x + this.width / 2,\n y: this.y + this.height / 2\n };\n }\n isFinite() {\n return Number.isFinite(this.x) && Number.isFinite(this.y) && Number.isFinite(this.width) && Number.isFinite(this.height);\n }\n distanceSquared(x, y) {\n if (this.containsPoint(x, y)) {\n return 0;\n }\n const dx = x - clamp(this.x, x, this.x + this.width);\n const dy = y - clamp(this.y, y, this.y + this.height);\n return dx * dx + dy * dy;\n }\n static nearestBox(x, y, boxes) {\n return nearestSquared(x, y, boxes);\n }\n clip(clipRect) {\n if (clipRect === void 0) return this;\n const x1 = Math.max(this.x, clipRect.x);\n const y1 = Math.max(this.y, clipRect.y);\n const x2 = Math.min(this.x + this.width, clipRect.x + clipRect.width);\n const y2 = Math.min(this.y + this.height, clipRect.y + clipRect.height);\n this.x = x1;\n this.y = y1;\n this.width = Math.max(0, x2 - x1);\n this.height = Math.max(0, y2 - y1);\n return this;\n }\n shrink(amount, position) {\n const apply = (pos, amt) => {\n switch (pos) {\n case \"top\":\n this.y += amt;\n case \"bottom\":\n this.height -= amt;\n break;\n case \"left\":\n this.x += amt;\n case \"right\":\n this.width -= amt;\n break;\n case \"vertical\":\n this.y += amt;\n this.height -= amt * 2;\n break;\n case \"horizontal\":\n this.x += amt;\n this.width -= amt * 2;\n break;\n case void 0:\n this.x += amt;\n this.width -= amt * 2;\n this.y += amt;\n this.height -= amt * 2;\n break;\n default:\n }\n };\n if (typeof amount === \"number\") {\n apply(position, amount);\n } else if (typeof amount === \"object\") {\n Object.entries(amount).forEach(([pos, amt]) => apply(pos, amt));\n }\n return this;\n }\n grow(amount, position) {\n if (typeof amount === \"number\") {\n this.shrink(-amount, position);\n } else {\n const paddingCopy = __spreadValues({}, amount);\n for (const key in paddingCopy) {\n paddingCopy[key] *= -1;\n }\n this.shrink(paddingCopy);\n }\n return this;\n }\n combine(other) {\n const {\n x,\n y,\n width,\n height\n } = this;\n this.x = Math.min(x, other.x);\n this.y = Math.min(y, other.y);\n this.width = Math.max(x + width, other.x + other.width) - this.x;\n this.height = Math.max(y + height, other.y + other.height) - this.y;\n }\n static merge(boxes) {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const box of boxes) {\n if (box.x < left) {\n left = box.x;\n }\n if (box.y < top) {\n top = box.y;\n }\n if (box.x + box.width > right) {\n right = box.x + box.width;\n }\n if (box.y + box.height > bottom) {\n bottom = box.y + box.height;\n }\n }\n return new _BBox(left, top, right - left, bottom - top);\n }\n [interpolate](other, d) {\n return new _BBox(this.x * (1 - d) + other.x * d, this.y * (1 - d) + other.y * d, this.width * (1 - d) + other.width * d, this.height * (1 - d) + other.height * d);\n }\n};\n_BBox.zero = new _BBox(0, 0, 0, 0);\n_BBox.NaN = new _BBox(NaN, NaN, NaN, NaN);\nvar BBox = _BBox;\n\n// packages/ag-charts-community/src/scene/changeDetectable.ts\nvar RedrawType = /* @__PURE__ */(RedrawType2 => {\n RedrawType2[RedrawType2[\"NONE\"] = 0] = \"NONE\";\n RedrawType2[RedrawType2[\"TRIVIAL\"] = 1] = \"TRIVIAL\";\n RedrawType2[RedrawType2[\"MINOR\"] = 2] = \"MINOR\";\n RedrawType2[RedrawType2[\"MAJOR\"] = 3] = \"MAJOR\";\n return RedrawType2;\n})(RedrawType || {});\nfunction functionConstructorAvailable() {\n try {\n new Function(\"return true\");\n return true;\n } catch (e) {\n return false;\n }\n}\nvar STRING_FUNCTION_USEABLE = functionConstructorAvailable();\nfunction SceneChangeDetection(opts) {\n const {\n changeCb,\n convertor\n } = opts != null ? opts : {};\n return function (target, key) {\n const privateKey = `__${key}`;\n if (target[key]) {\n return;\n }\n if (STRING_FUNCTION_USEABLE && changeCb == null && convertor == null) {\n prepareFastGetSet(target, key, privateKey, opts);\n } else {\n prepareSlowGetSet(target, key, privateKey, opts);\n }\n };\n}\nfunction prepareFastGetSet(target, key, privateKey, opts) {\n const {\n redraw = 1 /* TRIVIAL */,\n type = \"normal\",\n checkDirtyOnAssignment = false\n } = opts != null ? opts : {};\n const setterJs = new Function(\"value\", `\n const oldValue = this.${privateKey};\n if (value !== oldValue) {\n this.${privateKey} = value;\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 }\n ${checkDirtyOnAssignment ? `if (value != null && value._dirty > ${0 /* NONE */}) { this.markDirty(value, value._dirty); }` : \"\"}\n`);\n const getterJs = new Function(`return this.${privateKey};`);\n Object.defineProperty(target, key, {\n set: setterJs,\n get: getterJs,\n enumerable: true,\n configurable: true\n });\n}\nfunction prepareSlowGetSet(target, key, privateKey, opts) {\n const {\n redraw = 1 /* TRIVIAL */,\n type = \"normal\",\n changeCb,\n convertor,\n checkDirtyOnAssignment = false\n } = opts != null ? opts : {};\n const setter = function (value) {\n const 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 changeCb == null ? void 0 : changeCb(this);\n }\n if (checkDirtyOnAssignment && value != null && value._dirty > 0 /* NONE */) this.markDirty(value, value._dirty);\n };\n const 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}\nvar ChangeDetectable = class {\n constructor() {\n this._dirty = 3 /* MAJOR */;\n }\n markDirty(_source, type = 1 /* TRIVIAL */) {\n if (this._dirty < type) {\n this._dirty = type;\n }\n }\n markClean(_opts) {\n this._dirty = 0 /* NONE */;\n }\n isDirty() {\n return this._dirty > 0 /* NONE */;\n }\n};\n\n// packages/ag-charts-community/src/scene/matrix.ts\nvar _Matrix = class _Matrix {\n get e() {\n return [...this.elements];\n }\n constructor(elements3 = [1, 0, 0, 1, 0, 0]) {\n this.elements = elements3;\n }\n setElements(elements3) {\n const e = this.elements;\n e[0] = elements3[0];\n e[1] = elements3[1];\n e[2] = elements3[2];\n e[3] = elements3[3];\n e[4] = elements3[4];\n e[5] = elements3[5];\n return this;\n }\n get identity() {\n const 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 /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n AxB(A, B, C) {\n const 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 != null ? 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 multiplySelf(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 multiply(other) {\n const elements3 = new Array(6);\n this.AxB(this.elements, other.elements, elements3);\n return new _Matrix(elements3);\n }\n preMultiplySelf(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 inverse() {\n const el = this.elements;\n let a = el[0],\n b = el[1],\n c = el[2],\n d = el[3];\n const e = el[4],\n f = el[5];\n const rD = 1 / (a * d - b * c);\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 inverseTo(other) {\n const el = this.elements;\n let a = el[0],\n b = el[1],\n c = el[2],\n d = el[3];\n const e = el[4],\n f = el[5];\n const rD = 1 / (a * d - b * c);\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 invertSelf() {\n const el = this.elements;\n let a = el[0],\n b = el[1],\n c = el[2],\n d = el[3];\n const e = el[4],\n f = el[5];\n const rD = 1 / (a * d - b * c);\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 transformPoint(x, y) {\n const 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 transformBBox(bbox, target) {\n const elements3 = this.elements;\n const xx = elements3[0];\n const xy = elements3[1];\n const yx = elements3[2];\n const yy = elements3[3];\n const h_w = bbox.width * 0.5;\n const h_h = bbox.height * 0.5;\n const cx = bbox.x + h_w;\n const cy = bbox.y + h_h;\n const w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n const h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n if (!target) {\n target = new BBox(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements3[4] - w;\n target.y = cx * xy + cy * yy + elements3[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n }\n toContext(ctx) {\n if (this.identity) {\n return;\n }\n const e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n }\n static flyweight(sourceMatrix) {\n return _Matrix.instance.setElements(sourceMatrix.elements);\n }\n static updateTransformMatrix(matrix, scalingX, scalingY, rotation, translationX, translationY, opts) {\n const [bbcx, bbcy] = [0, 0];\n const sx = scalingX;\n const sy = scalingY;\n let scx;\n let scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n } else {\n scx = (opts == null ? void 0 : opts.scalingCenterX) == null ? bbcx : opts == null ? void 0 : opts.scalingCenterX;\n scy = (opts == null ? void 0 : opts.scalingCenterY) == null ? bbcy : opts == null ? void 0 : opts.scalingCenterY;\n }\n const r = rotation;\n const cos = Math.cos(r);\n const sin = Math.sin(r);\n let rcx;\n let rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n } else {\n rcx = (opts == null ? void 0 : opts.rotationCenterX) == null ? bbcx : opts == null ? void 0 : opts.rotationCenterX;\n rcy = (opts == null ? void 0 : opts.rotationCenterY) == null ? bbcy : opts == null ? void 0 : opts.rotationCenterY;\n }\n const tx = translationX;\n const ty = translationY;\n const tx4 = scx * (1 - sx) - rcx;\n const 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 static fromContext(ctx) {\n const domMatrix = ctx.getTransform();\n return new _Matrix([domMatrix.a, domMatrix.b, domMatrix.c, domMatrix.d, domMatrix.e, domMatrix.f]);\n }\n};\n_Matrix.instance = new _Matrix();\nvar Matrix = _Matrix;\n\n// packages/ag-charts-community/src/scene/node.ts\nvar PointerEvents = /* @__PURE__ */(PointerEvents2 => {\n PointerEvents2[PointerEvents2[\"All\"] = 0] = \"All\";\n PointerEvents2[PointerEvents2[\"None\"] = 1] = \"None\";\n return PointerEvents2;\n})(PointerEvents || {});\nvar _Node = class _Node extends ChangeDetectable {\n constructor({\n isVirtual,\n tag,\n zIndex\n } = {}) {\n super();\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(this);\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._virtualChildren = [];\n this._children = [];\n // Used to check for duplicate nodes.\n this.childSet = {};\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n this.matrix = new Matrix();\n this.dirtyTransform = false;\n this.scalingX = 1;\n this.scalingY = 1;\n this.scalingCenterX = null;\n this.scalingCenterY = null;\n this.rotationCenterX = null;\n this.rotationCenterY = null;\n this.rotation = 0;\n this.translationX = 0;\n this.translationY = 0;\n this._childNodeCounts = {\n groups: 0,\n nonGroups: 0\n };\n this.visible = true;\n this.dirtyZIndex = false;\n this.zIndex = 0;\n /** Discriminators for render order within a zIndex. */\n this.zIndexSubOrder = void 0;\n this.pointerEvents = 0 /* All */;\n this.isVirtual = isVirtual != null ? isVirtual : false;\n this.tag = tag != null ? tag : NaN;\n this.zIndex = zIndex != null ? zIndex : 0;\n }\n /**\n * Some arbitrary data bound to the node.\n */\n get datum() {\n var _a, _b;\n return (_b = this._datum) != null ? _b : (_a = this._parent) == null ? void 0 : _a.datum;\n }\n get previousDatum() {\n return this._previousDatum;\n }\n set datum(datum) {\n if (this._datum !== datum) {\n this._previousDatum = this._datum;\n }\n this._datum = datum;\n }\n _setLayerManager(value) {\n this._layerManager = value;\n this._debug = value == null ? void 0 : value.debug;\n for (const child of this._children) {\n child._setLayerManager(value);\n }\n for (const child of this._virtualChildren) {\n child._setLayerManager(value);\n }\n }\n get layerManager() {\n return this._layerManager;\n }\n *ancestors() {\n let node = this;\n while (node = node.parent) {\n yield node;\n }\n }\n *traverseUp() {\n yield this;\n yield* __yieldStar(this.ancestors());\n }\n get parent() {\n return this._parent;\n }\n get children() {\n return this._virtualChildren.length ? this._children.concat(this._virtualChildren.flatMap(next => next.children)) : this._children;\n }\n get virtualChildren() {\n return this._virtualChildren;\n }\n hasVirtualChildren() {\n return this._virtualChildren.length > 0;\n }\n // new Set()\n setProperties(styles, pickKeys) {\n const keys = pickKeys != null ? pickKeys : Object.keys(styles);\n for (const key of keys) {\n this[key] = styles[key];\n }\n return this;\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 append(nodes) {\n if (!Array.isArray(nodes)) {\n nodes = [nodes];\n }\n for (const node of nodes) {\n if (node.parent) {\n throw new Error(`${node} already belongs to another parent: ${node.parent}.`);\n }\n if (node.layerManager) {\n throw new Error(`${node} already belongs to a scene: ${node.layerManager}.`);\n }\n if (this.childSet[node.id]) {\n throw new Error(`Duplicate ${node.constructor.name} node: ${node}`);\n }\n if (node.isVirtual) {\n this._virtualChildren.push(node);\n } else {\n this._children.push(node);\n }\n this.childSet[node.id] = true;\n node._parent = this;\n node._setLayerManager(this.layerManager);\n }\n this.dirtyZIndex = true;\n this.markDirty(this, 3 /* MAJOR */);\n }\n appendChild(node) {\n this.append(node);\n return node;\n }\n removeChild(node) {\n const error = () => {\n throw new Error(`The node to be removed is not a child of this node.`);\n };\n if (node.parent !== this) {\n error();\n }\n if (node.isVirtual) {\n const i = this._virtualChildren.indexOf(node);\n if (i < 0) error();\n this._virtualChildren.splice(i, 1);\n } else {\n const i = this._children.indexOf(node);\n if (i < 0) error();\n this._children.splice(i, 1);\n }\n delete this.childSet[node.id];\n node._parent = void 0;\n node._setLayerManager();\n this.dirtyZIndex = true;\n this.markDirty(node, 3 /* MAJOR */);\n return node;\n }\n calculateCumulativeMatrix() {\n this.computeTransformMatrix();\n const matrix = Matrix.flyweight(this.matrix);\n for (const parent of this.ancestors()) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n }\n return matrix;\n }\n transformPoint(x, y) {\n const matrix = this.calculateCumulativeMatrix();\n return matrix.invertSelf().transformPoint(x, y);\n }\n inverseTransformPoint(x, y) {\n const matrix = this.calculateCumulativeMatrix();\n return matrix.transformPoint(x, y);\n }\n transformBBox(bbox) {\n const matrix = this.calculateCumulativeMatrix();\n return matrix.invertSelf().transformBBox(bbox);\n }\n inverseTransformBBox(bbox) {\n const matrix = this.calculateCumulativeMatrix();\n return matrix.transformBBox(bbox);\n }\n markDirtyTransform() {\n this.dirtyTransform = true;\n this.markDirty(this, 3 /* MAJOR */);\n }\n containsPoint(_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 pickNode(x, y) {\n var _a;\n if (!this.visible || this.pointerEvents === 1 /* None */ || !this.containsPoint(x, y)) {\n return;\n }\n const {\n children\n } = this;\n if (children.length > 1e3) {\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n const containsPoint = (_a = child.computeTransformedBBox()) == null ? void 0 : _a.containsPoint(x, y);\n const hit = containsPoint ? child.pickNode(x, y) : void 0;\n if (hit) {\n return hit;\n }\n }\n } else if (children.length) {\n for (let i = children.length - 1; i >= 0; i--) {\n const hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n } else if (!this.isContainerNode) {\n return this;\n }\n }\n getCachedBBox() {\n var _a;\n return (_a = this.cachedBBox) != null ? _a : BBox.zero;\n }\n computeBBox() {\n return;\n }\n computeTransformedBBox() {\n const bbox = this.computeBBox();\n if (!bbox) {\n return;\n }\n this.computeTransformMatrix();\n const matrix = Matrix.flyweight(this.matrix);\n for (const parent of this.ancestors()) {\n parent.computeTransformMatrix();\n matrix.preMultiplySelf(parent.matrix);\n }\n matrix.transformBBox(bbox, bbox);\n return bbox;\n }\n computeTransformMatrix() {\n if (!this.dirtyTransform) {\n return;\n }\n const {\n matrix,\n scalingX,\n scalingY,\n rotation,\n translationX,\n translationY,\n scalingCenterX,\n scalingCenterY,\n rotationCenterX,\n rotationCenterY\n } = this;\n Matrix.updateTransformMatrix(matrix, scalingX, scalingY, rotation, translationX, translationY, {\n scalingCenterX,\n scalingCenterY,\n rotationCenterX,\n rotationCenterY\n });\n this.dirtyTransform = false;\n }\n /** Perform any pre-rendering initialization. */\n preRender() {\n this._childNodeCounts.groups = 0;\n this._childNodeCounts.nonGroups = 1;\n for (const child of this.children) {\n const childCounts = child.preRender();\n this._childNodeCounts.groups += childCounts.groups;\n this._childNodeCounts.nonGroups += childCounts.nonGroups;\n }\n return this._childNodeCounts;\n }\n render(renderCtx) {\n const {\n stats\n } = renderCtx;\n this._dirty = 0 /* NONE */;\n this.cachedBBox = this.computeBBox();\n if (stats) {\n stats.nodesRendered++;\n }\n }\n markDirty(_source, type = 1 /* TRIVIAL */, parentType = type) {\n if (this._dirty > type || 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.layerManager) {\n this.layerManager.markDirty();\n }\n }\n get dirty() {\n return this._dirty;\n }\n markClean(opts) {\n const {\n force = false,\n recursive = true\n } = opts != null ? opts : {};\n if (this._dirty === 0 /* NONE */ && !force) {\n return;\n }\n this._dirty = 0 /* NONE */;\n if (recursive !== false) {\n for (const child of this._virtualChildren) {\n child.markClean({\n force\n });\n }\n }\n if (recursive === true) {\n for (const child of this._children) {\n child.markClean({\n force\n });\n }\n }\n }\n onVisibleChange() {}\n get nodeCount() {\n let count = 1;\n let dirtyCount = this._dirty >= 0 /* NONE */ || this.dirtyTransform ? 1 : 0;\n let visibleCount = this.visible ? 1 : 0;\n const countChild = child => {\n const {\n count: childCount,\n visibleCount: childVisibleCount,\n dirtyCount: childDirtyCount\n } = child.nodeCount;\n count += childCount;\n visibleCount += childVisibleCount;\n dirtyCount += childDirtyCount;\n };\n for (const child of this._children) {\n countChild(child);\n }\n for (const child of this._virtualChildren) {\n countChild(child);\n }\n return {\n count,\n visibleCount,\n dirtyCount\n };\n }\n onZIndexChange() {\n if (this.parent) {\n this.parent.dirtyZIndex = true;\n }\n }\n};\n_Node._nextSerialNumber = 0;\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"scalingX\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"scalingY\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"scalingCenterX\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"scalingCenterY\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"rotationCenterX\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"rotationCenterY\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"rotation\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"translationX\", 2);\n__decorateClass([SceneChangeDetection({\n type: \"transform\"\n})], _Node.prototype, \"translationY\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */,\n changeCb: target => target.onVisibleChange()\n})], _Node.prototype, \"visible\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 1 /* TRIVIAL */,\n changeCb: target => target.onZIndexChange()\n})], _Node.prototype, \"zIndex\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 1 /* TRIVIAL */,\n changeCb: target => target.onZIndexChange()\n})], _Node.prototype, \"zIndexSubOrder\", 2);\nvar Node = _Node;\n\n// packages/ag-charts-community/src/util/color.ts\nvar srgbToLinear = value => {\n const sign = value < 0 ? -1 : 1;\n const abs = Math.abs(value);\n if (abs <= 0.04045) return value / 12.92;\n return sign * __pow((abs + 0.055) / 1.055, 2.4);\n};\nvar srgbFromLinear = value => {\n const sign = value < 0 ? -1 : 1;\n const abs = Math.abs(value);\n if (abs > 31308e-7) {\n return sign * (1.055 * __pow(abs, 1 / 2.4) - 0.055);\n }\n return 12.92 * value;\n};\nvar _Color = class _Color {\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 constructor(r, g, b, a = 1) {\n this.r = clamp(0, r || 0, 1);\n this.g = clamp(0, g || 0, 1);\n this.b = clamp(0, b || 0, 1);\n this.a = clamp(0, a || 0, 1);\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 static validColorString(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 static fromString(str) {\n if (str.indexOf(\"#\") >= 0) {\n return _Color.fromHexString(str);\n }\n const hex = _Color.nameToHex[str.toLowerCase()];\n if (hex) {\n return _Color.fromHexString(hex);\n }\n if (str.indexOf(\"rgb\") >= 0) {\n return _Color.fromRgbaString(str);\n }\n throw new Error(`Invalid color string: '${str}'`);\n }\n static tryParseFromString(str) {\n try {\n return _Color.fromString(str);\n } catch (e) {\n Logger.warnOnce(`invalid color string: '${str}'.`);\n return _Color.fromArray([0, 0, 0]);\n }\n }\n // See https://drafts.csswg.org/css-color/#hex-notation\n static parseHex(input) {\n input = input.replace(/ /g, \"\").slice(1);\n let parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (let 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(p => parseInt(p, 16)).map(p => p + p * 16);\n break;\n }\n if ((parts == null ? void 0 : parts.length) >= 3 && parts.every(p => p >= 0)) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n static fromHexString(str) {\n const values = _Color.parseHex(str);\n if (values) {\n const [r, g, b, a] = values;\n return new _Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(`Malformed hexadecimal color string: '${str}'`);\n }\n static stringToRgba(str) {\n let [po, pc] = [NaN, NaN];\n for (let i = 0; i < str.length; i++) {\n const c = str[i];\n if (!po && c === \"(\") {\n po = i;\n } else if (c === \")\") {\n pc = i;\n break;\n }\n }\n const contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n const parts = contents.split(\",\");\n const rgba = [];\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n let value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf(\"%\") >= 0) {\n value = clamp(0, value, 100);\n value /= 100;\n } else if (i === 3) {\n value = clamp(0, value, 1);\n } else {\n value = clamp(0, value, 255);\n value /= 255;\n }\n rgba.push(value);\n }\n return rgba;\n }\n static fromRgbaString(str) {\n const 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 static fromArray(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 static fromHSB(h, s, b, alpha = 1) {\n const rgb = _Color.HSBtoRGB(h, s, b);\n return new _Color(rgb[0], rgb[1], rgb[2], alpha);\n }\n static fromHSL(h, s, l, alpha = 1) {\n const rgb = _Color.HSLtoRGB(h, s, l);\n return new _Color(rgb[0], rgb[1], rgb[2], alpha);\n }\n static fromOKLCH(l, c, h, alpha = 1) {\n const rgb = _Color.OKLCHtoRGB(l, c, h);\n return new _Color(rgb[0], rgb[1], rgb[2], alpha);\n }\n static padHex(str) {\n return str.length === 1 ? \"0\" + str : str;\n }\n toHexString() {\n let 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 toRgbaString(fractionDigits = 3) {\n const components = [Math.round(this.r * 255), Math.round(this.g * 255), Math.round(this.b * 255)];\n const 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 toString() {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n }\n toHSB() {\n return _Color.RGBtoHSB(this.r, this.g, this.b);\n }\n static RGBtoOKLCH(r, g, b) {\n const LSRGB0 = srgbToLinear(r);\n const LSRGB1 = srgbToLinear(g);\n const LSRGB2 = srgbToLinear(b);\n const LMS0 = Math.cbrt(0.4122214708 * LSRGB0 + 0.5363325363 * LSRGB1 + 0.0514459929 * LSRGB2);\n const LMS1 = Math.cbrt(0.2119034982 * LSRGB0 + 0.6806995451 * LSRGB1 + 0.1073969566 * LSRGB2);\n const LMS2 = Math.cbrt(0.0883024619 * LSRGB0 + 0.2817188376 * LSRGB1 + 0.6299787005 * LSRGB2);\n const OKLAB0 = 0.2104542553 * LMS0 + 0.793617785 * LMS1 - 0.0040720468 * LMS2;\n const OKLAB1 = 1.9779984951 * LMS0 - 2.428592205 * LMS1 + 0.4505937099 * LMS2;\n const OKLAB2 = 0.0259040371 * LMS0 + 0.7827717662 * LMS1 - 0.808675766 * LMS2;\n const hue = Math.atan2(OKLAB2, OKLAB1) * 180 / Math.PI;\n const OKLCH0 = OKLAB0;\n const OKLCH1 = Math.hypot(OKLAB1, OKLAB2);\n const OKLCH2 = hue >= 0 ? hue : hue + 360;\n return [OKLCH0, OKLCH1, OKLCH2];\n }\n static OKLCHtoRGB(l, c, h) {\n const OKLAB0 = l;\n const OKLAB1 = c * Math.cos(h * Math.PI / 180);\n const OKLAB2 = c * Math.sin(h * Math.PI / 180);\n const LMS0 = __pow(OKLAB0 + 0.3963377774 * OKLAB1 + 0.2158037573 * OKLAB2, 3);\n const LMS1 = __pow(OKLAB0 - 0.1055613458 * OKLAB1 - 0.0638541728 * OKLAB2, 3);\n const LMS2 = __pow(OKLAB0 - 0.0894841775 * OKLAB1 - 1.291485548 * OKLAB2, 3);\n const LSRGB0 = 4.0767416621 * LMS0 - 3.3077115913 * LMS1 + 0.2309699292 * LMS2;\n const LSRGB1 = -1.2684380046 * LMS0 + 2.6097574011 * LMS1 - 0.3413193965 * LMS2;\n const LSRGB2 = -0.0041960863 * LMS0 - 0.7034186147 * LMS1 + 1.707614701 * LMS2;\n const SRGB0 = srgbFromLinear(LSRGB0);\n const SRGB1 = srgbFromLinear(LSRGB1);\n const SRGB2 = srgbFromLinear(LSRGB2);\n return [SRGB0, SRGB1, SRGB2];\n }\n static RGBtoHSL(r, g, b) {\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const l = (max + min) / 2;\n let h;\n let s;\n if (max === min) {\n h = NaN;\n s = 0;\n } else {\n const delta2 = max - min;\n s = l > 0.5 ? delta2 / (2 - max - min) : delta2 / (max + min);\n if (max === r) {\n h = (g - b) / delta2 + (g < b ? 6 : 0);\n } else if (max === g) {\n h = (b - r) / delta2 + 2;\n } else {\n h = (r - g) / delta2 + 4;\n }\n h *= 360 / 6;\n }\n return [h, s, l];\n }\n static HSLtoRGB(h, s, l) {\n if (s === 0) {\n return [l, l, l];\n }\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n function hueToRgb(t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n const r = hueToRgb(h / 360 + 1 / 3);\n const g = hueToRgb(h / 360);\n const b = hueToRgb(h / 360 - 1 / 3);\n return [r, g, 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 static RGBtoHSB(r, g, b) {\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const S = max === 0 ? 0 : (max - min) / max;\n let H = NaN;\n if (min !== max) {\n const delta2 = max - min;\n const rc = (max - r) / delta2;\n const gc = (max - g) / delta2;\n const bc = (max - b) / delta2;\n if (r === max) {\n H = bc - gc;\n } else if (g === max) {\n H = 2 + rc - bc;\n } else {\n H = 4 + gc - rc;\n }\n H /= 6;\n if (H < 0) {\n H = H + 1;\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 static HSBtoRGB(H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (H % 360 + 360) % 360 / 360;\n let r = 0;\n let g = 0;\n let b = 0;\n if (S === 0) {\n r = g = b = B;\n } else {\n const h = (H - Math.floor(H)) * 6;\n const f = h - Math.floor(h);\n const p = B * (1 - S);\n const q = B * (1 - S * f);\n const t = B * (1 - S * (1 - f));\n switch (h >> 0) {\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 derive(hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n const hsb = _Color.RGBtoHSB(this.r, this.g, this.b);\n let b = hsb[2];\n if (b == 0 && brightnessFactor > 1) {\n b = 0.05;\n }\n const h = ((hsb[0] + hueShift) % 360 + 360) % 360;\n const s = clamp(0, hsb[1] * saturationFactor, 1);\n b = clamp(0, b * brightnessFactor, 1);\n const a = clamp(0, this.a * opacityFactor, 1);\n const rgba = _Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return _Color.fromArray(rgba);\n }\n brighter() {\n return this.derive(0, 1, 1 / 0.7, 1);\n }\n darker() {\n return this.derive(0, 1, 0.7, 1);\n }\n static interpolate(color, other) {\n const c0 = _Color.tryParseFromString(color);\n const c1 = _Color.tryParseFromString(other);\n return t => {\n const i = (x, y) => x * (1 - t) + y * t;\n const c = new _Color(i(c0.r, c1.r), i(c0.g, c1.g), i(c0.b, c1.b), i(c0.a, c1.a));\n return c.toString();\n };\n }\n};\n_Color.didDebug = false;\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});\nvar Color = _Color;\n\n// packages/ag-charts-community/src/util/interpolate.ts\nfunction interpolateNumber(a, b) {\n return d => Number(a) * (1 - d) + Number(b) * d;\n}\nfunction interpolateColor(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 const red = interpolateNumber(a.r, b.r);\n const green = interpolateNumber(a.g, b.g);\n const blue = interpolateNumber(a.b, b.b);\n const alpha = interpolateNumber(a.a, b.a);\n return d => Color.fromArray([red(d), green(d), blue(d), alpha(d)]).toRgbaString();\n}\n\n// packages/ag-charts-community/src/motion/easing.ts\nvar easing_exports = {};\n__export(easing_exports, {\n easeIn: () => easeIn,\n easeInOut: () => easeInOut,\n easeInOutQuad: () => easeInOutQuad,\n easeInQuad: () => easeInQuad,\n easeOut: () => easeOut,\n easeOutQuad: () => easeOutQuad,\n inverseEaseOut: () => inverseEaseOut,\n linear: () => linear\n});\nvar linear = n => n;\nvar easeIn = n => 1 - Math.cos(n * Math.PI / 2);\nvar easeOut = n => Math.sin(n * Math.PI / 2);\nvar easeInOut = n => -(Math.cos(n * Math.PI) - 1) / 2;\nvar easeInQuad = n => n * n;\nvar easeOutQuad = n => 1 - __pow(1 - n, 2);\nvar easeInOutQuad = n => n < 0.5 ? 2 * n * n : 1 - __pow(-2 * n + 2, 2) / 2;\nvar inverseEaseOut = x => 2 * Math.asin(x) / Math.PI;\n\n// packages/ag-charts-community/src/motion/animation.ts\nvar QUICK_TRANSITION = 0.2;\nvar PHASE_ORDER = [\"initial\", \"remove\", \"update\", \"add\", \"trailing\", \"end\", \"none\"];\nvar PHASE_METADATA = {\n initial: {\n animationDuration: 1,\n animationDelay: 0\n },\n add: {\n animationDuration: 0.25,\n animationDelay: 0.75\n },\n remove: {\n animationDuration: 0.25,\n animationDelay: 0\n },\n update: {\n animationDuration: 0.5,\n animationDelay: 0.25\n },\n trailing: {\n animationDuration: QUICK_TRANSITION,\n animationDelay: 1,\n skipIfNoEarlierAnimations: true\n },\n end: {\n animationDelay: 1 + QUICK_TRANSITION,\n animationDuration: 0,\n skipIfNoEarlierAnimations: true\n },\n none: {\n animationDuration: 0,\n animationDelay: 0\n }\n};\nvar RepeatType = /* @__PURE__ */(RepeatType2 => {\n RepeatType2[\"Loop\"] = \"loop\";\n RepeatType2[\"Reverse\"] = \"reverse\";\n return RepeatType2;\n})(RepeatType || {});\nfunction isNodeArray(array) {\n return array.every(n => n instanceof Node);\n}\nfunction deconstructSelectionsOrNodes(selectionsOrNodes) {\n return isNodeArray(selectionsOrNodes) ? {\n nodes: selectionsOrNodes,\n selections: []\n } : {\n nodes: [],\n selections: selectionsOrNodes\n };\n}\nvar Animation = class {\n constructor(opts) {\n this.isComplete = false;\n this.elapsed = 0;\n this.iteration = 0;\n this.isPlaying = false;\n this.isReverse = false;\n var _a, _b, _c, _d, _e, _f, _g;\n this.id = opts.id;\n this.groupId = opts.groupId;\n this.autoplay = (_a = opts.autoplay) != null ? _a : true;\n this.ease = (_b = opts.ease) != null ? _b : linear;\n this.phase = opts.phase;\n const durationProportion = (_c = opts.duration) != null ? _c : PHASE_METADATA[this.phase].animationDuration;\n this.duration = durationProportion * opts.defaultDuration;\n this.delay = ((_d = opts.delay) != null ? _d : 0) * opts.defaultDuration;\n this.onComplete = opts.onComplete;\n this.onPlay = opts.onPlay;\n this.onStop = opts.onStop;\n this.onUpdate = opts.onUpdate;\n this.interpolate = this.createInterpolator(opts.from, opts.to);\n this.from = opts.from;\n if (opts.skip === true) {\n (_e = this.onUpdate) == null ? void 0 : _e.call(this, opts.to, false, this);\n (_f = this.onStop) == null ? void 0 : _f.call(this, this);\n (_g = this.onComplete) == null ? void 0 : _g.call(this, this);\n this.isComplete = true;\n }\n if (opts.collapsable !== false) {\n this.duration = this.checkCollapse(opts, this.duration);\n }\n }\n checkCollapse(opts, calculatedDuration) {\n if (opts.from === opts.to) return 0;\n const diff2 = typeof opts.from === \"object\" ? jsonDiff(opts.from, opts.to) : null;\n if (diff2) {\n return calculatedDuration;\n }\n return 0;\n }\n play(initialUpdate = false) {\n var _a, _b;\n if (this.isPlaying || this.isComplete) return;\n this.isPlaying = true;\n (_a = this.onPlay) == null ? void 0 : _a.call(this, this);\n if (!this.autoplay) return;\n this.autoplay = false;\n if (!initialUpdate) return;\n (_b = this.onUpdate) == null ? void 0 : _b.call(this, this.from, true, this);\n }\n pause() {\n this.isPlaying = false;\n }\n stop() {\n var _a;\n this.isPlaying = false;\n if (!this.isComplete) {\n this.isComplete = true;\n (_a = this.onStop) == null ? void 0 : _a.call(this, this);\n }\n }\n update(time2) {\n var _a, _b;\n if (this.isComplete) return time2;\n if (!this.isPlaying && this.autoplay) {\n this.play(true);\n }\n const previousElapsed = this.elapsed;\n this.elapsed += time2;\n if (this.delay > this.elapsed) return 0;\n const value = this.interpolate(this.isReverse ? 1 - this.delta : this.delta);\n (_a = this.onUpdate) == null ? void 0 : _a.call(this, value, false, this);\n const totalDuration = this.delay + this.duration;\n if (this.elapsed >= totalDuration) {\n this.stop();\n this.isComplete = true;\n (_b = this.onComplete) == null ? void 0 : _b.call(this, this);\n return time2 - (totalDuration - previousElapsed);\n }\n return 0;\n }\n get delta() {\n return this.ease(clamp(0, (this.elapsed - this.delay) / this.duration, 1));\n }\n createInterpolator(from, to) {\n if (typeof to !== \"object\" || isInterpolating(to)) {\n return this.interpolateValue(from, to);\n }\n const interpolatorEntries = [];\n for (const key in to) {\n const interpolator = this.interpolateValue(from[key], to[key]);\n if (interpolator != null) {\n interpolatorEntries.push([key, interpolator]);\n }\n }\n return d => {\n const result = {};\n for (const [key, interpolator] of interpolatorEntries) {\n result[key] = interpolator(d);\n }\n return result;\n };\n }\n interpolateValue(a, b) {\n if (a === void 0 || b === void 0) {\n return;\n } else if (isInterpolating(a)) {\n return d => a[interpolate](b, d);\n }\n try {\n switch (typeof a) {\n case \"number\":\n return interpolateNumber(a, b);\n case \"string\":\n return interpolateColor(a, b);\n case \"boolean\":\n if (a === b) return () => a;\n break;\n }\n } catch (e) {}\n throw new Error(`Unable to interpolate values: ${a}, ${b}`);\n }\n};\n\n// packages/ag-charts-community/src/motion/fromToMotion.ts\nvar NODE_UPDATE_STATE_TO_PHASE_MAPPING = {\n added: \"add\",\n updated: \"update\",\n removed: \"remove\",\n unknown: \"initial\",\n \"no-op\": \"none\"\n};\nfunction fromToMotion(groupId, subId, animationManager, selectionsOrNodes, fns, getDatumId, diff2) {\n const {\n fromFn,\n toFn,\n intermediateFn\n } = fns;\n const {\n nodes,\n selections\n } = deconstructSelectionsOrNodes(selectionsOrNodes);\n const processNodes = (liveNodes, subNodes) => {\n var _c;\n let prevFromProps;\n let liveNodeIndex = 0;\n let nodeIndex = 0;\n for (const node of subNodes) {\n const isLive = liveNodes[liveNodeIndex] === node;\n const ctx = {\n last: nodeIndex >= subNodes.length - 1,\n lastLive: liveNodeIndex >= liveNodes.length - 1,\n prev: subNodes[nodeIndex - 1],\n prevFromProps,\n prevLive: liveNodes[liveNodeIndex - 1],\n next: subNodes[nodeIndex + 1],\n nextLive: liveNodes[liveNodeIndex + (isLive ? 1 : 0)]\n };\n const animationId = `${groupId}_${subId}_${node.id}`;\n animationManager.stopByAnimationId(animationId);\n let status = \"unknown\";\n if (!isLive) {\n status = \"removed\";\n } else if (getDatumId && diff2) {\n status = calculateStatus(node, node.datum, getDatumId, diff2);\n }\n const _a = fromFn(node, node.datum, status, ctx),\n {\n phase,\n start,\n finish,\n delay,\n duration\n } = _a,\n from = __objRest(_a, [\"phase\", \"start\", \"finish\", \"delay\", \"duration\"]);\n const _b = toFn(node, node.datum, status, ctx),\n {\n phase: toPhase,\n start: toStart,\n finish: toFinish,\n delay: toDelay,\n duration: toDuration\n } = _b,\n to = __objRest(_b, [\"phase\", \"start\", \"finish\", \"delay\", \"duration\"]);\n const collapsable = finish == null && toFinish == null;\n animationManager.animate({\n id: animationId,\n groupId,\n phase: (_c = phase != null ? phase : toPhase) != null ? _c : \"update\",\n duration: duration != null ? duration : toDuration,\n delay: delay != null ? delay : toDelay,\n from,\n to,\n ease: easeOut,\n collapsable,\n onPlay: () => {\n node.setProperties(__spreadValues(__spreadValues({}, start), toStart));\n },\n onUpdate(props) {\n node.setProperties(props);\n if (intermediateFn) {\n node.setProperties(intermediateFn(node, node.datum, status, ctx));\n }\n },\n onStop: () => {\n node.setProperties(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, start), toStart), from), to), finish), toFinish));\n }\n });\n if (isLive) {\n liveNodeIndex++;\n }\n nodeIndex++;\n prevFromProps = from;\n }\n };\n let selectionIndex = 0;\n for (const selection of selections) {\n const selectionNodes = selection.nodes();\n const liveNodes = selectionNodes.filter(n => !selection.isGarbage(n));\n processNodes(liveNodes, selectionNodes);\n animationManager.animate({\n id: `${groupId}_${subId}_selection_${selectionIndex}`,\n groupId,\n phase: \"end\",\n from: 0,\n to: 1,\n ease: easeOut,\n onStop() {\n selection.cleanup();\n }\n });\n selectionIndex++;\n }\n processNodes(nodes, nodes);\n}\nfunction staticFromToMotion(groupId, subId, animationManager, selectionsOrNodes, from, to, extraOpts) {\n const {\n nodes,\n selections\n } = deconstructSelectionsOrNodes(selectionsOrNodes);\n const {\n start,\n finish,\n phase\n } = extraOpts;\n const collapsable = finish == null;\n animationManager.animate({\n id: `${groupId}_${subId}`,\n groupId,\n phase: phase != null ? phase : \"update\",\n from,\n to,\n ease: easeOut,\n collapsable,\n onPlay: () => {\n if (!start) return;\n for (const node of nodes) {\n node.setProperties(start);\n }\n for (const selection of selections) {\n for (const node of selection.nodes()) {\n node.setProperties(start);\n }\n }\n },\n onUpdate(props) {\n for (const node of nodes) {\n node.setProperties(props);\n }\n for (const selection of selections) {\n for (const node of selection.nodes()) {\n node.setProperties(props);\n }\n }\n },\n onStop: () => {\n for (const node of nodes) {\n node.setProperties(__spreadValues(__spreadValues({}, to), finish));\n }\n for (const selection of selections) {\n for (const node of selection.nodes()) {\n node.setProperties(__spreadValues(__spreadValues({}, to), finish));\n }\n }\n }\n });\n}\nfunction calculateStatus(node, datum, getDatumId, diff2) {\n const id = getDatumId(node, datum);\n if (diff2.added.has(id)) {\n return \"added\";\n }\n if (diff2.removed.has(id)) {\n return \"removed\";\n }\n return \"updated\";\n}\n\n// packages/ag-charts-community/src/util/angle.ts\nvar twoPi = Math.PI * 2;\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}\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 isBetweenAngles(targetAngle, startAngle, endAngle) {\n const t = normalizeAngle360(targetAngle);\n const a0 = normalizeAngle360(startAngle);\n const a1 = normalizeAngle360Inclusive(endAngle);\n if (a0 <= a1) {\n return a0 <= t && t <= a1;\n } else {\n return a0 <= t || t <= a1;\n }\n}\nfunction toRadians(degrees) {\n return degrees / 180 * Math.PI;\n}\nfunction toDegrees(radians) {\n return radians / Math.PI * 180;\n}\nfunction angleBetween(angle0, angle1) {\n angle0 = normalizeAngle360(angle0);\n angle1 = normalizeAngle360(angle1);\n return angle1 - angle0 + (angle0 > angle1 ? 2 * Math.PI : 0);\n}\nfunction displacePointFromVector(centerX, centerY, radius, angle) {\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n return {\n x,\n y\n };\n}\n\n// packages/ag-charts-community/src/scale/invalidating.ts\nvar Invalidating = (target, propertyKey) => {\n const mappedProperty = Symbol(String(propertyKey));\n target[mappedProperty] = void 0;\n Object.defineProperty(target, propertyKey, {\n get() {\n return this[mappedProperty];\n },\n set(newValue) {\n const oldValue = this[mappedProperty];\n if (oldValue !== newValue) {\n this[mappedProperty] = newValue;\n this.invalid = true;\n }\n },\n enumerable: true,\n configurable: false\n });\n};\n\n// packages/ag-charts-community/src/scale/bandScale.ts\nvar _BandScale = class _BandScale {\n constructor() {\n this.type = \"band\";\n this.invalid = true;\n this.interval = void 0;\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 = /* @__PURE__ */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._step = 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 static is(value) {\n return value instanceof _BandScale;\n }\n refresh() {\n if (!this.invalid) return;\n this.invalid = false;\n this.update();\n if (this.invalid) {\n Logger.warnOnce(\"Expected update to not invalidate scale\");\n }\n }\n set domain(values) {\n this.invalid = true;\n const domain = [];\n this.index = /* @__PURE__ */new Map();\n const index = this.index;\n values.forEach(value => {\n if (this.getIndex(value) === void 0) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this._domain = domain;\n }\n get domain() {\n return this._domain;\n }\n ticks() {\n this.refresh();\n let {\n interval = 1\n } = this;\n if (typeof interval !== \"number\") {\n interval = Number(interval);\n }\n const step = Math.abs(Math.round(interval));\n return this._domain.filter((_, i) => i % step === 0);\n }\n convert(d) {\n this.refresh();\n const i = this.getIndex(d);\n if (i === void 0) {\n return NaN;\n }\n const r = this.ordinalRange[i];\n if (r === void 0) {\n return NaN;\n }\n return r;\n }\n invert(position) {\n this.refresh();\n const index = this.ordinalRange.findIndex(p => p === position);\n return this.domain[index];\n }\n invertNearest(position) {\n var _a;\n this.refresh();\n let nearest = -1;\n let minDistance = Infinity;\n const index = this.ordinalRange.findIndex((p, i) => {\n if (p === position) return true;\n const distance2 = Math.abs(position - p);\n if (distance2 < minDistance) {\n minDistance = distance2;\n nearest = i;\n }\n return false;\n });\n return (_a = this.domain[index]) != null ? _a : this.domain[nearest];\n }\n get bandwidth() {\n this.refresh();\n return this._bandwidth;\n }\n get step() {\n this.refresh();\n return this._step;\n }\n get rawBandwidth() {\n this.refresh();\n return this._rawBandwidth;\n }\n set padding(value) {\n value = clamp(0, value, 1);\n this._paddingInner = value;\n this._paddingOuter = value;\n }\n get padding() {\n return this._paddingInner;\n }\n set paddingInner(value) {\n this._paddingInner = clamp(0, value, 1);\n }\n get paddingInner() {\n return this._paddingInner;\n }\n set paddingOuter(value) {\n this._paddingOuter = clamp(0, value, 1);\n }\n get paddingOuter() {\n return this._paddingOuter;\n }\n update() {\n const count = this._domain.length;\n if (count === 0) {\n return;\n }\n const round3 = this.round;\n const paddingInner = this._paddingInner;\n const paddingOuter = this._paddingOuter;\n const [r0, r1] = this.range;\n const width = r1 - r0;\n const rawStep = width / Math.max(1, count + 2 * paddingOuter - paddingInner);\n const step = round3 ? Math.floor(rawStep) : rawStep;\n const fullBandWidth = step * (count - paddingInner);\n const x0 = r0 + (width - fullBandWidth) / 2;\n const start = round3 ? Math.round(x0) : x0;\n const bw = step * (1 - paddingInner);\n const bandwidth = round3 ? Math.round(bw) : bw;\n const rawBandwidth = rawStep * (1 - paddingInner);\n const values = [];\n for (let i = 0; i < count; i++) {\n values.push(start + step * i);\n }\n this._bandwidth = bandwidth;\n this._rawBandwidth = rawBandwidth;\n this._step = step;\n this.ordinalRange = values;\n }\n getIndex(value) {\n if (!(value instanceof Date)) {\n return this.index.get(value);\n }\n const valueOf = value.valueOf();\n let index = 0;\n for (const key of this.index.keys()) {\n if (key instanceof Date && key.valueOf() === valueOf) {\n return index;\n }\n index++;\n }\n }\n};\n__decorateClass([Invalidating], _BandScale.prototype, \"interval\", 2);\n__decorateClass([Invalidating], _BandScale.prototype, \"range\", 2);\n__decorateClass([Invalidating], _BandScale.prototype, \"round\", 2);\nvar BandScale = _BandScale;\n\n// packages/ag-charts-community/src/util/default.ts\nfunction Default(defaultValue, replaces = [void 0]) {\n return addTransformToInstanceProperty((_, __, v) => {\n if (replaces.includes(v)) {\n return isFunction(defaultValue) ? defaultValue(v) : defaultValue;\n }\n return v;\n });\n}\n\n// packages/ag-charts-community/src/util/validation.ts\nfunction Validate(predicate, options = {}) {\n const {\n optional = false,\n property: overrideProperty\n } = options;\n return addTransformToInstanceProperty((target, property, value) => {\n var _a;\n const context = __spreadProps(__spreadValues({}, options), {\n target,\n property\n });\n if (optional && typeof value === \"undefined\" || predicate(value, context)) {\n if (isProperties(target[property]) && !isProperties(value)) {\n target[property].set(value);\n return target[property];\n }\n return value;\n }\n const cleanKey = overrideProperty != null ? overrideProperty : String(property).replace(/^_*/, \"\");\n const targetName = (_a = target.constructor.className) != null ? _a : target.constructor.name.replace(/Properties$/, \"\");\n let valueString = stringify(value);\n const maxLength = 50;\n if (valueString != null && valueString.length > maxLength) {\n const excessCharacters = valueString.length - maxLength;\n valueString = valueString.slice(0, maxLength) + `... (+${excessCharacters} characters)`;\n }\n Logger.warn(`Property [${cleanKey}] of [${targetName}] cannot be set to [${valueString}]${predicate.message ? `; expecting ${getPredicateMessage(predicate, context)}` : \"\"}, ignoring.`);\n return BREAK_TRANSFORM_CHAIN;\n }, void 0, {\n optional\n });\n}\nvar AND = (...predicates) => {\n const messages = [];\n return predicateWithMessage((value, ctx) => {\n messages.length = 0;\n return predicates.every(predicate => {\n const isValid = predicate(value, ctx);\n if (!isValid) {\n messages.push(getPredicateMessage(predicate, ctx));\n }\n return isValid;\n });\n }, () => messages.filter(Boolean).join(\" AND \"));\n};\nvar OR = (...predicates) => predicateWithMessage((value, ctx) => predicates.some(predicate => predicate(value, ctx)), ctx => predicates.map(getPredicateMessageMapper(ctx)).filter(Boolean).join(\" OR \"));\nvar OBJECT = attachObjectRestrictions(predicateWithMessage((value, ctx) => isProperties(value) || isObject(value) && isProperties(ctx.target[ctx.property]), \"a properties object\"));\nvar PLAIN_OBJECT = attachObjectRestrictions(predicateWithMessage(value => isObject(value), \"an object\"));\nvar BOOLEAN = predicateWithMessage(isBoolean, \"a boolean\");\nvar FUNCTION = predicateWithMessage(isFunction, \"a function\");\nvar STRING = predicateWithMessage(isString, \"a string\");\nvar NUMBER = attachNumberRestrictions(predicateWithMessage(isFiniteNumber, \"a number\"));\nvar NAN = predicateWithMessage(value => isNumber(value) && isNaN(value), \"NaN\");\nvar POSITIVE_NUMBER = NUMBER.restrict({\n min: 0\n});\nvar RATIO = NUMBER.restrict({\n min: 0,\n max: 1\n});\nvar DEGREE = NUMBER.restrict({\n min: -360,\n max: 360\n});\nvar NUMBER_OR_NAN = OR(NUMBER, NAN);\nvar ARRAY = attachArrayRestrictions(predicateWithMessage(isArray, \"an array\"));\nvar ARRAY_OF = (predicate, message) => predicateWithMessage((value, ctx) => isArray(value) && value.every(item => predicate(item, ctx)), ctx => {\n var _a;\n const arrayMessage = (_a = getPredicateMessage(ARRAY, ctx)) != null ? _a : \"\";\n return message ? `${arrayMessage} of ${message}` : arrayMessage;\n});\nvar isComparable = value => isFiniteNumber(value) || isValidDate(value);\nvar LESS_THAN = otherField => predicateWithMessage((v, ctx) => !isComparable(v) || !isComparable(ctx.target[otherField]) || v < ctx.target[otherField], `to be less than ${otherField}`);\nvar GREATER_THAN = otherField => predicateWithMessage((v, ctx) => !isComparable(v) || !isComparable(ctx.target[otherField]) || v > ctx.target[otherField], `to be greater than ${otherField}`);\nvar DATE = predicateWithMessage(isValidDate, \"Date object\");\nvar DATE_OR_DATETIME_MS = OR(DATE, POSITIVE_NUMBER);\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(v => isString(v) && Color.validColorString(v), `color String. ${colorMessage}`);\nvar COLOR_STRING_ARRAY = predicateWithMessage(ARRAY_OF(COLOR_STRING), `color strings. ${colorMessage}`);\nvar BOOLEAN_ARRAY = ARRAY_OF(BOOLEAN, \"boolean values\");\nvar NUMBER_ARRAY = ARRAY_OF(NUMBER, \"numbers\");\nvar STRING_ARRAY = ARRAY_OF(STRING, \"strings\");\nvar DATE_ARRAY = predicateWithMessage(ARRAY_OF(DATE), \"Date objects\");\nvar OBJECT_ARRAY = predicateWithMessage(ARRAY_OF(OBJECT), \"objects\");\nvar LINE_CAP = UNION([\"butt\", \"round\", \"square\"], \"a line cap\");\nvar LINE_JOIN = UNION([\"round\", \"bevel\", \"miter\"], \"a line join\");\nvar LINE_DASH = predicateWithMessage(ARRAY_OF(POSITIVE_NUMBER), \"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 POSITION2 = UNION([\"top\", \"right\", \"bottom\", \"left\"], \"a position\");\nvar FONT_STYLE = UNION([\"normal\", \"italic\", \"oblique\"], \"a font style\");\nvar FONT_WEIGHT2 = OR(UNION([\"normal\", \"bold\", \"bolder\", \"lighter\"], \"a font weight\"), NUMBER.restrict({\n min: 1,\n max: 1e3\n}));\nvar TEXT_WRAP = UNION([\"never\", \"always\", \"hyphenate\", \"on-space\"], \"a text wrap strategy\");\nvar TEXT_ALIGN = UNION([\"left\", \"center\", \"right\"], \"a text align\");\nvar VERTICAL_ALIGN = UNION([\"top\", \"middle\", \"bottom\"], \"a vertical align\");\nvar OVERFLOW_STRATEGY = UNION([\"ellipsis\", \"hide\"], \"an overflow strategy\");\nvar DIRECTION = UNION([\"horizontal\", \"vertical\"], \"a direction\");\nvar PLACEMENT = UNION([\"inside\", \"outside\"], \"a placement\");\nvar INTERACTION_RANGE = OR(UNION([\"exact\", \"nearest\"], \"interaction range\"), NUMBER);\nvar LABEL_PLACEMENT = UNION([\"top\", \"bottom\", \"left\", \"right\"]);\nfunction UNION(options, message = \"a\") {\n return predicateWithMessage(v => options.includes(v), `${message} keyword such as ${joinUnionOptions(options)}`);\n}\nvar MIN_SPACING = OR(AND(NUMBER.restrict({\n min: 1\n}), LESS_THAN(\"maxSpacing\")), NAN);\nvar MAX_SPACING = OR(AND(NUMBER.restrict({\n min: 1\n}), GREATER_THAN(\"minSpacing\")), NAN);\nfunction predicateWithMessage(predicate, message) {\n predicate.message = message;\n return predicate;\n}\nfunction joinUnionOptions(options) {\n const values = options.map(option => `'${option}'`);\n if (values.length === 1) {\n return values[0];\n }\n const lastValue = values.pop();\n return `${values.join(\", \")} or ${lastValue}`;\n}\nfunction getPredicateMessage(predicate, ctx) {\n return isFunction(predicate.message) ? predicate.message(ctx) : predicate.message;\n}\nfunction getPredicateMessageMapper(ctx) {\n return predicate => getPredicateMessage(predicate, ctx);\n}\nfunction attachArrayRestrictions(predicate) {\n return Object.assign(predicate, {\n restrict({\n length,\n minLength\n } = {}) {\n let message = \"an array\";\n if (isNumber(minLength) && minLength > 0) {\n message = \"a non-empty array\";\n } else if (isNumber(length)) {\n message = `an array of length ${length}`;\n }\n return predicateWithMessage(value => isArray(value) && (isNumber(length) ? value.length === length : true) && (isNumber(minLength) ? value.length >= minLength : true), message);\n }\n });\n}\nfunction attachNumberRestrictions(predicate) {\n return Object.assign(predicate, {\n restrict({\n min,\n max\n } = {}) {\n const message = [\"a number\"];\n const hasMin = isNumber(min);\n const hasMax = isNumber(max);\n if (hasMin && hasMax) {\n message.push(`between ${min} and ${max} inclusive`);\n } else if (hasMin) {\n message.push(`greater than or equal to ${min}`);\n } else if (hasMax) {\n message.push(`less than or equal to ${max}`);\n }\n return predicateWithMessage(value => isFiniteNumber(value) && (hasMin ? value >= min : true) && (hasMax ? value <= max : true), message.join(\" \"));\n }\n });\n}\nfunction attachObjectRestrictions(predicate) {\n return Object.assign(predicate, {\n restrict(objectType) {\n return predicateWithMessage(value => value instanceof objectType, ctx => {\n var _a;\n return (_a = getPredicateMessage(predicate, ctx)) != null ? _a : `an instance of ${objectType.name}`;\n });\n }\n });\n}\nfunction stringify(value) {\n if (typeof value === \"number\") {\n if (isNaN(value)) return \"NaN\";\n if (value === Infinity) return \"Infinity\";\n if (value === -Infinity) return \"-Infinity\";\n }\n return JSON.stringify(value);\n}\n\n// packages/ag-charts-community/src/chart/axis/axisTick.ts\nvar TICK_INTERVAL = predicateWithMessage(value => isFiniteNumber(value) && value > 0 || value instanceof TimeInterval, `a non-zero positive Number value or, for a time axis, a Time Interval such as 'agCharts.time.month'`);\nvar AxisTick = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = true;\n this.width = 1;\n this.size = 6;\n this.color = void 0;\n this.interval = void 0;\n this.values = void 0;\n }\n};\n__decorateClass([Validate(BOOLEAN)], AxisTick.prototype, \"enabled\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AxisTick.prototype, \"width\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AxisTick.prototype, \"size\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], AxisTick.prototype, \"color\", 2);\n__decorateClass([Validate(TICK_INTERVAL, {\n optional: true\n})], AxisTick.prototype, \"interval\", 2);\n__decorateClass([Validate(ARRAY, {\n optional: true\n})], AxisTick.prototype, \"values\", 2);\n\n// packages/ag-charts-community/src/chart/chartAxisDirection.ts\nvar ChartAxisDirection = /* @__PURE__ */(ChartAxisDirection2 => {\n ChartAxisDirection2[\"X\"] = \"x\";\n ChartAxisDirection2[\"Y\"] = \"y\";\n return ChartAxisDirection2;\n})(ChartAxisDirection || {});\n\n// packages/ag-charts-community/src/chart/chartOptions.ts\nvar JSON_APPLY_PLUGINS = {\n constructedArrays: /* @__PURE__ */new WeakMap()\n};\nfunction assignJsonApplyConstructedArray(array, ctor) {\n var _a;\n (_a = JSON_APPLY_PLUGINS.constructedArrays) == null ? void 0 : _a.set(array, ctor);\n}\n\n// packages/ag-charts-community/src/scale/continuousScale.ts\nvar _ContinuousScale = class _ContinuousScale {\n constructor(domain, range3) {\n this.invalid = true;\n this.nice = false;\n this.interval = void 0;\n this.tickCount = _ContinuousScale.defaultTickCount;\n this.minTickCount = 0;\n this.maxTickCount = Infinity;\n this.niceDomain = [];\n this.defaultClampMode = \"raw\";\n this.domain = domain;\n this.range = range3;\n }\n static is(value) {\n return value instanceof _ContinuousScale;\n }\n transform(x) {\n return x;\n }\n transformInvert(x) {\n return x;\n }\n calcBandwidth(smallestInterval = 1) {\n const {\n range: range3\n } = this;\n const domain = this.getDomain();\n const rangeDistance = Math.abs(range3[1] - range3[0]);\n const intervals = Math.abs(domain[1] - domain[0]) / smallestInterval + 1;\n const maxBands = Math.floor(rangeDistance);\n const bands = Math.min(intervals, maxBands);\n return rangeDistance / Math.max(1, bands);\n }\n getDomain() {\n if (this.nice) {\n this.refresh();\n if (this.niceDomain.length) {\n return this.niceDomain;\n }\n }\n return this.domain;\n }\n convert(x, opts) {\n var _a;\n const clampMode = (_a = opts == null ? void 0 : opts.clampMode) != null ? _a : this.defaultClampMode;\n if (!this.domain || this.domain.length < 2) {\n return NaN;\n }\n this.refresh();\n const domain = this.getDomain().map(d => this.transform(d));\n const [d0, d1] = domain;\n const {\n range: range3\n } = this;\n const [r0, r1] = range3;\n x = this.transform(x);\n if (clampMode === \"clamped\") {\n const [start, stop] = findMinMax(domain.map(Number));\n if (Number(x) < start) {\n return r0;\n } else if (Number(x) > stop) {\n return r1;\n }\n }\n if (d0 === d1) {\n return (r0 + r1) / 2;\n } else if (x === d0) {\n return r0;\n } else if (x === d1) {\n return r1;\n }\n return r0 + (Number(x) - Number(d0)) / (Number(d1) - Number(d0)) * (r1 - r0);\n }\n invert(x) {\n this.refresh();\n const domain = this.getDomain().map(d2 => this.transform(d2));\n const [d0, d1] = domain;\n const {\n range: range3\n } = this;\n const [r0, r1] = range3;\n const isReversed = r0 > r1;\n const rMin = isReversed ? r1 : r0;\n const rMax = isReversed ? r0 : r1;\n let d;\n if (x < rMin) {\n return isReversed ? d1 : d0;\n } else if (x > rMax) {\n return isReversed ? d0 : d1;\n } else if (r0 === r1) {\n d = this.toDomain((Number(d0) + Number(d1)) / 2);\n } else {\n d = this.toDomain(Number(d0) + (x - r0) / (r1 - r0) * (Number(d1) - Number(d0)));\n }\n return this.transformInvert(d);\n }\n refresh() {\n if (!this.invalid) return;\n this.invalid = false;\n this.update();\n if (this.invalid) {\n Logger.warnOnce(\"Expected update to not invalidate scale\");\n }\n }\n getPixelRange() {\n const [a, b] = this.range;\n return Math.abs(b - a);\n }\n};\n_ContinuousScale.defaultTickCount = 5;\n_ContinuousScale.defaultMaxTickCount = 6;\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"domain\", 2);\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"range\", 2);\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"nice\", 2);\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"interval\", 2);\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"tickCount\", 2);\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"minTickCount\", 2);\n__decorateClass([Invalidating], _ContinuousScale.prototype, \"maxTickCount\", 2);\nvar ContinuousScale = _ContinuousScale;\n\n// packages/ag-charts-community/src/util/timeFormat.ts\nvar CONSTANTS = {\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 dayOfYear(date, startOfYear = new Date(date.getFullYear(), 0, 1)) {\n const startOffset = date.getTimezoneOffset() - startOfYear.getTimezoneOffset();\n const timeDiff = date.getTime() - startOfYear.getTime() + startOffset * 6e4;\n const timeOneDay = 36e5 * 24;\n return Math.floor(timeDiff / timeOneDay);\n}\nfunction weekOfYear(date, startDay) {\n const startOfYear = new Date(date.getFullYear(), 0, 1);\n const startOfYearDay = startOfYear.getDay();\n const firstWeekStartOffset = (startDay - startOfYearDay + 7) % 7;\n const startOffset = new Date(date.getFullYear(), 0, firstWeekStartOffset + 1);\n if (startOffset <= date) {\n return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n }\n return 0;\n}\nvar SUNDAY = 0;\nvar MONDAY = 1;\nvar THURSDAY = 4;\nfunction isoWeekOfYear(date, year2 = date.getFullYear()) {\n const firstOfYear = new Date(year2, 0, 1);\n const firstOfYearDay = firstOfYear.getDay();\n const firstThursdayOffset = (THURSDAY - firstOfYearDay + 7) % 7;\n const startOffset = new Date(year2, 0, firstThursdayOffset - (THURSDAY - MONDAY) + 1);\n if (startOffset <= date) {\n return Math.floor(dayOfYear(date, startOffset) / 7) + 1;\n }\n return isoWeekOfYear(date, year2 - 1);\n}\nfunction timezone(date) {\n const offset4 = date.getTimezoneOffset();\n const unsignedOffset = Math.abs(offset4);\n const sign = offset4 > 0 ? \"-\" : \"+\";\n return `${sign}${pad(Math.floor(unsignedOffset / 60), 2, \"0\")}${pad(Math.floor(unsignedOffset % 60), 2, \"0\")}`;\n}\nvar FORMATTERS = {\n a: d => CONSTANTS.shortDays[d.getDay()],\n A: d => CONSTANTS.days[d.getDay()],\n b: d => CONSTANTS.shortMonths[d.getMonth()],\n B: d => CONSTANTS.months[d.getMonth()],\n c: \"%x, %X\",\n d: (d, p) => pad(d.getDate(), 2, p != null ? p : \"0\"),\n e: \"%_d\",\n f: (d, p) => pad(d.getMilliseconds() * 1e3, 6, p != null ? p : \"0\"),\n H: (d, p) => pad(d.getHours(), 2, p != null ? p : \"0\"),\n I: (d, p) => {\n const hours = d.getHours() % 12;\n return hours === 0 ? \"12\" : pad(hours, 2, p != null ? p : \"0\");\n },\n j: (d, p) => pad(dayOfYear(d) + 1, 3, p != null ? p : \"0\"),\n m: (d, p) => pad(d.getMonth() + 1, 2, p != null ? p : \"0\"),\n M: (d, p) => pad(d.getMinutes(), 2, p != null ? p : \"0\"),\n L: (d, p) => pad(d.getMilliseconds(), 3, p != null ? p : \"0\"),\n p: d => d.getHours() < 12 ? \"AM\" : \"PM\",\n Q: d => String(d.getTime()),\n s: d => String(Math.floor(d.getTime() / 1e3)),\n S: (d, p) => pad(d.getSeconds(), 2, p != null ? p : \"0\"),\n u: d => {\n let day2 = d.getDay();\n if (day2 < 1) day2 += 7;\n return String(day2 % 7);\n },\n U: (d, p) => pad(weekOfYear(d, SUNDAY), 2, p != null ? p : \"0\"),\n V: (d, p) => pad(isoWeekOfYear(d), 2, p != null ? p : \"0\"),\n w: (d, p) => pad(d.getDay(), 2, p != null ? p : \"0\"),\n W: (d, p) => pad(weekOfYear(d, MONDAY), 2, p != null ? p : \"0\"),\n x: \"%-m/%-d/%Y\",\n X: \"%-I:%M:%S %p\",\n y: (d, p) => pad(d.getFullYear() % 100, 2, p != null ? p : \"0\"),\n Y: (d, p) => pad(d.getFullYear(), 4, p != null ? p : \"0\"),\n Z: d => timezone(d),\n \"%\": () => \"%\"\n};\nvar PADS = {\n _: \" \",\n \"0\": \"0\",\n \"-\": \"\"\n};\nfunction pad(value, size, padChar) {\n const output = String(Math.floor(value));\n if (output.length >= size) {\n return output;\n }\n return `${padChar.repeat(size - output.length)}${output}`;\n}\nfunction buildFormatter(formatString) {\n const formatParts = [];\n while (formatString.length > 0) {\n let nextEscapeIdx = formatString.indexOf(\"%\");\n if (nextEscapeIdx !== 0) {\n const literalPart = nextEscapeIdx > 0 ? formatString.substring(0, nextEscapeIdx) : formatString;\n formatParts.push(literalPart);\n }\n if (nextEscapeIdx < 0) break;\n const maybePadSpecifier = formatString[nextEscapeIdx + 1];\n const maybePad = PADS[maybePadSpecifier];\n if (maybePad != null) {\n nextEscapeIdx++;\n }\n const maybeFormatterSpecifier = formatString[nextEscapeIdx + 1];\n const maybeFormatter = FORMATTERS[maybeFormatterSpecifier];\n if (typeof maybeFormatter === \"function\") {\n formatParts.push([maybeFormatter, maybePad]);\n } else if (typeof maybeFormatter === \"string\") {\n const formatter = buildFormatter(maybeFormatter);\n formatParts.push([formatter, maybePad]);\n } else {\n formatParts.push(`${maybePad != null ? maybePad : \"\"}${maybeFormatterSpecifier}`);\n }\n formatString = formatString.substring(nextEscapeIdx + 2);\n }\n return dateTime => {\n const dateTimeAsDate = typeof dateTime === \"number\" ? new Date(dateTime) : dateTime;\n return formatParts.map(c => typeof c === \"string\" ? c : c[0](dateTimeAsDate, c[1])).join(\"\");\n };\n}\n\n// packages/ag-charts-community/src/util/timeFormatDefaults.ts\nfunction dateToNumber(x) {\n return x instanceof Date ? x.getTime() : x;\n}\nfunction defaultTimeTickFormat(ticks, domain) {\n const formatString = calculateDefaultTimeTickFormat(ticks, domain);\n return date => buildFormatter(formatString)(date);\n}\nfunction calculateDefaultTimeTickFormat(ticks = [], domain = ticks) {\n let defaultTimeFormat = 8 /* YEAR */;\n const updateFormat = format2 => {\n if (format2 < defaultTimeFormat) {\n defaultTimeFormat = format2;\n }\n };\n for (const value of ticks) {\n const format2 = getLowestGranularityFormat(value);\n updateFormat(format2);\n }\n const startDomain = dateToNumber(domain[0]);\n const endDomain = dateToNumber(domain.at(-1));\n const startYear = new Date(startDomain).getFullYear();\n const stopYear = new Date(endDomain).getFullYear();\n const yearChange = stopYear - startYear > 0;\n return formatStringBuilder(defaultTimeFormat, yearChange, ticks);\n}\nfunction getLowestGranularityFormat(value) {\n if (second_default.floor(value) < value) {\n return 0 /* MILLISECOND */;\n } else if (minute_default.floor(value) < value) {\n return 1 /* SECOND */;\n } else if (hour_default.floor(value) < value) {\n return 2 /* MINUTE */;\n } else if (day_default.floor(value) < value) {\n return 3 /* HOUR */;\n } else if (month_default.floor(value) < value) {\n if (week_default.floor(value) < value) {\n return 4 /* WEEK_DAY */;\n }\n return 5 /* SHORT_MONTH */;\n } else if (year_default.floor(value) < value) {\n return 6 /* MONTH */;\n }\n return 8 /* YEAR */;\n}\nfunction formatStringBuilder(defaultTimeFormat, yearChange, ticks) {\n const firstTick = dateToNumber(ticks[0]);\n const lastTick = dateToNumber(ticks.at(-1));\n const extent2 = Math.abs(lastTick - firstTick);\n const activeYear = yearChange || defaultTimeFormat === 8 /* YEAR */;\n const activeDate = extent2 === 0;\n const parts = [[\"hour\", 6 * durationHour, 14 * durationDay, 3 /* HOUR */, \"%I %p\"], [\"hour\", durationMinute, 6 * durationHour, 3 /* HOUR */, \"%I:%M\"], [\"second\", 1e3, 6 * durationHour, 1 /* SECOND */, \":%S\"], [\"ms\", 0, 6 * durationHour, 0 /* MILLISECOND */, \".%L\"], [\"am/pm\", durationMinute, 6 * durationHour, 3 /* HOUR */, \"%p\"], \" \", [\"day\", durationDay, 1 * durationWeek, 4 /* WEEK_DAY */, \"%a\"], [\"month\", activeDate ? 0 : durationWeek, 52 * durationWeek, 5 /* SHORT_MONTH */, \"%b %d\"], [\"month\", 5 * durationWeek, 10 * durationYear, 6 /* MONTH */, \"%B\"], \" \", [\"year\", activeYear ? 0 : durationYear, Infinity, 8 /* YEAR */, \"%Y\"]];\n const formatParts = parts.filter(v => {\n if (typeof v === \"string\") return true;\n const [_, min, max, format2] = v;\n return format2 >= defaultTimeFormat && min <= extent2 && extent2 < max;\n }).reduce((r, next) => {\n if (typeof next === \"string\") {\n r.result.push(next);\n } else if (!r.used.has(next[0])) {\n r.result.push(next);\n r.used.add(next[0]);\n }\n return r;\n }, {\n result: [],\n used: /* @__PURE__ */new Set()\n }).result;\n const firstFormat = formatParts.findIndex(v => typeof v !== \"string\");\n const lastFormat = formatParts.length - [...formatParts].reverse().findIndex(v => typeof v !== \"string\");\n return formatParts.slice(firstFormat, lastFormat).map(v => typeof v === \"string\" ? v : v[4]).join(\"\").replaceAll(/\\s+/g, \" \").trim();\n}\n\n// packages/ag-charts-community/src/util/ticks.ts\nvar createNumericTicks = (fractionDigits, takingValues = []) => Object.assign(takingValues, {\n fractionDigits\n});\nfunction ticks_default(start, stop, count, minCount, maxCount) {\n if (count < 2) {\n return range(start, stop, stop - start);\n }\n const step = tickStep(start, stop, count, minCount, maxCount);\n if (isNaN(step)) {\n return createNumericTicks(0);\n }\n start = Math.ceil(start / step) * step;\n stop = Math.floor(stop / step) * step;\n return range(start, stop, step);\n}\nvar tickMultipliers = [1, 2, 5, 10];\nfunction tickStep(a, b, count, minCount = 0, maxCount = Infinity) {\n const extent2 = Math.abs(b - a);\n const rawStep = extent2 / count;\n const power = Math.floor(Math.log10(rawStep));\n const step = Math.pow(10, power);\n const m = tickMultipliers.map(multiplier => {\n const s = multiplier * step;\n const c = Math.ceil(extent2 / s);\n const isWithinBounds = c >= minCount && c <= maxCount;\n const diffCount = Math.abs(c - count);\n return {\n multiplier,\n isWithinBounds,\n diffCount\n };\n }).sort((a2, b2) => {\n if (a2.isWithinBounds !== b2.isWithinBounds) {\n return a2.isWithinBounds ? -1 : 1;\n }\n return a2.diffCount - b2.diffCount;\n })[0].multiplier;\n if (!m || isNaN(m)) {\n return NaN;\n }\n return m * step;\n}\nfunction singleTickDomain(a, b) {\n const extent2 = Math.abs(b - a);\n const power = Math.floor(Math.log10(extent2));\n const step = Math.pow(10, power);\n const roundStart = a > b ? Math.ceil : Math.floor;\n const roundStop = b < a ? Math.floor : Math.ceil;\n return tickMultipliers.map(multiplier => {\n const s = multiplier * step;\n const start = roundStart(a / s) * s;\n const end = roundStop(b / s) * s;\n const error = 1 - extent2 / Math.abs(end - start);\n const domain = [start, end];\n return {\n error,\n domain\n };\n }).sort((a2, b2) => a2.error - b2.error)[0].domain;\n}\nfunction range(start, stop, step) {\n const d0 = Math.min(start, stop);\n const d1 = Math.max(start, stop);\n const fractionalDigits = countFractionDigits(step);\n const f = Math.pow(10, fractionalDigits);\n const n = Math.ceil((d1 - d0) / step);\n const values = createNumericTicks(fractionalDigits);\n for (let i = 0; i <= n; i++) {\n const value = d0 + step * i;\n values.push(Math.round(value * f) / f);\n }\n return values;\n}\nfunction isDenseInterval({\n start,\n stop,\n interval,\n count,\n availableRange\n}) {\n const domain = stop - start;\n const step = typeof interval === \"number\" ? interval : 1;\n count != null ? count : count = domain / step;\n if (count >= availableRange) {\n Logger.warnOnce(`the configured interval results in more than 1 item per pixel, ignoring. Supply a larger interval or omit this configuration`);\n return true;\n }\n return false;\n}\n\n// packages/ag-charts-community/src/scale/timeScale.ts\nvar _TimeScale = class _TimeScale extends ContinuousScale {\n constructor() {\n super([], [0, 1]);\n this.type = \"time\";\n }\n toDomain(d) {\n return new Date(d);\n }\n /**\n * @param options Tick interval options.\n * @param options.start The start time (timestamp).\n * @param options.stop The end time (timestamp).\n * @param options.count Number of intervals between ticks.\n */\n static getTickInterval({\n start,\n stop,\n count,\n minCount,\n maxCount,\n target\n }) {\n let countableTimeInterval;\n let step;\n const tickCount = count != null ? count : ContinuousScale.defaultTickCount;\n const targetInterval = target != null ? target : Math.abs(stop - start) / Math.max(tickCount, 1);\n const i = _TimeScale.getIntervalIndex(targetInterval);\n if (i === 0) {\n step = Math.max(tickStep(start, stop, tickCount, minCount, maxCount), 1);\n countableTimeInterval = millisecond_default;\n } else if (i === _TimeScale.tickIntervals.length) {\n const y0 = start / durationYear;\n const y1 = stop / durationYear;\n step = target === void 0 ? tickStep(y0, y1, tickCount, minCount, maxCount) : 1;\n countableTimeInterval = year_default;\n } else {\n const diff0 = targetInterval - _TimeScale.tickIntervals[i - 1][2];\n const diff1 = _TimeScale.tickIntervals[i][2] - targetInterval;\n const index = diff0 < diff1 ? i - 1 : i;\n [countableTimeInterval, step] = _TimeScale.tickIntervals[index];\n }\n return countableTimeInterval.every(step);\n }\n static getIntervalIndex(target) {\n let i = 0;\n while (i < _TimeScale.tickIntervals.length && target > _TimeScale.tickIntervals[i][2]) {\n i++;\n }\n return i;\n }\n invert(y) {\n return new Date(super.invert(y));\n }\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n */\n ticks() {\n if (!this.domain || this.domain.length < 2) {\n return [];\n }\n this.refresh();\n const [t0, t1] = this.getDomain().map(dateToNumber);\n const start = Math.min(t0, t1);\n const stop = Math.max(t0, t1);\n const {\n interval,\n nice,\n tickCount,\n minTickCount,\n maxTickCount\n } = this;\n if (interval !== void 0) {\n const availableRange = this.getPixelRange();\n const ticks = _TimeScale.getTicksForInterval({\n start,\n stop,\n interval,\n availableRange\n });\n return ticks != null ? ticks : _TimeScale.getDefaultTicks({\n start,\n stop,\n tickCount,\n minTickCount,\n maxTickCount\n });\n }\n if (nice) {\n if (tickCount === 2) {\n return this.niceDomain;\n }\n if (tickCount === 1) {\n return this.niceDomain.slice(0, 1);\n }\n }\n return _TimeScale.getDefaultTicks({\n start,\n stop,\n tickCount,\n minTickCount,\n maxTickCount\n });\n }\n static getDefaultTicks({\n start,\n stop,\n tickCount,\n minTickCount,\n maxTickCount\n }) {\n const t = _TimeScale.getTickInterval({\n start,\n stop,\n count: tickCount,\n minCount: minTickCount,\n maxCount: maxTickCount\n });\n return t ? t.range(new Date(start), new Date(stop)) : [];\n }\n static getTicksForInterval({\n start,\n stop,\n interval,\n availableRange\n }) {\n if (!interval) {\n return [];\n }\n if (interval instanceof TimeInterval) {\n const ticks2 = interval.range(new Date(start), new Date(stop));\n if (isDenseInterval({\n start,\n stop,\n interval,\n count: ticks2.length,\n availableRange\n })) {\n return;\n }\n return ticks2;\n }\n const absInterval = Math.abs(interval);\n if (isDenseInterval({\n start,\n stop,\n interval: absInterval,\n availableRange\n })) {\n return;\n }\n const reversedInterval = [..._TimeScale.tickIntervals];\n reversedInterval.reverse();\n const timeInterval = reversedInterval.find(tickInterval => absInterval % tickInterval[2] === 0);\n if (timeInterval) {\n const i = timeInterval[0].every(absInterval / (timeInterval[2] / timeInterval[1]));\n return i.range(new Date(start), new Date(stop));\n }\n let date = new Date(start);\n const stopDate = new Date(stop);\n const ticks = [];\n while (date <= stopDate) {\n ticks.push(date);\n date = new Date(date);\n date.setMilliseconds(date.getMilliseconds() + absInterval);\n }\n return ticks;\n }\n /**\n * Returns a time format function suitable for displaying tick values.\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 tickFormat({\n ticks,\n domain,\n specifier\n }) {\n return specifier == null ? defaultTimeTickFormat(ticks, domain) : buildFormatter(specifier);\n }\n update() {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n if (this.nice) {\n this.updateNiceDomain();\n }\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 */\n updateNiceDomain() {\n const maxAttempts = 4;\n let [d0, d1] = this.domain;\n for (let i = 0; i < maxAttempts; i++) {\n this.updateNiceDomainIteration(d0, d1);\n const [n0, n1] = this.niceDomain;\n if (dateToNumber(d0) === dateToNumber(n0) && dateToNumber(d1) === dateToNumber(n1)) {\n break;\n }\n d0 = n0;\n d1 = n1;\n }\n }\n updateNiceDomainIteration(d0, d1) {\n const start = Math.min(dateToNumber(d0), dateToNumber(d1));\n const stop = Math.max(dateToNumber(d0), dateToNumber(d1));\n const isReversed = d0 > d1;\n const {\n interval\n } = this;\n let i;\n if (interval instanceof TimeInterval) {\n i = interval;\n } else {\n const tickCount = typeof interval === \"number\" ? (stop - start) / Math.max(interval, 1) : this.tickCount;\n i = _TimeScale.getTickInterval({\n start,\n stop,\n count: tickCount,\n minCount: this.minTickCount,\n maxCount: this.maxTickCount\n });\n }\n if (i) {\n const intervalRange = i.range(new Date(start), new Date(stop), true);\n const domain = isReversed ? [...intervalRange].reverse() : intervalRange;\n const n0 = domain[0];\n const n1 = domain.at(-1);\n this.niceDomain = [n0, n1];\n }\n }\n};\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_TimeScale.tickIntervals = [[second_default, 1, durationSecond], [second_default, 5, 5 * durationSecond], [second_default, 15, 15 * durationSecond], [second_default, 30, 30 * durationSecond], [minute_default, 1, durationMinute], [minute_default, 5, 5 * durationMinute], [minute_default, 15, 15 * durationMinute], [minute_default, 30, 30 * durationMinute], [hour_default, 1, durationHour], [hour_default, 3, 3 * durationHour], [hour_default, 6, 6 * durationHour], [hour_default, 12, 12 * durationHour], [day_default, 1, durationDay], [day_default, 2, 2 * durationDay], [week_default, 1, durationWeek], [week_default, 2, 2 * durationWeek], [week_default, 3, 3 * durationWeek], [month_default, 1, durationMonth], [month_default, 2, 2 * durationMonth], [month_default, 3, 3 * durationMonth], [month_default, 4, 4 * durationMonth], [month_default, 6, 6 * durationMonth], [year_default, 1, durationYear]];\nvar TimeScale = _TimeScale;\n\n// packages/ag-charts-community/src/scale/ordinalTimeScale.ts\nvar _OrdinalTimeScale = class _OrdinalTimeScale extends BandScale {\n constructor() {\n super(...arguments);\n this.type = \"ordinal-time\";\n this.tickCount = ContinuousScale.defaultTickCount;\n this.minTickCount = 0;\n this.maxTickCount = Infinity;\n this.interval = void 0;\n this.index = /* @__PURE__ */new Map();\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 }\n static is(value) {\n return value instanceof _OrdinalTimeScale;\n }\n toDomain(d) {\n return new Date(d);\n }\n set domain(values) {\n this.invalid = true;\n if (values.length === 0) {\n this._domain = [];\n return;\n }\n const domain = this.updateIndex(values);\n this._domain = domain;\n }\n get domain() {\n return this._domain;\n }\n updateIndex(values) {\n this.index = /* @__PURE__ */new Map();\n const {\n index\n } = this;\n const domain = [];\n const extents = [];\n const isReversed = values[0] > values.at(-1);\n const indexShift = isReversed ? 0 : 1;\n values.forEach((value, i2) => {\n const nextValue = values[i2 + 1];\n const e02 = isReversed ? value : this.toDomain(dateToNumber(value) + 1);\n const e12 = isReversed ? this.toDomain(dateToNumber(nextValue) + 1) : nextValue;\n const dateRange2 = isReversed ? [e12, e02] : [e02, e12];\n domain.push(value);\n if (nextValue !== void 0 && index.get(dateRange2) === void 0) {\n extents.push(Math.abs(dateToNumber(e12) - dateToNumber(e02)));\n index.set(dateRange2, i2 + indexShift);\n }\n });\n extents.sort((a, b) => a - b);\n const bands = extents.length;\n const middleIndex = Math.floor(bands / 2);\n this.medianInterval = bands > 2 && bands % 2 === 0 ? (extents[middleIndex - 1] + extents[middleIndex + 1]) / 2 : extents[middleIndex];\n const intervalIndex = Math.max(0, TimeScale.getIntervalIndex(this.medianInterval) - 1);\n const [countableTimeInterval, step] = TimeScale.tickIntervals[intervalIndex];\n const interval = countableTimeInterval.every(step);\n const i = isReversed ? values.length - 1 : 0;\n const e1 = values[i];\n const e0 = interval.floor(values[i]);\n const dateRange = [e0, e1];\n index.set(dateRange, i);\n return domain;\n }\n ticks() {\n if (!this.domain) {\n return [];\n }\n this.refresh();\n const [t0, t1] = [dateToNumber(this.domain[0]), dateToNumber(this.domain.at(-1))];\n const start = Math.min(t0, t1);\n const stop = Math.max(t0, t1);\n const isReversed = t0 > t1;\n let ticks;\n if (this.interval !== void 0) {\n ticks = this.getTicksForInterval({\n start,\n stop,\n interval: this.interval\n });\n }\n const n = this.domain.length;\n const {\n maxTickCount,\n tickCount\n } = this;\n let {\n minTickCount\n } = this;\n let medianInterval;\n if (isFinite(maxTickCount) && n <= maxTickCount) {\n minTickCount = Math.max(1, n);\n medianInterval = this.medianInterval;\n }\n ticks != null ? ticks : ticks = this.getDefaultTicks({\n start,\n stop,\n tickCount,\n minTickCount,\n maxTickCount,\n isReversed,\n interval: medianInterval\n });\n const tickPositions = /* @__PURE__ */new Set();\n return ticks.filter(tick => {\n const position = this.convert(tick);\n if (isNaN(position) || tickPositions.has(position)) {\n return false;\n }\n tickPositions.add(position);\n return true;\n });\n }\n getDefaultTicks({\n start,\n stop,\n tickCount,\n minTickCount,\n maxTickCount,\n isReversed,\n interval\n }) {\n const tickInterval = TimeScale.getTickInterval({\n start,\n stop,\n count: tickCount,\n minCount: minTickCount,\n maxCount: maxTickCount,\n target: interval\n });\n if (!tickInterval) {\n return [];\n }\n const tickEvery = Math.ceil(this.domain.length / maxTickCount);\n const ticks = [];\n for (const [dateRange, index] of this.index.entries()) {\n if (index % tickEvery > 0) {\n continue;\n }\n const tick = isReversed ? tickInterval.ceil(dateRange[0]) : tickInterval.floor(dateRange[1]);\n ticks.splice(index, 0, tick);\n }\n return ticks;\n }\n getTicksForInterval({\n start,\n stop,\n interval\n }) {\n var _a;\n const [r0, r1] = this.range;\n const availableRange = Math.abs(r1 - r0);\n return (_a = TimeScale.getTicksForInterval({\n start,\n stop,\n interval,\n availableRange\n })) != null ? _a : [];\n }\n convert(d) {\n if (typeof d === \"number\") {\n d = new Date(d);\n }\n if (!(d instanceof Date)) {\n return NaN;\n }\n this.refresh();\n let i;\n for (const [dateRange, index] of this.index.entries()) {\n if (d >= dateRange[0] && d <= dateRange[1]) {\n i = index;\n break;\n }\n }\n if (i === void 0) {\n return NaN;\n }\n const r = this.ordinalRange[i];\n if (r === void 0) {\n return NaN;\n }\n return r;\n }\n /**\n * Returns a time format function suitable for displaying tick values.\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 tickFormat({\n ticks,\n domain,\n specifier\n }) {\n return specifier == null ? defaultTimeTickFormat(ticks, domain) : buildFormatter(specifier);\n }\n invert(y) {\n return new Date(super.invert(y));\n }\n invertNearest(y) {\n return new Date(super.invertNearest(y));\n }\n};\n__decorateClass([Invalidating], _OrdinalTimeScale.prototype, \"tickCount\", 2);\n__decorateClass([Invalidating], _OrdinalTimeScale.prototype, \"minTickCount\", 2);\n__decorateClass([Invalidating], _OrdinalTimeScale.prototype, \"maxTickCount\", 2);\n__decorateClass([Invalidating], _OrdinalTimeScale.prototype, \"interval\", 2);\nvar OrdinalTimeScale = _OrdinalTimeScale;\n\n// packages/ag-charts-community/src/util/compare.ts\nfunction ascendingStringNumberUndefined(a, b) {\n if (typeof a === \"number\" && typeof b === \"number\") {\n return a - b;\n } else if (typeof a === \"string\" && typeof b === \"string\") {\n return a.localeCompare(b);\n } else if (a == null && b == null) {\n return 0;\n } else if (a == null) {\n return -1;\n } else if (b == null) {\n return 1;\n }\n return String(a).localeCompare(String(b));\n}\nfunction toLiteral(v) {\n return typeof v === \"function\" ? v() : v;\n}\nfunction compoundAscending(a, b, comparator) {\n for (const idx in a) {\n const diff2 = comparator(toLiteral(a[idx]), toLiteral(b[idx]));\n if (diff2 !== 0) {\n return diff2;\n }\n }\n return 0;\n}\n\n// packages/ag-charts-community/src/scene/group.ts\nvar _Group = class _Group extends Node {\n constructor(opts) {\n var _a;\n super({\n isVirtual: opts == null ? void 0 : opts.isVirtual\n });\n this.opts = opts;\n this.opacity = 1;\n this.lastBBox = void 0;\n const {\n zIndex,\n zIndexSubOrder\n } = opts != null ? opts : {};\n this.isContainerNode = true;\n if (zIndex !== void 0) {\n this.zIndex = zIndex;\n }\n if (zIndexSubOrder !== void 0) {\n this.zIndexSubOrder = zIndexSubOrder;\n }\n this.name = (_a = this.opts) == null ? void 0 : _a.name;\n }\n static is(value) {\n return value instanceof _Group;\n }\n onZIndexChange() {\n var _a;\n super.onZIndexChange();\n if (this.layer) {\n (_a = this._layerManager) == null ? void 0 : _a.moveLayer(this.layer, this.zIndex, this.zIndexSubOrder);\n }\n }\n isLayer() {\n return this.layer != null;\n }\n _setLayerManager(layersManager) {\n if (this._layerManager && this.layer) {\n this._layerManager.removeLayer(this.layer);\n this.layer = void 0;\n }\n if (this.layer) {\n throw new Error(\"AG Charts - unable to deregister scene rendering layer!\");\n }\n super._setLayerManager(layersManager);\n }\n initialiseLayer() {\n var _a;\n if (this.layer) return;\n if (!this._layerManager || ((_a = this.opts) == null ? void 0 : _a.layer) !== true) return;\n this.layer = this._layerManager.addLayer({\n name: this.name,\n zIndex: this.zIndex,\n zIndexSubOrder: this.zIndexSubOrder,\n getComputedOpacity: () => this.getComputedOpacity(),\n getVisibility: () => this.getVisibility()\n });\n }\n getComputedOpacity() {\n let opacity = 1;\n for (const node of this.traverseUp()) {\n if (node instanceof _Group) {\n opacity *= node.opacity;\n }\n }\n return opacity;\n }\n getVisibility() {\n for (const node of this.traverseUp()) {\n if (!node.visible) {\n return false;\n }\n }\n return true;\n }\n onVisibleChange() {\n if (this.layer) {\n this.layer.enabled = this.visible;\n }\n }\n markDirty(source, type = 1 /* TRIVIAL */) {\n if (this.isVirtual) {\n super.markDirty(source, type);\n return;\n }\n let parentType = type;\n if (type < 2 /* MINOR */ || this.layer != null) {\n parentType = 1 /* TRIVIAL */;\n }\n super.markDirty(source, type, parentType);\n }\n // We consider a group to be boundless, thus any point belongs to it.\n containsPoint(_x, _y) {\n return true;\n }\n computeBBox() {\n this.computeTransformMatrix();\n return _Group.computeBBox(this.children);\n }\n computeTransformedBBox() {\n return this.computeBBox();\n }\n preRender() {\n var _a, _b;\n const counts = super.preRender();\n counts.groups += 1;\n counts.nonGroups -= 1;\n if (((_a = this.opts) == null ? void 0 : _a.layer) !== true || this.layer != null) return counts;\n if (counts.nonGroups > 0) {\n this.initialiseLayer();\n }\n if (((_b = this.opts) == null ? void 0 : _b.nonEmptyChildDerivedZIndex) && counts.nonGroups > 0) {\n this.deriveZIndexFromChildren();\n }\n return counts;\n }\n deriveZIndexFromChildren() {\n var _a;\n const children = this.children.filter(c => c._childNodeCounts.nonGroups > 0);\n this.sortChildren(children);\n const lastChild = children.at(-1);\n this.zIndex = (_a = lastChild == null ? void 0 : lastChild.zIndex) != null ? _a : -Infinity;\n this.zIndexSubOrder = lastChild == null ? void 0 : lastChild.zIndexSubOrder;\n }\n render(renderCtx) {\n var _a, _b;\n const {\n opts: {\n name = void 0\n } = {},\n _debug: debug3\n } = this;\n const {\n dirty,\n dirtyZIndex,\n layer,\n children,\n clipRect,\n dirtyTransform\n } = this;\n let {\n ctx,\n forceRender,\n clipBBox\n } = renderCtx;\n const {\n resized,\n stats\n } = renderCtx;\n const canvasCtxTransform = ctx.getTransform();\n const isDirty = dirty >= 2 /* MINOR */ || dirtyZIndex || resized;\n let isChildDirty = isDirty;\n let isChildLayerDirty = false;\n for (const child of children) {\n isChildDirty || (isChildDirty = child.layerManager == null && child.dirty >= 1 /* TRIVIAL */);\n isChildLayerDirty || (isChildLayerDirty = child.layerManager != null && child.dirty >= 1 /* TRIVIAL */);\n if (isChildDirty) {\n break;\n }\n }\n if (name) {\n debug3 == null ? void 0 : debug3({\n name,\n group: this,\n isDirty,\n isChildDirty,\n dirtyTransform,\n renderCtx,\n forceRender\n });\n }\n if (dirtyTransform) {\n forceRender = \"dirtyTransform\";\n } else if (layer) {\n const currentBBox = this.computeBBox();\n if (this.lastBBox === void 0 || !this.lastBBox.equals(currentBBox)) {\n forceRender = \"dirtyTransform\";\n this.lastBBox = currentBBox;\n }\n }\n if (!isDirty && !isChildDirty && !isChildLayerDirty && !forceRender) {\n if (name && stats) {\n debug3 == null ? void 0 : debug3({\n name,\n result: \"skipping\",\n renderCtx,\n counts: this.nodeCount,\n group: this\n });\n }\n if (layer && stats) {\n stats.layersSkipped++;\n stats.nodesSkipped += this.nodeCount.count;\n }\n this.markClean({\n recursive: false\n });\n return;\n }\n const groupVisible = this.visible;\n if (layer) {\n ctx = layer.context;\n ctx.save();\n ctx.setTransform(layer.pixelRatio, 0, 0, layer.pixelRatio, 0, 0);\n if (forceRender !== \"dirtyTransform\") {\n forceRender = isChildDirty || dirtyZIndex;\n }\n if (forceRender) layer.clear();\n if (clipBBox) {\n const {\n width,\n height,\n x,\n y\n } = clipBBox;\n debug3 == null ? void 0 : debug3(() => ({\n name,\n clipBBox,\n ctxTransform: ctx.getTransform(),\n renderCtx,\n group: this\n }));\n ctx.beginPath();\n ctx.rect(x, y, width, height);\n ctx.clip();\n }\n ctx.setTransform(canvasCtxTransform);\n } else {\n ctx.globalAlpha *= this.opacity;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n if (clipRect) {\n const {\n x,\n y,\n width,\n height\n } = clipRect;\n ctx.save();\n debug3 == null ? void 0 : debug3(() => ({\n name,\n clipRect,\n ctxTransform: ctx.getTransform(),\n renderCtx,\n group: this\n }));\n ctx.beginPath();\n ctx.rect(x, y, width, height);\n ctx.clip();\n clipBBox = this.matrix.transformBBox(clipRect);\n }\n const hasVirtualChildren = this.hasVirtualChildren();\n if (dirtyZIndex) {\n this.sortChildren(children);\n if (forceRender !== \"dirtyTransform\") forceRender = true;\n } else if (hasVirtualChildren) {\n this.sortChildren(children);\n }\n const renderContextChanged = forceRender !== renderCtx.forceRender || clipBBox !== renderCtx.clipBBox || ctx !== renderCtx.ctx;\n const childRenderContext = renderContextChanged ? __spreadProps(__spreadValues({}, renderCtx), {\n ctx,\n forceRender,\n clipBBox\n }) : renderCtx;\n let skipped = 0;\n for (const child of children) {\n if (!child.visible || !groupVisible) {\n child.markClean();\n if (stats) skipped += child.nodeCount.count;\n continue;\n }\n if (!forceRender && child.dirty === 0 /* NONE */) {\n if (stats) skipped += child.nodeCount.count;\n continue;\n }\n ctx.save();\n child.render(childRenderContext);\n ctx.restore();\n }\n if (stats) stats.nodesSkipped += skipped;\n super.render(renderCtx);\n if (clipRect) {\n ctx.restore();\n }\n if (hasVirtualChildren) {\n for (const child of this.virtualChildren) {\n child.markClean({\n recursive: \"virtual\"\n });\n }\n }\n if (layer) {\n if (stats) stats.layersRendered++;\n ctx.restore();\n if (forceRender) layer.snapshot();\n (_b = (_a = layer.context).verifyDepthZero) == null ? void 0 : _b.call(_a);\n }\n if (name && stats) {\n debug3 == null ? void 0 : debug3({\n name,\n result: \"rendered\",\n skipped,\n renderCtx,\n counts: this.nodeCount,\n group: this\n });\n }\n }\n sortChildren(children) {\n this.dirtyZIndex = false;\n children.sort((a, b) => {\n var _a, _b;\n return compoundAscending([a.zIndex, ...((_a = a.zIndexSubOrder) != null ? _a : [void 0, void 0]), a.serialNumber], [b.zIndex, ...((_b = b.zIndexSubOrder) != null ? _b : [void 0, void 0]), b.serialNumber], ascendingStringNumberUndefined);\n });\n }\n static computeBBox(nodes) {\n let left = Infinity;\n let right = -Infinity;\n let top = Infinity;\n let bottom = -Infinity;\n for (const n of nodes) {\n if (!n.visible) continue;\n const bbox = n.computeTransformedBBox();\n if (!bbox) continue;\n const {\n x,\n y,\n width,\n height\n } = bbox;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + width > right) {\n right = x + width;\n }\n if (y + height > bottom) {\n bottom = y + height;\n }\n }\n return new BBox(left, top, right - left, bottom - top);\n }\n /**\n * Transforms bbox given in the canvas coordinate space to bbox in this group's coordinate space and\n * sets this group's clipRect to the transformed bbox.\n * @param bbox clipRect bbox in the canvas coordinate space.\n */\n setClipRectInGroupCoordinateSpace(bbox) {\n this.clipRect = bbox ? this.transformBBox(bbox) : void 0;\n }\n};\n_Group.className = \"Group\";\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */,\n convertor: v => clamp(0, v, 1)\n})], _Group.prototype, \"opacity\", 2);\nvar Group = _Group;\n\n// packages/ag-charts-community/src/scene/gradient/gradient.ts\nvar Gradient = class {\n constructor(stops = []) {\n this.stops = stops;\n }\n};\n\n// packages/ag-charts-community/src/scene/gradient/linearGradient.ts\nvar LinearGradient = class extends Gradient {\n constructor(stops, angle = 0) {\n super(stops);\n this.angle = angle;\n }\n createGradient(ctx, bbox) {\n const angleOffset = 90;\n const {\n stops,\n angle\n } = this;\n const radians = normalizeAngle360(toRadians(angle + angleOffset));\n const cos = Math.cos(radians);\n const sin = Math.sin(radians);\n const w = bbox.width;\n const h = bbox.height;\n const cx = bbox.x + w * 0.5;\n const cy = bbox.y + h * 0.5;\n if (w > 0 && h > 0) {\n const diagonal = Math.sqrt(h * h + w * w) / 2;\n const diagonalAngle = Math.atan2(h, w);\n let quarteredAngle;\n if (radians < Math.PI / 2) {\n quarteredAngle = radians;\n } else if (radians < Math.PI) {\n quarteredAngle = Math.PI - radians;\n } else if (radians < 1.5 * Math.PI) {\n quarteredAngle = radians - Math.PI;\n } else {\n quarteredAngle = 2 * Math.PI - radians;\n }\n const l = diagonal * Math.abs(Math.cos(quarteredAngle - diagonalAngle));\n const gradient = ctx.createLinearGradient(cx + cos * l, cy + sin * l, cx - cos * l, cy - sin * l);\n for (const stop of stops) {\n gradient.addColorStop(stop.offset, stop.color);\n }\n return gradient;\n }\n return \"black\";\n }\n};\n\n// packages/ag-charts-community/src/scene/shape/shape.ts\nvar LINEAR_GRADIENT_REGEXP = /^linear-gradient\\((.*?)deg,\\s*(.*?)\\s*\\)$/i;\nvar _Shape = class _Shape extends Node {\n constructor() {\n super(...arguments);\n this.fillOpacity = 1;\n this.strokeOpacity = 1;\n this.fill = _Shape.defaultStyles.fill;\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 }\n /**\n * Restores the default styles introduced by this subclass.\n */\n restoreOwnStyles() {\n const {\n defaultStyles\n } = this.constructor;\n Object.assign(this, defaultStyles);\n }\n onFillChange() {\n const {\n fill\n } = this;\n let linearGradientMatch;\n if ((fill == null ? void 0 : fill.startsWith(\"linear-gradient\")) && (linearGradientMatch = LINEAR_GRADIENT_REGEXP.exec(fill))) {\n const angle = parseFloat(linearGradientMatch[1]);\n const colors = [];\n const colorsPart = linearGradientMatch[2];\n const colorRegex = /(#[0-9a-f]+)|(rgba?\\(.+?\\))|([a-z]+)/gi;\n let c;\n while (c = colorRegex.exec(colorsPart)) {\n colors.push(c[0]);\n }\n this.gradient = new LinearGradient(colors.map((color, index) => ({\n color,\n offset: index / (colors.length - 1)\n })), angle);\n } else {\n this.gradient = void 0;\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 align(start, length) {\n var _a, _b, _c;\n const pixelRatio = (_c = (_b = (_a = this.layerManager) == null ? void 0 : _a.canvas) == null ? void 0 : _b.pixelRatio) != null ? _c : 1;\n const alignedStart = Math.round(start * pixelRatio) / pixelRatio;\n if (length == null) {\n return alignedStart;\n } else if (length === 0) {\n return 0;\n } else if (length < 1) {\n return Math.ceil(length * pixelRatio) / pixelRatio;\n }\n return Math.round((length + start) * pixelRatio) / pixelRatio - alignedStart;\n }\n fillStroke(ctx, path) {\n this.renderFill(ctx, path);\n this.renderStroke(ctx, path);\n }\n renderFill(ctx, path) {\n if (this.fill) {\n const {\n globalAlpha\n } = ctx;\n this.applyFill(ctx);\n this.applyFillAlpha(ctx);\n this.applyShadow(ctx);\n this.executeFill(ctx, path);\n ctx.globalAlpha = globalAlpha;\n }\n ctx.shadowColor = \"rgba(0, 0, 0, 0)\";\n }\n executeFill(ctx, path) {\n path ? ctx.fill(path) : ctx.fill();\n }\n applyFill(ctx) {\n var _a, _b;\n ctx.fillStyle = (_b = (_a = this.gradient) == null ? void 0 : _a.createGradient(ctx, this.computeBBox())) != null ? _b : this.fill;\n }\n applyFillAlpha(ctx) {\n ctx.globalAlpha *= this.opacity * this.fillOpacity;\n }\n applyShadow(ctx) {\n var _a, _b;\n const pixelRatio = (_b = (_a = this.layerManager) == null ? void 0 : _a.canvas.pixelRatio) != null ? _b : 1;\n const fillShadow = this.fillShadow;\n if (fillShadow == null ? void 0 : 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 }\n renderStroke(ctx, path) {\n if (this.stroke && this.strokeWidth) {\n const {\n globalAlpha\n } = ctx;\n ctx.strokeStyle = this.stroke;\n ctx.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 this.executeStroke(ctx, path);\n ctx.globalAlpha = globalAlpha;\n }\n }\n executeStroke(ctx, path) {\n path ? ctx.stroke(path) : ctx.stroke();\n }\n containsPoint(x, y) {\n return this.isPointInPath(x, y);\n }\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` method).\n * These static defaults are meant to be inherited by subclasses.\n */\n_Shape.defaultStyles = {\n fill: \"black\",\n stroke: void 0,\n strokeWidth: 0,\n lineDash: void 0,\n lineDashOffset: 0,\n lineCap: void 0,\n lineJoin: void 0,\n opacity: 1,\n fillShadow: void 0\n};\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"fillOpacity\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"strokeOpacity\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */,\n changeCb: s => s.onFillChange()\n})], _Shape.prototype, \"fill\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"stroke\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"strokeWidth\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"lineDash\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"lineDashOffset\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"lineCap\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], _Shape.prototype, \"lineJoin\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */,\n convertor: v => clamp(0, v, 1)\n})], _Shape.prototype, \"opacity\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */,\n checkDirtyOnAssignment: true\n})], _Shape.prototype, \"fillShadow\", 2);\nvar Shape = _Shape;\n\n// packages/ag-charts-community/src/scene/shape/range.ts\nvar Range = class extends Shape {\n constructor(opts = {}) {\n super(opts);\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 }\n computeBBox() {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n }\n isPointInPath(_x, _y) {\n return false;\n }\n render(renderCtx) {\n var _a;\n const {\n ctx,\n forceRender,\n stats\n } = renderCtx;\n if (this.dirty === 0 /* NONE */ && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n let {\n x1,\n y1,\n x2,\n y2\n } = this;\n x1 = this.align(x1);\n y1 = this.align(y1);\n x2 = this.align(x2);\n y2 = this.align(y2);\n const {\n fill,\n opacity,\n isRange\n } = this;\n const fillActive = !!(isRange && fill);\n if (fillActive) {\n const {\n fillOpacity\n } = this;\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 const {\n stroke,\n strokeWidth,\n startLine,\n endLine\n } = this;\n const strokeActive = !!((startLine || endLine) && stroke && strokeWidth);\n if (strokeActive) {\n const {\n strokeOpacity,\n lineDash,\n lineDashOffset,\n lineCap,\n lineJoin\n } = this;\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 ? void 0 : _a.markClean();\n super.render(renderCtx);\n }\n};\nRange.className = \"Range\";\nRange.defaultStyles = __spreadProps(__spreadValues({}, Shape.defaultStyles), {\n strokeWidth: 1\n});\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"x1\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"y1\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"x2\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"y2\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"startLine\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"endLine\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 2 /* MINOR */\n})], Range.prototype, \"isRange\", 2);\n\n// packages/ag-charts-community/src/util/memo.ts\nvar memorizedFns = /* @__PURE__ */new WeakMap();\nvar memorizedMap = /* @__PURE__ */new WeakMap();\nfunction memo(params, fnGenerator) {\n var _a, _b, _c;\n const serialisedParams = JSON.stringify(params, null, 0);\n if (!memorizedFns.has(fnGenerator)) {\n memorizedFns.set(fnGenerator, /* @__PURE__ */new Map());\n }\n if (!((_a = memorizedFns.get(fnGenerator)) == null ? void 0 : _a.has(serialisedParams))) {\n (_b = memorizedFns.get(fnGenerator)) == null ? void 0 : _b.set(serialisedParams, fnGenerator(params));\n }\n return (_c = memorizedFns.get(fnGenerator)) == null ? void 0 : _c.get(serialisedParams);\n}\nfunction memoizeFunction(baseFn) {\n return (params, ...rest) => {\n var _a, _b, _c;\n const serialisedParams = JSON.stringify(params, null, 0);\n if (!memorizedMap.has(baseFn)) {\n memorizedMap.set(baseFn, /* @__PURE__ */new Map());\n }\n if (!((_a = memorizedMap.get(baseFn)) == null ? void 0 : _a.has(serialisedParams))) {\n (_b = memorizedMap.get(baseFn)) == null ? void 0 : _b.set(serialisedParams, baseFn(params, ...rest));\n }\n return (_c = memorizedMap.get(baseFn)) == null ? void 0 : _c.get(serialisedParams);\n };\n}\n\n// packages/ag-charts-community/src/scene/shape/text.ts\nvar ellipsis = \"\\u2026\";\nfunction SceneFontChangeDetection(opts) {\n const {\n redraw = 3 /* MAJOR */,\n changeCb\n } = opts != null ? opts : {};\n return SceneChangeDetection({\n redraw,\n type: \"font\",\n changeCb\n });\n}\nvar _Text = class _Text extends Shape {\n constructor() {\n super(...arguments);\n this.x = 0;\n this.y = 0;\n this.lines = [];\n this.text = void 0;\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 }\n onTextChange() {\n var _a, _b;\n this.lines = (_b = (_a = this.text) == null ? void 0 : _a.split(\"\\n\").map(s => s.trim())) != null ? _b : [];\n }\n get font() {\n if (this._font == null || this._dirtyFont) {\n this._dirtyFont = false;\n this._font = getFont(this);\n }\n return this._font;\n }\n computeBBox() {\n const {\n x,\n y,\n lines,\n lineHeight,\n textBaseline,\n textAlign\n } = this;\n const {\n top,\n left,\n width,\n height\n } = _Text.getTextSizeMultiline(lines, getFont(this), textBaseline, textAlign, lineHeight);\n return new BBox(x - left, y - top, width, height);\n }\n getLineHeight(line) {\n var _a, _b;\n if (this.lineHeight) {\n return this.lineHeight;\n }\n const metrics = _Text.measureText(line, this.font, this.textBaseline, this.textAlign);\n return (\n // Fallback to emHeightAscent + emHeightDescent is needed for server-side rendering.\n ((_a = metrics.fontBoundingBoxAscent) != null ? _a : metrics.emHeightAscent) + ((_b = metrics.fontBoundingBoxDescent) != null ? _b : metrics.emHeightDescent)\n );\n }\n isPointInPath(x, y) {\n const point = this.transformPoint(x, y);\n const bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n }\n render(renderCtx) {\n const {\n ctx,\n forceRender,\n stats\n } = renderCtx;\n if (this.dirty === 0 /* NONE */ && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n if (!this.lines.length || !this.layerManager) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n const {\n fill,\n stroke,\n strokeWidth\n } = this;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n const pixelRatio = this.layerManager.canvas.pixelRatio || 1;\n const {\n globalAlpha\n } = ctx;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n const {\n fillShadow\n } = this;\n if (fillShadow == null ? void 0 : 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 this.renderLines((line, x, y) => ctx.fillText(line, x, y));\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n const {\n lineDash,\n lineDashOffset,\n lineCap,\n lineJoin\n } = this;\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 this.renderLines((line, x, y) => ctx.strokeText(line, x, y));\n }\n super.render(renderCtx);\n }\n renderLines(renderCallback) {\n const {\n lines,\n x,\n y\n } = this;\n const lineHeights = lines.map(line => this.getLineHeight(line));\n const totalHeight = lineHeights.reduce((a, b) => a + b, 0);\n let offsetY = (lineHeights[0] - totalHeight) * _Text.getVerticalModifier(this.textBaseline);\n for (let i = 0; i < lines.length; i++) {\n renderCallback(lines[i], x, y + offsetY);\n offsetY += lineHeights[i];\n }\n }\n static wrapLines(text, maxWidth, maxHeight, textProps, wrapping, overflow) {\n const canOverflow = overflow !== \"hide\";\n const measurer = new TextMeasurer(textProps);\n const lines = text.split(/\\r?\\n/g);\n if (lines.length === 0) {\n return {\n lines: void 0,\n truncated: false\n };\n }\n if (wrapping === \"never\") {\n const {\n text: truncText,\n truncated: truncated2\n } = _Text.truncateLine(lines[0], maxWidth, measurer, canOverflow ? \"auto\" : \"never\");\n return {\n lines: truncText != null ? [truncText] : void 0,\n truncated: truncated2\n };\n }\n const wrappedLines = [];\n let cumulativeHeight = 0;\n let truncated = false;\n for (const line of lines) {\n const wrappedLine = _Text.wrapLine(line, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight, canOverflow);\n if (wrappedLine == null) {\n return {\n lines: void 0,\n truncated: false\n };\n }\n wrappedLines.push(...wrappedLine.result);\n cumulativeHeight = wrappedLine.cumulativeHeight;\n if (wrappedLine.truncated) {\n truncated = true;\n break;\n }\n }\n return {\n lines: wrappedLines,\n truncated\n };\n }\n static wrap(text, maxWidth, maxHeight, textProps, wrapping, overflow = \"ellipsis\") {\n var _a;\n const {\n lines,\n truncated\n } = _Text.wrapLines(text, maxWidth, maxHeight, textProps, wrapping, overflow);\n return {\n text: (_a = lines == null ? void 0 : lines.join(\"\\n\").trim()) != null ? _a : \"\",\n truncated\n };\n }\n static wrapLine(text, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight, canOverflow) {\n text = text.trim();\n if (!text) {\n return {\n result: [],\n truncated: false,\n cumulativeHeight\n };\n }\n const initialSize = measurer.size(text);\n if (initialSize.width <= maxWidth) {\n return {\n result: [text],\n truncated: false,\n cumulativeHeight: cumulativeHeight + initialSize.height\n };\n }\n if (initialSize.height > maxHeight || measurer.width(\"W\") > maxWidth) {\n return canOverflow ? {\n result: [],\n truncated: true,\n cumulativeHeight\n } : void 0;\n }\n const words = text.split(/\\s+/g);\n const wrapResult = _Text.wrapLineSequentially(words, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight, canOverflow);\n if (wrapResult == null) {\n return;\n }\n cumulativeHeight = wrapResult.cumulativeHeight;\n let {\n lines\n } = wrapResult;\n if (!(wrapResult.wordsBrokenOrTruncated || wrapResult.linesTruncated)) {\n const linesCount = wrapResult.lines.length;\n const balanced = _Text.wrapLineBalanced(words, maxWidth, measurer, linesCount);\n if (balanced.length === lines.length) {\n lines = balanced;\n }\n }\n const wrappedText = lines.map(ln => ln.join(\" \"));\n return {\n result: wrappedText,\n truncated: wrapResult.linesTruncated,\n cumulativeHeight\n };\n }\n static breakWord(word, firstLineWidth, maxWidth, hyphens, measurer) {\n const isPunctuationAt = index => _Text.punctuationMarks.includes(word[index]);\n const h = hyphens ? measurer.width(\"-\") : 0;\n const breaks = [];\n let partWidth = 0;\n let p = 0;\n for (let i = 0; i < word.length; i++) {\n const c = word[i];\n const w = measurer.width(c);\n const limit = p === 0 ? firstLineWidth : maxWidth;\n if (partWidth + w + h > limit) {\n breaks.push(i);\n partWidth = 0;\n p++;\n }\n partWidth += w;\n }\n const parts = [];\n let start = 0;\n for (const index of breaks) {\n let part = word.substring(start, index);\n if (hyphens && part.length > 0 && !isPunctuationAt(index - 1) && !isPunctuationAt(index)) {\n part += \"-\";\n }\n parts.push(part);\n start = index;\n }\n parts.push(word.substring(start));\n return parts;\n }\n static truncateLine(text, maxWidth, measurer, ellipsisMode) {\n text = text.trimEnd();\n const lineWidth = measurer.width(text);\n if (lineWidth > maxWidth && ellipsisMode === \"never\") {\n return {\n text: void 0,\n truncated: false\n };\n } else if (lineWidth <= maxWidth && ellipsisMode !== \"force\") {\n return {\n text,\n truncated: false\n };\n }\n const ellipsisWidth = measurer.width(ellipsis);\n let trunc = text;\n let truncWidth = lineWidth;\n while (trunc.length > 0 && truncWidth + ellipsisWidth > maxWidth) {\n trunc = trunc.slice(0, -1).trimEnd();\n truncWidth = measurer.width(trunc);\n }\n if (truncWidth + ellipsisWidth <= maxWidth) {\n return {\n text: `${trunc}${ellipsis}`,\n truncated: true\n };\n } else {\n return {\n text: void 0,\n truncated: false\n };\n }\n }\n static wrapLineSequentially(words, maxWidth, maxHeight, measurer, textProps, wrapping, cumulativeHeight, canOverflow) {\n const {\n fontSize = 0,\n lineHeight = fontSize * _Text.defaultLineHeightRatio\n } = textProps;\n const breakWord = wrapping === \"always\" || wrapping === \"hyphenate\";\n const hyphenate = wrapping === \"hyphenate\";\n const spaceWidth = measurer.width(\" \");\n let wordsBrokenOrTruncated = false;\n let linesTruncated = false;\n const lines = [];\n let currentLine = [];\n let lineWidth = 0;\n const getReturnValue = () => ({\n lines,\n linesTruncated,\n wordsBrokenOrTruncated,\n cumulativeHeight\n });\n const truncateLastLine = () => {\n if (!canOverflow) {\n return;\n }\n const lastLine = currentLine.join(\" \");\n const {\n text\n } = _Text.truncateLine(lastLine, maxWidth, measurer, \"force\");\n if (text == null) {\n return;\n }\n currentLine.splice(0, currentLine.length, text);\n linesTruncated = true;\n return getReturnValue();\n };\n const addNewLine = () => {\n const expectedHeight = cumulativeHeight + lineHeight;\n if (expectedHeight >= maxHeight) {\n return false;\n }\n currentLine = [];\n lineWidth = 0;\n cumulativeHeight = expectedHeight;\n lines.push(currentLine);\n return true;\n };\n if (!addNewLine()) {\n return truncateLastLine();\n }\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const wordWidth = measurer.width(word);\n const expectedSpaceWidth = currentLine.length === 0 ? 0 : spaceWidth;\n const expectedLineWidth = lineWidth + expectedSpaceWidth + wordWidth;\n if (expectedLineWidth <= maxWidth) {\n currentLine.push(word);\n lineWidth = expectedLineWidth;\n continue;\n }\n if (wordWidth <= maxWidth) {\n if (!addNewLine()) {\n return truncateLastLine();\n }\n currentLine.push(word);\n lineWidth = wordWidth;\n continue;\n }\n wordsBrokenOrTruncated = true;\n if (breakWord) {\n const availWidth = maxWidth - lineWidth - expectedSpaceWidth;\n const parts = _Text.breakWord(word, availWidth, maxWidth, hyphenate, measurer);\n for (let p = 0; p < parts.length; p++) {\n const part = parts[p];\n part && currentLine.push(part);\n if (p === parts.length - 1) {\n lineWidth = measurer.width(part);\n } else if (!addNewLine()) {\n return truncateLastLine();\n }\n }\n } else if (canOverflow) {\n if (!addNewLine()) {\n return truncateLastLine();\n }\n const {\n text\n } = _Text.truncateLine(word, maxWidth, measurer, \"force\");\n if (text == null) {\n return;\n }\n currentLine.push(text);\n if (i < words.length - 1) {\n linesTruncated = true;\n }\n break;\n } else {\n return;\n }\n }\n return getReturnValue();\n }\n static wrapLineBalanced(words, maxWidth, measurer, linesCount) {\n const totalWordsWidth = words.reduce((sum2, w) => sum2 + measurer.width(w), 0);\n const spaceWidth = measurer.width(\" \");\n const totalSpaceWidth = spaceWidth * (words.length - linesCount - 2);\n const averageLineWidth = (totalWordsWidth + totalSpaceWidth) / linesCount;\n const lines = [];\n let currentLine = [];\n let lineWidth = measurer.width(words[0]);\n let newLine = true;\n for (const word of words) {\n const width = measurer.width(word);\n if (newLine) {\n currentLine = [];\n currentLine.push(word);\n lineWidth = width;\n newLine = false;\n lines.push(currentLine);\n continue;\n }\n const expectedLineWidth = lineWidth + spaceWidth + width;\n if (expectedLineWidth <= averageLineWidth) {\n currentLine.push(word);\n lineWidth = expectedLineWidth;\n } else if (expectedLineWidth <= maxWidth) {\n currentLine.push(word);\n newLine = true;\n } else {\n currentLine = [word];\n lineWidth = width;\n lines.push(currentLine);\n }\n }\n return lines;\n }\n setFont(props) {\n this.fontFamily = props.fontFamily;\n this.fontSize = props.fontSize;\n this.fontStyle = props.fontStyle;\n this.fontWeight = props.fontWeight;\n }\n setAlign(props) {\n this.textAlign = props.textAlign;\n this.textBaseline = props.textBaseline;\n }\n static getVerticalModifier(textBaseline) {\n switch (textBaseline) {\n case \"top\":\n case \"hanging\":\n return 0;\n case \"bottom\":\n case \"alphabetic\":\n case \"ideographic\":\n return 1;\n case \"middle\":\n return 0.5;\n }\n }\n static get textContext() {\n if (!this._textContext) {\n const canvasElement = createElement(\"canvas\");\n canvasElement.width = 0;\n canvasElement.height = 0;\n this._textContext = canvasElement.getContext(\"2d\");\n }\n return this._textContext;\n }\n static measureText(text, font, textBaseline, textAlign) {\n return this._measureText({\n text,\n font,\n textBaseline,\n textAlign\n });\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 static getTextSize(text, font) {\n return this._getTextSize({\n text,\n font\n });\n }\n static getTextSizeMultiline(lines, font, textBaseline = _Text.defaultStyles.textBaseline, textAlign = _Text.defaultStyles.textAlign, lineHeight) {\n var _a, _b;\n let top = 0;\n let left = 0;\n let width = 0;\n let height = 0;\n let baselineDistance = 0;\n for (const [i, text] of lines.entries()) {\n const metrics = this._measureText({\n text,\n font,\n textBaseline,\n textAlign\n });\n left = Math.max(left, metrics.actualBoundingBoxLeft);\n width = Math.max(width, metrics.width);\n if (i == 0) {\n top += metrics.actualBoundingBoxAscent;\n height += metrics.actualBoundingBoxAscent;\n } else {\n baselineDistance += (_a = metrics.fontBoundingBoxAscent) != null ? _a : metrics.emHeightAscent;\n }\n if (i == lines.length - 1) {\n height += metrics.actualBoundingBoxDescent;\n } else {\n baselineDistance += (_b = metrics.fontBoundingBoxDescent) != null ? _b : metrics.emHeightDescent;\n }\n }\n if (lineHeight != null) {\n baselineDistance = (lines.length - 1) * lineHeight;\n }\n height += baselineDistance;\n top += baselineDistance * _Text.getVerticalModifier(textBaseline);\n return {\n top,\n left,\n width,\n height\n };\n }\n};\n_Text.className = \"Text\";\n// The default line spacing for document editors is usually 1.15\n_Text.defaultLineHeightRatio = 1.15;\n_Text.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n textAlign: \"start\",\n fontStyle: void 0,\n fontWeight: void 0,\n fontSize: 10,\n fontFamily: \"sans-serif\",\n textBaseline: \"alphabetic\"\n});\n_Text.ellipsis = ellipsis;\n_Text.punctuationMarks = [\".\", \",\", \"-\", \":\", \";\", \"!\", \"?\", `'`, '\"', \"(\", \")\"];\n_Text._measureText = memoizeFunction(({\n text,\n font,\n textBaseline,\n textAlign\n}) => {\n const ctx = _Text.textContext;\n if (ctx.font !== font) {\n ctx.font = font;\n }\n if (ctx.textBaseline !== textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n if (ctx.textAlign !== textAlign) {\n ctx.textAlign = textAlign;\n }\n return ctx.measureText(text);\n});\n_Text._getTextSize = memoizeFunction(({\n text,\n font\n}) => {\n const ctx = _Text.textContext;\n if (ctx.font !== font) {\n ctx.font = font;\n }\n const metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n});\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], _Text.prototype, \"x\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], _Text.prototype, \"y\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */,\n changeCb: o => o.onTextChange()\n})], _Text.prototype, \"text\", 2);\n__decorateClass([SceneFontChangeDetection()], _Text.prototype, \"fontStyle\", 2);\n__decorateClass([SceneFontChangeDetection()], _Text.prototype, \"fontWeight\", 2);\n__decorateClass([SceneFontChangeDetection()], _Text.prototype, \"fontSize\", 2);\n__decorateClass([SceneFontChangeDetection()], _Text.prototype, \"fontFamily\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], _Text.prototype, \"textAlign\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], _Text.prototype, \"textBaseline\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], _Text.prototype, \"lineHeight\", 2);\nvar Text = _Text;\nvar TextMeasurer = class {\n constructor(font) {\n this.font = isString(font) ? font : getFont(font);\n }\n size(text) {\n return text.includes(\"\\n\") ? Text.getTextSizeMultiline(text.split(\"\\n\").map(s => s.trim()), this.font) : Text.getTextSize(text, this.font);\n }\n width(text) {\n const {\n width\n } = this.size(text);\n return width;\n }\n};\nfunction getFont(fontProps) {\n const {\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight\n } = fontProps;\n return [fontStyle != null ? fontStyle : \"\", fontWeight != null ? fontWeight : \"\", fontSize + \"px\", fontFamily].join(\" \").trim();\n}\n\n// packages/ag-charts-community/src/chart/label.ts\nvar Label = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = true;\n this.fontSize = 12;\n this.fontFamily = \"Verdana, sans-serif\";\n }\n getFont() {\n return getFont(this);\n }\n};\n__decorateClass([Validate(BOOLEAN)], Label.prototype, \"enabled\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], Label.prototype, \"color\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n})], Label.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n})], Label.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Label.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING)], Label.prototype, \"fontFamily\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], Label.prototype, \"formatter\", 2);\nfunction calculateLabelRotation(opts) {\n const {\n parallelFlipRotation = 0,\n regularFlipRotation = 0\n } = opts;\n const configuredRotation = opts.rotation ? normalizeAngle360(toRadians(opts.rotation)) : 0;\n const parallelFlipFlag = !configuredRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n const regularFlipFlag = !configuredRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n let defaultRotation = 0;\n if (opts.parallel) {\n defaultRotation = parallelFlipFlag * Math.PI / 2;\n } else if (regularFlipFlag === -1) {\n defaultRotation = Math.PI;\n }\n return {\n configuredRotation,\n defaultRotation,\n parallelFlipFlag,\n regularFlipFlag\n };\n}\nfunction getLabelSpacing(minSpacing, rotated) {\n if (!isNaN(minSpacing)) {\n return minSpacing;\n }\n return rotated ? 0 : 10;\n}\nfunction getTextBaseline(parallel, labelRotation, sideFlag, parallelFlipFlag) {\n if (parallel && !labelRotation) {\n return sideFlag * parallelFlipFlag === -1 ? \"hanging\" : \"bottom\";\n }\n return \"middle\";\n}\nfunction getTextAlign(parallel, labelRotation, labelAutoRotation, sideFlag, regularFlipFlag) {\n const labelRotated = labelRotation > 0 && labelRotation <= Math.PI;\n const labelAutoRotated = labelAutoRotation > 0 && labelAutoRotation <= Math.PI;\n const alignFlag = labelRotated || labelAutoRotated ? -1 : 1;\n if (parallel) {\n if (labelRotation || labelAutoRotation) {\n if (sideFlag * alignFlag === -1) {\n return \"end\";\n }\n } else {\n return \"center\";\n }\n } else if (sideFlag * regularFlipFlag === -1) {\n return \"end\";\n }\n return \"start\";\n}\nfunction calculateLabelBBox(text, bbox, labelX, labelY, labelMatrix) {\n const {\n width,\n height\n } = bbox;\n const translatedBBox = new BBox(labelX, labelY, 0, 0);\n labelMatrix.transformBBox(translatedBBox, bbox);\n const {\n x,\n y\n } = bbox;\n bbox.width = width;\n bbox.height = height;\n return {\n point: {\n x,\n y\n },\n label: {\n text,\n width,\n height\n }\n };\n}\n\n// packages/ag-charts-community/src/chart/layers.ts\nvar Layers = /* @__PURE__ */(Layers2 => {\n Layers2[Layers2[\"SERIES_BACKGROUND_ZINDEX\"] = 0] = \"SERIES_BACKGROUND_ZINDEX\";\n Layers2[Layers2[\"AXIS_GRID_ZINDEX\"] = 1] = \"AXIS_GRID_ZINDEX\";\n Layers2[Layers2[\"AXIS_ZINDEX\"] = 2] = \"AXIS_ZINDEX\";\n Layers2[Layers2[\"SERIES_CROSSLINE_RANGE_ZINDEX\"] = 3] = \"SERIES_CROSSLINE_RANGE_ZINDEX\";\n Layers2[Layers2[\"SERIES_LAYER_ZINDEX\"] = 4] = \"SERIES_LAYER_ZINDEX\";\n Layers2[Layers2[\"SERIES_HIGHLIGHT_ZINDEX\"] = 5] = \"SERIES_HIGHLIGHT_ZINDEX\";\n Layers2[Layers2[\"AXIS_FOREGROUND_ZINDEX\"] = 6] = \"AXIS_FOREGROUND_ZINDEX\";\n Layers2[Layers2[\"SERIES_CROSSHAIR_ZINDEX\"] = 7] = \"SERIES_CROSSHAIR_ZINDEX\";\n Layers2[Layers2[\"SERIES_LABEL_ZINDEX\"] = 8] = \"SERIES_LABEL_ZINDEX\";\n Layers2[Layers2[\"SERIES_CROSSLINE_LINE_ZINDEX\"] = 9] = \"SERIES_CROSSLINE_LINE_ZINDEX\";\n Layers2[Layers2[\"SERIES_ANNOTATION_ZINDEX\"] = 10] = \"SERIES_ANNOTATION_ZINDEX\";\n Layers2[Layers2[\"LEGEND_ZINDEX\"] = 11] = \"LEGEND_ZINDEX\";\n Layers2[Layers2[\"NAVIGATOR_ZINDEX\"] = 12] = \"NAVIGATOR_ZINDEX\";\n return Layers2;\n})(Layers || {});\n\n// packages/ag-charts-community/src/util/value.ts\nfunction isStringObject(value) {\n return value != null && Object.hasOwn(value, \"toString\") && isString(value.toString());\n}\nfunction isNumberObject(value) {\n return value != null && Object.hasOwn(value, \"valueOf\") && isFiniteNumber(value.valueOf());\n}\nfunction isContinuous(value) {\n return isFiniteNumber(value) || isValidDate(value) || isNumberObject(value);\n}\nfunction checkDatum(value, isContinuousScale) {\n return value != null && (!isContinuousScale || isContinuous(value));\n}\nfunction transformIntegratedCategoryValue(value) {\n if (isStringObject(value) && Object.hasOwn(value, \"id\")) {\n return value.id;\n }\n return value;\n}\n\n// packages/ag-charts-community/src/chart/crossline/crossLine.ts\nvar MATCHING_CROSSLINE_TYPE = property => {\n return property === \"value\" ? predicateWithMessage((_, ctx) => ctx.target[\"type\"] === \"line\", ctx => ctx.target[\"type\"] === \"range\" ? `crossLine type 'range' to have a 'range' property instead of 'value'` : `crossLine property 'type' to be 'line'`) : predicateWithMessage((_, ctx) => ctx.target[\"type\"] === \"range\", ctx => ctx.target.type === \"line\" ? `crossLine type 'line' to have a 'value' property instead of 'range'` : `crossLine property 'type' to be 'range'`);\n};\nvar validateCrossLineValues = (type, value, range3, scale2) => {\n const lineCrossLine = type === \"line\" && value !== void 0;\n const rangeCrossLine = type === \"range\" && range3 !== void 0;\n if (!lineCrossLine && !rangeCrossLine) {\n return true;\n }\n const [start, end] = range3 != null ? range3 : [value, void 0];\n const isContinuous2 = ContinuousScale.is(scale2) || OrdinalTimeScale.is(scale2);\n const validStart = checkDatum(start, isContinuous2) && !isNaN(scale2.convert(start));\n const validEnd = checkDatum(end, isContinuous2) && !isNaN(scale2.convert(end));\n if (lineCrossLine && validStart || rangeCrossLine && validStart && validEnd) {\n return true;\n }\n const message = [`Expecting crossLine`];\n if (rangeCrossLine) {\n if (!validStart) {\n message.push(`range start ${stringify(start)}`);\n }\n if (!validEnd) {\n message.push(`${validStart ? \"\" : \"and \"}range end ${stringify(end)}`);\n }\n } else {\n message.push(`value ${stringify(start)}`);\n }\n message.push(`to match the axis scale domain.`);\n Logger.warnOnce(message.join(\" \"));\n return false;\n};\n\n// packages/ag-charts-community/src/chart/crossline/crossLineLabelPosition.ts\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};\nfunction calculateLabelTranslation({\n yDirection,\n padding = 0,\n position = \"top\",\n bbox\n}) {\n const crossLineTranslationDirections = yDirection ? horizontalCrosslineTranslationDirections : verticalCrossLineTranslationDirections;\n const {\n xTranslationDirection,\n yTranslationDirection\n } = crossLineTranslationDirections[position];\n const w = yDirection ? bbox.width : bbox.height;\n const h = yDirection ? bbox.height : bbox.width;\n const xTranslation = xTranslationDirection * (padding + w / 2);\n const yTranslation = yTranslationDirection * (padding + h / 2);\n return {\n xTranslation,\n yTranslation\n };\n}\nfunction calculateLabelChartPadding({\n yDirection,\n bbox,\n padding = 0,\n position = \"top\"\n}) {\n const chartPadding = {};\n if (position.startsWith(\"inside\")) return chartPadding;\n if (position === \"top\" && !yDirection) {\n chartPadding.top = padding + bbox.height;\n } else if (position === \"bottom\" && !yDirection) {\n chartPadding.bottom = padding + bbox.height;\n } else if (position === \"left\" && yDirection) {\n chartPadding.left = padding + bbox.width;\n } else if (position === \"right\" && yDirection) {\n chartPadding.right = padding + bbox.width;\n }\n return chartPadding;\n}\nvar POSITION_TOP_COORDINATES = ({\n yDirection,\n xEnd,\n yStart,\n yEnd\n}) => {\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 : (yStart + yEnd) / 2\n };\n }\n};\nvar POSITION_LEFT_COORDINATES = ({\n yDirection,\n xStart,\n xEnd,\n yStart,\n yEnd\n}) => {\n if (yDirection) {\n return {\n x: xStart,\n y: isNaN(yEnd) ? yStart : (yStart + yEnd) / 2\n };\n } else {\n return {\n x: xEnd / 2,\n y: yStart\n };\n }\n};\nvar POSITION_RIGHT_COORDINATES = ({\n yDirection,\n xEnd,\n yStart,\n yEnd\n}) => {\n if (yDirection) {\n return {\n x: xEnd,\n y: isNaN(yEnd) ? yStart : (yStart + yEnd) / 2\n };\n } else {\n return {\n x: xEnd / 2,\n y: isNaN(yEnd) ? yStart : yEnd\n };\n }\n};\nvar POSITION_BOTTOM_COORDINATES = ({\n yDirection,\n xStart,\n xEnd,\n yStart,\n yEnd\n}) => {\n if (yDirection) {\n return {\n x: xEnd / 2,\n y: isNaN(yEnd) ? yStart : yEnd\n };\n } else {\n return {\n x: xStart,\n y: isNaN(yEnd) ? yStart : (yStart + yEnd) / 2\n };\n }\n};\nvar POSITION_INSIDE_COORDINATES = ({\n xEnd,\n yStart,\n yEnd\n}) => {\n return {\n x: xEnd / 2,\n y: isNaN(yEnd) ? yStart : (yStart + yEnd) / 2\n };\n};\nvar POSITION_TOP_LEFT_COORDINATES = ({\n yDirection,\n xStart,\n xEnd,\n yStart\n}) => {\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 = ({\n yDirection,\n xStart,\n yStart,\n yEnd\n}) => {\n if (yDirection) {\n return {\n x: xStart,\n y: isNaN(yEnd) ? yStart : yEnd\n };\n } else {\n return {\n x: xStart,\n y: yStart\n };\n }\n};\nvar POSITION_TOP_RIGHT_COORDINATES = ({\n yDirection,\n xEnd,\n yStart,\n yEnd\n}) => {\n if (yDirection) {\n return {\n x: xEnd,\n y: yStart\n };\n } else {\n return {\n x: xEnd,\n y: isNaN(yEnd) ? yStart : yEnd\n };\n }\n};\nvar POSITION_BOTTOM_RIGHT_COORDINATES = ({\n yDirection,\n xStart,\n xEnd,\n yStart,\n yEnd\n}) => {\n if (yDirection) {\n return {\n x: xEnd,\n y: isNaN(yEnd) ? yStart : yEnd\n };\n } else {\n return {\n x: xStart,\n y: isNaN(yEnd) ? yStart : yEnd\n };\n }\n};\nvar labelDirectionHandling = {\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};\n\n// packages/ag-charts-community/src/chart/crossline/cartesianCrossLine.ts\nvar CROSSLINE_LABEL_POSITION = UNION([\"top\", \"left\", \"right\", \"bottom\", \"topLeft\", \"topRight\", \"bottomLeft\", \"bottomRight\", \"inside\", \"insideLeft\", \"insideRight\", \"insideTop\", \"insideBottom\", \"insideTopLeft\", \"insideBottomLeft\", \"insideTopRight\", \"insideBottomRight\"], \"crossLine label position\");\nvar CartesianCrossLineLabel = class {\n constructor() {\n this.enabled = void 0;\n this.text = void 0;\n this.fontStyle = void 0;\n this.fontWeight = void 0;\n this.fontSize = 14;\n this.fontFamily = \"Verdana, sans-serif\";\n this.padding = 5;\n this.color = \"rgba(87, 87, 87, 1)\";\n this.position = void 0;\n this.rotation = void 0;\n this.parallel = void 0;\n }\n};\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"enabled\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"text\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], CartesianCrossLineLabel.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING)], CartesianCrossLineLabel.prototype, \"fontFamily\", 2);\n__decorateClass([Validate(NUMBER)], CartesianCrossLineLabel.prototype, \"padding\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"color\", 2);\n__decorateClass([Validate(CROSSLINE_LABEL_POSITION, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"position\", 2);\n__decorateClass([Validate(DEGREE, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"rotation\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], CartesianCrossLineLabel.prototype, \"parallel\", 2);\nvar _CartesianCrossLine = class _CartesianCrossLine {\n constructor() {\n this.id = createId(this);\n this.enabled = void 0;\n this.type = void 0;\n this.range = void 0;\n this.value = void 0;\n this.fill = void 0;\n this.fillOpacity = void 0;\n this.stroke = void 0;\n this.strokeWidth = void 0;\n this.strokeOpacity = void 0;\n this.lineDash = void 0;\n this.label = new CartesianCrossLineLabel();\n this.scale = void 0;\n this.clippedRange = [-Infinity, Infinity];\n this.gridLength = 0;\n this.sideFlag = -1;\n this.parallelFlipRotation = 0;\n this.regularFlipRotation = 0;\n this.direction = \"x\" /* X */;\n this.group = new Group({\n name: `${this.id}`,\n layer: true,\n zIndex: _CartesianCrossLine.LINE_LAYER_ZINDEX\n });\n this.labelGroup = new Group({\n name: `${this.id}`,\n layer: true,\n zIndex: _CartesianCrossLine.LABEL_LAYER_ZINDEX\n });\n this.crossLineRange = new Range();\n this.crossLineLabel = new Text();\n this.labelPoint = void 0;\n this.data = [];\n this.startLine = false;\n this.endLine = false;\n this.isRange = false;\n const {\n group: group2,\n labelGroup,\n crossLineRange,\n crossLineLabel\n } = this;\n group2.append(crossLineRange);\n labelGroup.append(crossLineLabel);\n crossLineRange.pointerEvents = 1 /* None */;\n }\n update(visible) {\n const {\n enabled,\n data,\n type,\n value,\n range: range3,\n scale: scale2\n } = this;\n if (!type || !scale2 || !enabled || !visible || !validateCrossLineValues(type, value, range3, scale2) || data.length === 0) {\n this.group.visible = false;\n this.labelGroup.visible = false;\n return;\n }\n this.group.visible = visible;\n this.labelGroup.visible = visible;\n this.group.zIndex = this.getZIndex(this.isRange);\n this.updateNodes();\n }\n calculateLayout(visible, reversedAxis) {\n if (!visible) {\n return;\n }\n const dataCreated = this.createNodeData(reversedAxis);\n if (!dataCreated) {\n return;\n }\n const {\n sideFlag,\n gridLength,\n data\n } = this;\n const boxes = [];\n const x1 = 0;\n const x2 = sideFlag * gridLength;\n const y1 = data[0];\n const y2 = data[1];\n const crossLineBox = new BBox(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));\n boxes.push(crossLineBox);\n const labelBox = this.computeLabelBBox();\n if (labelBox) {\n boxes.push(labelBox);\n }\n return BBox.merge(boxes);\n }\n updateNodes() {\n this.updateRangeNode();\n if (this.label.enabled) {\n this.updateLabel();\n this.positionLabel();\n }\n }\n createNodeData(reversedAxis) {\n var _a, _b, _c;\n const {\n scale: scale2,\n gridLength,\n sideFlag,\n direction,\n label: {\n position = \"top\"\n },\n clippedRange,\n strokeWidth = 0\n } = this;\n this.data = [];\n if (!scale2) {\n return false;\n }\n const bandwidth = (_a = scale2.bandwidth) != null ? _a : 0;\n const step = (_b = scale2.step) != null ? _b : 0;\n const padding = (reversedAxis ? -1 : 1) * (scale2 instanceof BandScale ? (step - bandwidth) / 2 : 0);\n const [xStart, xEnd] = [0, sideFlag * gridLength];\n let [yStart, yEnd] = this.getRange();\n const ordinalTimeScalePadding = yEnd === void 0 && OrdinalTimeScale.is(scale2) ? bandwidth / 2 + padding : 0;\n let [clampedYStart, clampedYEnd] = [Number(scale2.convert(yStart, {\n clampMode: \"clamped\"\n })) - padding + ordinalTimeScalePadding, scale2.convert(yEnd, {\n clampMode: \"clamped\"\n }) + bandwidth + padding];\n clampedYStart = clampArray(clampedYStart, clippedRange);\n clampedYEnd = clampArray(clampedYEnd, clippedRange);\n [yStart, yEnd] = [Number(scale2.convert(yStart)) + ordinalTimeScalePadding, scale2.convert(yEnd) + bandwidth];\n const validRange = (yStart === clampedYStart || yEnd === clampedYEnd || clampedYStart !== clampedYEnd) && Math.abs(clampedYEnd - clampedYStart) > 0;\n if (validRange && clampedYStart > clampedYEnd) {\n [clampedYStart, clampedYEnd] = [clampedYEnd, clampedYStart];\n [yStart, yEnd] = [yEnd, yStart];\n }\n if (yStart - padding >= clampedYStart) yStart -= padding;\n if (yEnd + padding <= clampedYEnd) yEnd += padding;\n this.isRange = validRange;\n this.startLine = strokeWidth > 0 && yStart >= clampedYStart && yStart <= clampedYStart + padding;\n this.endLine = strokeWidth > 0 && yEnd >= clampedYEnd - bandwidth - padding && yEnd <= clampedYEnd;\n if (!validRange && !this.startLine && !this.endLine) {\n return false;\n }\n this.data = [clampedYStart, clampedYEnd];\n if (this.label.enabled) {\n const yDirection = direction === \"y\" /* Y */;\n const {\n c = POSITION_TOP_COORDINATES\n } = (_c = labelDirectionHandling[position]) != null ? _c : {};\n const {\n x: labelX,\n y: labelY\n } = c({\n yDirection,\n xStart,\n xEnd,\n yStart: clampedYStart,\n yEnd: clampedYEnd\n });\n this.labelPoint = {\n x: labelX,\n y: labelY\n };\n }\n return true;\n }\n updateRangeNode() {\n var _a;\n const {\n crossLineRange,\n sideFlag,\n gridLength,\n data,\n startLine,\n endLine,\n isRange,\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n lineDash\n } = this;\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 : 1;\n crossLineRange.stroke = stroke;\n crossLineRange.strokeWidth = strokeWidth != null ? strokeWidth : 1;\n crossLineRange.strokeOpacity = (_a = this.strokeOpacity) != null ? _a : 1;\n crossLineRange.lineDash = lineDash;\n }\n updateLabel() {\n const {\n crossLineLabel,\n label\n } = this;\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 positionLabel() {\n const {\n crossLineLabel,\n labelPoint: {\n x = void 0,\n y = void 0\n } = {},\n label: {\n parallel,\n rotation,\n position = \"top\",\n padding = 0\n },\n direction,\n parallelFlipRotation,\n regularFlipRotation\n } = this;\n if (x === void 0 || y === void 0) {\n return;\n }\n const {\n defaultRotation,\n configuredRotation\n } = calculateLabelRotation({\n rotation,\n parallel,\n regularFlipRotation,\n parallelFlipRotation\n });\n crossLineLabel.rotation = defaultRotation + configuredRotation;\n crossLineLabel.textBaseline = \"middle\";\n crossLineLabel.textAlign = \"center\";\n const bbox = crossLineLabel.computeTransformedBBox();\n if (!bbox) {\n return;\n }\n const yDirection = direction === \"y\" /* Y */;\n const {\n xTranslation,\n yTranslation\n } = calculateLabelTranslation({\n yDirection,\n padding,\n position,\n bbox\n });\n crossLineLabel.translationX = x + xTranslation;\n crossLineLabel.translationY = y + yTranslation;\n }\n getZIndex(isRange = false) {\n if (isRange) {\n return _CartesianCrossLine.RANGE_LAYER_ZINDEX;\n }\n return _CartesianCrossLine.LINE_LAYER_ZINDEX;\n }\n getRange() {\n var _a;\n const {\n value,\n range: range3,\n scale: scale2\n } = this;\n const isContinuous2 = ContinuousScale.is(scale2) || OrdinalTimeScale.is(scale2);\n const start = (_a = range3 == null ? void 0 : range3[0]) != null ? _a : value;\n let end = range3 == null ? void 0 : range3[1];\n if (!isContinuous2 && end === void 0) {\n end = start;\n }\n if (isContinuous2 && start === end) {\n end = void 0;\n }\n return [start, end];\n }\n computeLabelBBox() {\n const {\n label\n } = this;\n if (!label.enabled) {\n return;\n }\n const tempText = new Text();\n tempText.fontFamily = label.fontFamily;\n tempText.fontSize = label.fontSize;\n tempText.fontStyle = label.fontStyle;\n tempText.fontWeight = label.fontWeight;\n tempText.text = label.text;\n const {\n labelPoint: {\n x = void 0,\n y = void 0\n } = {},\n label: {\n parallel,\n rotation,\n position = \"top\",\n padding = 0\n },\n direction,\n parallelFlipRotation,\n regularFlipRotation\n } = this;\n if (x === void 0 || y === void 0) {\n return;\n }\n const {\n configuredRotation\n } = calculateLabelRotation({\n rotation,\n parallel,\n regularFlipRotation,\n parallelFlipRotation\n });\n tempText.rotation = configuredRotation;\n tempText.textBaseline = \"middle\";\n tempText.textAlign = \"center\";\n const bbox = tempText.computeTransformedBBox();\n if (!bbox) {\n return;\n }\n const yDirection = direction === \"y\" /* Y */;\n const {\n xTranslation,\n yTranslation\n } = calculateLabelTranslation({\n yDirection,\n padding,\n position,\n bbox\n });\n tempText.translationX = x + xTranslation;\n tempText.translationY = y + yTranslation;\n return tempText.computeTransformedBBox();\n }\n calculatePadding(padding) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const {\n isRange,\n startLine,\n endLine,\n direction,\n label: {\n padding: labelPadding = 0,\n position = \"top\"\n }\n } = this;\n if (!isRange && !startLine && !endLine) {\n return;\n }\n const crossLineLabelBBox = this.computeLabelBBox();\n if ((crossLineLabelBBox == null ? void 0 : crossLineLabelBBox.x) == null || (crossLineLabelBBox == null ? void 0 : crossLineLabelBBox.y) == null) {\n return;\n }\n const chartPadding = calculateLabelChartPadding({\n yDirection: direction === \"y\" /* Y */,\n padding: labelPadding,\n position,\n bbox: crossLineLabelBBox\n });\n padding.left = Math.max((_a = padding.left) != null ? _a : 0, (_b = chartPadding.left) != null ? _b : 0);\n padding.right = Math.max((_c = padding.right) != null ? _c : 0, (_d = chartPadding.right) != null ? _d : 0);\n padding.top = Math.max((_e = padding.top) != null ? _e : 0, (_f = chartPadding.top) != null ? _f : 0);\n padding.bottom = Math.max((_g = padding.bottom) != null ? _g : 0, (_h = chartPadding.bottom) != null ? _h : 0);\n }\n};\n_CartesianCrossLine.LINE_LAYER_ZINDEX = 9 /* SERIES_CROSSLINE_LINE_ZINDEX */;\n_CartesianCrossLine.RANGE_LAYER_ZINDEX = 3 /* SERIES_CROSSLINE_RANGE_ZINDEX */;\n_CartesianCrossLine.LABEL_LAYER_ZINDEX = 8 /* SERIES_LABEL_ZINDEX */;\n_CartesianCrossLine.className = \"CrossLine\";\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], _CartesianCrossLine.prototype, \"enabled\", 2);\n__decorateClass([Validate(UNION([\"range\", \"line\"], \"a crossLine type\"), {\n optional: true\n})], _CartesianCrossLine.prototype, \"type\", 2);\n__decorateClass([Validate(AND(MATCHING_CROSSLINE_TYPE(\"range\"), ARRAY.restrict({\n length: 2\n})), {\n optional: true\n})], _CartesianCrossLine.prototype, \"range\", 2);\n__decorateClass([Validate(MATCHING_CROSSLINE_TYPE(\"value\"), {\n optional: true\n})], _CartesianCrossLine.prototype, \"value\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], _CartesianCrossLine.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], _CartesianCrossLine.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], _CartesianCrossLine.prototype, \"stroke\", 2);\n__decorateClass([Validate(NUMBER, {\n optional: true\n})], _CartesianCrossLine.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], _CartesianCrossLine.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH, {\n optional: true\n})], _CartesianCrossLine.prototype, \"lineDash\", 2);\nvar CartesianCrossLine = _CartesianCrossLine;\n\n// packages/ag-charts-community/src/module/moduleMap.ts\nvar ModuleMap = class {\n constructor() {\n this.moduleMap = /* @__PURE__ */new Map();\n }\n *modules() {\n for (const m of this.moduleMap.values()) {\n yield m.moduleInstance;\n }\n }\n addModule(module, moduleFactory) {\n if (this.moduleMap.has(module.optionsKey)) {\n throw new Error(`AG Charts - module already initialised: ${module.optionsKey}`);\n }\n this.moduleMap.set(module.optionsKey, {\n module,\n moduleInstance: moduleFactory(module)\n });\n }\n removeModule(module) {\n var _a;\n const moduleKey = isString(module) ? module : module.optionsKey;\n (_a = this.moduleMap.get(moduleKey)) == null ? void 0 : _a.moduleInstance.destroy();\n this.moduleMap.delete(moduleKey);\n }\n getModule(module) {\n var _a;\n return (_a = this.moduleMap.get(isString(module) ? module : module.optionsKey)) == null ? void 0 : _a.moduleInstance;\n }\n isEnabled(module) {\n return this.moduleMap.has(isString(module) ? module : module.optionsKey);\n }\n mapModules(callback) {\n return Array.from(this.moduleMap.values(), (m, i) => callback(m.moduleInstance, i));\n }\n destroy() {\n var _a;\n for (const moduleKey of this.moduleMap.keys()) {\n (_a = this.moduleMap.get(moduleKey)) == null ? void 0 : _a.moduleInstance.destroy();\n }\n this.moduleMap.clear();\n }\n};\n\n// packages/ag-charts-community/src/motion/resetMotion.ts\nvar resetMotion_exports = {};\n__export(resetMotion_exports, {\n resetMotion: () => resetMotion\n});\nfunction resetMotion(selectionsOrNodes, propsFn) {\n const {\n nodes,\n selections\n } = deconstructSelectionsOrNodes(selectionsOrNodes);\n for (const selection of selections) {\n for (const node of selection.nodes()) {\n const from = propsFn(node, node.datum);\n node.setProperties(from);\n }\n selection.cleanup();\n }\n for (const node of nodes) {\n const from = propsFn(node, node.datum);\n node.setProperties(from);\n }\n}\n\n// packages/ag-charts-community/src/motion/states.ts\nvar StateMachine = class {\n constructor(initialState, states, preTransitionCb) {\n this.states = states;\n this.preTransitionCb = preTransitionCb;\n this.debug = Debug.create(true, \"animation\");\n this.state = initialState;\n this.debug(`%c${this.constructor.name} | init -> ${initialState}`, \"color: green\");\n }\n transition(event, data) {\n var _a, _b;\n const currentStateConfig = this.states[this.state];\n const destinationTransition = currentStateConfig == null ? void 0 : currentStateConfig[event];\n if (!destinationTransition) {\n this.debug(`%c${this.constructor.name} | ${this.state} -> ${event} -> ${this.state}`, \"color: grey\");\n return;\n }\n let destinationState = this.state;\n if (typeof destinationTransition === \"string\") {\n destinationState = destinationTransition;\n } else if (typeof destinationTransition === \"object\") {\n destinationState = destinationTransition.target;\n }\n this.debug(`%c${this.constructor.name} | ${this.state} -> ${event} -> ${destinationState}`, \"color: green\");\n (_a = this.preTransitionCb) == null ? void 0 : _a.call(this, this.state, destinationState);\n this.state = destinationState;\n if (typeof destinationTransition === \"function\") {\n destinationTransition(data);\n } else if (typeof destinationTransition === \"object\") {\n (_b = destinationTransition.action) == null ? void 0 : _b.call(destinationTransition, data);\n }\n return this.state;\n }\n};\n\n// packages/ag-charts-community/src/util/numberFormat.ts\nvar group = content => `(${content})`;\nvar optionalGroup = content => `${group(content)}?`;\nvar nonCapturingGroup = content => optionalGroup(`?:${content}`);\nvar formatRegEx = (() => {\n const fill = \".\";\n const align = \"[<>=^]\";\n const sign = \"[+\\\\-( ]\";\n const symbol = \"[$\\u20AC\\xA3\\xA5\\u20A3\\u20B9#]\";\n const zero = \"0\";\n const width = \"\\\\d+\";\n const comma = \",\";\n const precision = \"\\\\d+\";\n const tilde = \"~\";\n const type = \"[%a-z]\";\n return new RegExp([\"^\", nonCapturingGroup(`${optionalGroup(fill)}${group(align)}`), optionalGroup(sign), optionalGroup(symbol), optionalGroup(zero), optionalGroup(width), optionalGroup(comma), nonCapturingGroup(`\\\\.${group(precision)}`), optionalGroup(tilde), optionalGroup(type), \"$\"].join(\"\"), \"i\");\n})();\nvar surroundedRegEx = (() => {\n const prefix = \".*?\";\n const content = \".+?\";\n const suffix = \".*?\";\n return new RegExp([\"^\", group(prefix), `#\\\\{${group(content)}\\\\}`, group(suffix), \"$\"].join(\"\"));\n})();\nfunction parseFormatter(formatter) {\n let prefix;\n let suffix;\n const surrounded = surroundedRegEx.exec(formatter);\n if (surrounded) {\n [, prefix, formatter, suffix] = surrounded;\n }\n const match = formatRegEx.exec(formatter);\n if (!match) {\n throw new Error(`The number formatter is invalid: ${formatter}`);\n }\n const [, fill, align, sign, symbol, zero, width, comma, precision, trim, type] = match;\n return {\n fill,\n align,\n sign,\n symbol,\n zero,\n width: parseInt(width),\n comma,\n precision: parseInt(precision),\n trim: Boolean(trim),\n type,\n prefix,\n suffix\n };\n}\nfunction format(formatter) {\n const options = typeof formatter === \"string\" ? parseFormatter(formatter) : formatter;\n const {\n fill,\n align,\n sign = \"-\",\n symbol,\n zero,\n width,\n comma,\n type,\n prefix = \"\",\n suffix = \"\",\n precision\n } = options;\n let {\n trim\n } = options;\n const precisionIsNaN = precision === void 0 || isNaN(precision);\n let formatBody;\n if (!type) {\n formatBody = decimalTypes[\"g\"];\n trim = true;\n } else if (type in decimalTypes && type in integerTypes) {\n formatBody = precisionIsNaN ? integerTypes[type] : decimalTypes[type];\n } else if (type in decimalTypes) {\n formatBody = decimalTypes[type];\n } else if (type in integerTypes) {\n formatBody = integerTypes[type];\n } else {\n throw new Error(`The number formatter type is invalid: ${type}`);\n }\n let formatterPrecision;\n if (precision == null || precisionIsNaN) {\n formatterPrecision = type ? 6 : 12;\n } else {\n formatterPrecision = precision;\n }\n return n => {\n let result = formatBody(n, formatterPrecision);\n if (trim) {\n result = removeTrailingZeros(result);\n }\n if (comma) {\n result = insertSeparator(result, comma);\n }\n result = addSign(n, result, sign);\n if (symbol && symbol !== \"#\") {\n result = `${symbol}${result}`;\n }\n if (symbol === \"#\" && type === \"x\") {\n result = `0x${result}`;\n }\n if (type === \"s\") {\n result = `${result}${getSIPrefix(n)}`;\n }\n if (type === \"%\" || type === \"p\") {\n result = `${result}%`;\n }\n if (width != null && !isNaN(width)) {\n result = addPadding(result, width, fill != null ? fill : zero, align);\n }\n result = `${prefix}${result}${suffix}`;\n return result;\n };\n}\nvar absFloor = n => Math.floor(Math.abs(n));\nvar integerTypes = {\n b: n => absFloor(n).toString(2),\n c: n => String.fromCharCode(n),\n d: n => Math.round(Math.abs(n)).toFixed(0),\n o: n => absFloor(n).toString(8),\n x: n => absFloor(n).toString(16),\n X: n => integerTypes.x(n).toUpperCase(),\n n: n => integerTypes.d(n),\n \"%\": n => `${absFloor(n * 100).toFixed(0)}`\n};\nvar decimalTypes = {\n e: (n, f) => Math.abs(n).toExponential(f),\n E: (n, f) => decimalTypes.e(n, f).toUpperCase(),\n f: (n, f) => Math.abs(n).toFixed(f),\n F: (n, f) => decimalTypes.f(n, f).toUpperCase(),\n g: (n, f) => {\n if (n === 0) {\n return \"0\";\n }\n const a = Math.abs(n);\n const p = Math.floor(Math.log10(a));\n if (p >= -4 && p < f) {\n return a.toFixed(f - 1 - p);\n }\n return a.toExponential(f - 1);\n },\n G: (n, f) => decimalTypes.g(n, f).toUpperCase(),\n n: (n, f) => decimalTypes.g(n, f),\n p: (n, f) => decimalTypes.r(n * 100, f),\n r: (n, f) => {\n if (n === 0) {\n return \"0\";\n }\n const a = Math.abs(n);\n const p = Math.floor(Math.log10(a));\n const q = p - (f - 1);\n if (q <= 0) {\n return a.toFixed(-q);\n }\n const x = Math.pow(10, q);\n return (Math.round(a / x) * x).toFixed();\n },\n s: (n, f) => {\n const p = getSIPrefixPower(n);\n return decimalTypes.r(n / Math.pow(10, p), f);\n },\n \"%\": (n, f) => decimalTypes.f(n * 100, f)\n};\nfunction removeTrailingZeros(numString) {\n return numString.replace(/\\.0+$/, \"\").replace(/(\\.[1-9])0+$/, \"$1\");\n}\nfunction insertSeparator(numString, separator) {\n let dotIndex = numString.indexOf(\".\");\n if (dotIndex < 0) {\n dotIndex = numString.length;\n }\n const integerChars = numString.substring(0, dotIndex).split(\"\");\n const fractionalPart = numString.substring(dotIndex);\n for (let i = integerChars.length - 3; i > 0; i -= 3) {\n integerChars.splice(i, 0, separator);\n }\n return `${integerChars.join(\"\")}${fractionalPart}`;\n}\nfunction getSIPrefix(n) {\n return siPrefixes[getSIPrefixPower(n)];\n}\nfunction getSIPrefixPower(n) {\n return clamp(minSIPrefix, n ? Math.floor(Math.log10(Math.abs(n)) / 3) * 3 : 0, maxSIPrefix);\n}\nvar minSIPrefix = -24;\nvar maxSIPrefix = 24;\nvar siPrefixes = {\n [minSIPrefix]: \"y\",\n [-21]: \"z\",\n [-18]: \"a\",\n [-15]: \"f\",\n [-12]: \"p\",\n [-9]: \"n\",\n [-6]: \"\\xB5\",\n [-3]: \"m\",\n [0]: \"\",\n [3]: \"k\",\n [6]: \"M\",\n [9]: \"G\",\n [12]: \"T\",\n [15]: \"P\",\n [18]: \"E\",\n [21]: \"Z\",\n [maxSIPrefix]: \"Y\"\n};\nvar minusSign = \"\\u2212\";\nfunction addSign(num, numString, signType = \"\") {\n if (signType === \"(\") {\n return num >= 0 ? numString : `(${numString})`;\n }\n const plusSign = signType === \"+\" ? \"+\" : \"\";\n return `${num >= 0 ? plusSign : minusSign}${numString}`;\n}\nfunction addPadding(numString, width, fill = \" \", align = \">\") {\n let result = numString;\n if (align === \">\" || !align) {\n result = result.padStart(width, fill);\n } else if (align === \"<\") {\n result = result.padEnd(width, fill);\n } else if (align === \"^\") {\n const padWidth = Math.max(0, width - result.length);\n const padLeft = Math.ceil(padWidth / 2);\n const padRight = Math.floor(padWidth / 2);\n result = result.padStart(padLeft + result.length, fill);\n result = result.padEnd(padRight + result.length, fill);\n }\n return result;\n}\nfunction tickFormat(ticks, formatter) {\n const options = parseFormatter(formatter != null ? formatter : \",f\");\n const {\n precision\n } = options;\n if (precision == null || isNaN(precision)) {\n if (options.type === \"f\" || options.type === \"%\") {\n options.precision = Math.max(...ticks.map(x => {\n if (typeof x !== \"number\" || x === 0) {\n return 0;\n }\n const l = Math.floor(Math.log10(Math.abs(x)));\n const digits = options.type ? 6 : 12;\n const exp = x.toExponential(digits - 1).replace(/\\.?0+e/, \"e\");\n const dotIndex = exp.indexOf(\".\");\n if (dotIndex < 0) {\n return l >= 0 ? 0 : -l;\n }\n const s = exp.indexOf(\"e\") - dotIndex;\n return Math.max(0, s - l - 1);\n }));\n } else if (!options.type || options.type in decimalTypes) {\n options.precision = Math.max(...ticks.map(x => {\n if (typeof x !== \"number\") {\n return 0;\n }\n const exp = x.toExponential((options.type ? 6 : 12) - 1).replace(/\\.?0+e/, \"e\");\n return exp.substring(0, exp.indexOf(\"e\")).replace(\".\", \"\").length;\n }));\n }\n }\n const f = format(options);\n return n => f(Number(n));\n}\n\n// packages/ag-charts-community/src/scale/logScale.ts\nvar _LogScale = class _LogScale extends ContinuousScale {\n constructor() {\n super([1, 10], [0, 1]);\n this.type = \"log\";\n this.base = 10;\n this.baseLog = identity;\n this.basePow = identity;\n this.log = x => {\n const start = Math.min(...this.domain);\n return start >= 0 ? this.baseLog(x) : -this.baseLog(-x);\n };\n this.pow = x => {\n const start = Math.min(...this.domain);\n return start >= 0 ? this.basePow(x) : -this.basePow(-x);\n };\n this.defaultClampMode = \"clamped\";\n }\n toDomain(d) {\n return d;\n }\n transform(x) {\n const start = Math.min(...this.domain);\n return start >= 0 ? Math.log(x) : -Math.log(-x);\n }\n transformInvert(x) {\n const start = Math.min(...this.domain);\n return start >= 0 ? Math.exp(x) : -Math.exp(-x);\n }\n refresh() {\n if (this.base <= 0) {\n this.base = 0;\n Logger.warnOnce(\"expecting a finite Number greater than to 0\");\n }\n super.refresh();\n }\n update() {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n this.baseLog = _LogScale.getBaseLogMethod(this.base);\n this.basePow = _LogScale.getBasePowerMethod(this.base);\n if (this.nice) {\n this.updateNiceDomain();\n }\n }\n updateNiceDomain() {\n const [d0, d1] = this.domain;\n const roundStart = d0 > d1 ? Math.ceil : Math.floor;\n const roundStop = d0 > d1 ? Math.floor : Math.ceil;\n const n0 = this.pow(roundStart(this.log(d0)));\n const n1 = this.pow(roundStop(this.log(d1)));\n this.niceDomain = [n0, n1];\n }\n ticks() {\n var _a;\n const count = (_a = this.tickCount) != null ? _a : 10;\n if (!this.domain || this.domain.length < 2 || count < 1) {\n return [];\n }\n this.refresh();\n const base = this.base;\n const [d0, d1] = this.getDomain();\n const start = Math.min(d0, d1);\n const stop = Math.max(d0, d1);\n let p0 = this.log(start);\n let p1 = this.log(stop);\n if (this.interval) {\n const step = Math.abs(this.interval);\n const absDiff = Math.abs(p1 - p0);\n let ticks2 = range(p0, p1, Math.min(absDiff, step));\n ticks2 = createNumericTicks(ticks2.fractionDigits, ticks2.map(x => this.pow(x)).filter(t => t >= start && t <= stop));\n const availableRange = this.getPixelRange();\n if (!isDenseInterval({\n start,\n stop,\n interval: step,\n count: ticks2.length,\n availableRange\n })) {\n return ticks2;\n }\n }\n const isBaseInteger = base % 1 === 0;\n const isDiffLarge = p1 - p0 >= count;\n if (!isBaseInteger || isDiffLarge) {\n let ticks2 = ticks_default(p0, p1, Math.min(p1 - p0, count));\n ticks2 = createNumericTicks(ticks2.fractionDigits, ticks2.map(x => this.pow(x)));\n return ticks2;\n }\n const ticks = [];\n const isPositive = start > 0;\n p0 = Math.floor(p0) - 1;\n p1 = Math.round(p1) + 1;\n const availableSpacing = findRangeExtent(this.range) / count;\n let lastTickPosition = Infinity;\n for (let p = p0; p <= p1; p++) {\n const nextMagnitudeTickPosition = this.convert(this.pow(p + 1));\n for (let k = 1; k < base; k++) {\n const q = isPositive ? k : base - k + 1;\n const t = this.pow(p) * q;\n const tickPosition = this.convert(t);\n const prevSpacing = Math.abs(lastTickPosition - tickPosition);\n const nextSpacing = Math.abs(tickPosition - nextMagnitudeTickPosition);\n const fits = prevSpacing >= availableSpacing && nextSpacing >= availableSpacing;\n if (t >= start && t <= stop && (k === 1 || fits || ticks.length === 0)) {\n ticks.push(t);\n lastTickPosition = tickPosition;\n }\n }\n }\n return ticks;\n }\n tickFormat({\n count,\n ticks,\n specifier\n }) {\n if (count !== Infinity && ticks == null) {\n this.ticks();\n }\n specifier != null ? specifier : specifier = this.base === 10 ? \".0e\" : \",\";\n return isString(specifier) ? format(specifier) : specifier;\n }\n static getBaseLogMethod(base) {\n switch (base) {\n case 10:\n return Math.log10;\n case Math.E:\n return Math.log;\n case 2:\n return Math.log2;\n default:\n const logBase = Math.log(base);\n return x => Math.log(x) / logBase;\n }\n }\n static getBasePowerMethod(base) {\n switch (base) {\n case 10:\n return x => x >= 0 ? __pow(10, x) : 1 / __pow(10, -x);\n case Math.E:\n return Math.exp;\n default:\n return x => __pow(base, x);\n }\n }\n};\n__decorateClass([Invalidating], _LogScale.prototype, \"base\", 2);\nvar LogScale = _LogScale;\n\n// packages/ag-charts-community/src/scene/selection.ts\nvar Selection = class _Selection {\n constructor(parentNode, classOrFactory, autoCleanup = true) {\n this.parentNode = parentNode;\n this.autoCleanup = autoCleanup;\n this.garbageBin = /* @__PURE__ */new Set();\n this._nodesMap = /* @__PURE__ */new Map();\n this._nodes = [];\n this.data = [];\n this.debug = Debug.create(true, \"scene\", \"scene:selections\");\n this.nodeFactory = Object.prototype.isPrototypeOf.call(Node, classOrFactory) ? () => new classOrFactory() : classOrFactory;\n }\n static select(parent, classOrFactory, garbageCollection = true) {\n return new _Selection(parent, classOrFactory, garbageCollection);\n }\n static selectAll(parent, predicate) {\n const results = [];\n const traverse = node => {\n if (predicate(node)) {\n results.push(node);\n }\n node.children.forEach(traverse);\n };\n traverse(parent);\n return results;\n }\n static selectByClass(node, Class, ...ExtraClasses) {\n return _Selection.selectAll(node, n => {\n return n instanceof Class || ExtraClasses.some(C => n instanceof C);\n });\n }\n static selectByTag(node, tag) {\n return _Selection.selectAll(node, n => n.tag === tag);\n }\n createNode(datum, initializer, idx) {\n const node = this.nodeFactory(datum);\n node.datum = datum;\n initializer == null ? void 0 : initializer(node);\n if (idx == null) {\n this._nodes.push(node);\n } else {\n this._nodes.splice(idx, 0, node);\n }\n this.parentNode.appendChild(node);\n return node;\n }\n /**\n * Update the data in a selection. If an `getDatumId()` function is provided, maintain a list of ids related to\n * the nodes. Otherwise, take the more efficient route of simply creating and destroying nodes at the end\n * of the array.\n */\n update(data, initializer, getDatumId) {\n if (this.garbageBin.size > 0) {\n this.debug(`Selection - update() called with pending garbage: ${data}`);\n }\n if (getDatumId) {\n const dataMap = new Map(data.map((datum, idx) => [getDatumId(datum), [datum, idx]]));\n for (const [node, datumId] of this._nodesMap.entries()) {\n if (dataMap.has(datumId)) {\n const [newDatum] = dataMap.get(datumId);\n node.datum = newDatum;\n this.garbageBin.delete(node);\n dataMap.delete(datumId);\n } else {\n this.garbageBin.add(node);\n }\n }\n for (const [datumId, [datum, idx]] of dataMap.entries()) {\n this._nodesMap.set(this.createNode(datum, initializer, idx), datumId);\n }\n } else {\n const maxLength = Math.max(data.length, this.data.length);\n for (let i = 0; i < maxLength; i++) {\n if (i >= data.length) {\n this.garbageBin.add(this._nodes[i]);\n } else if (i >= this._nodes.length) {\n this.createNode(data[i], initializer);\n } else {\n this._nodes[i].datum = data[i];\n this.garbageBin.delete(this._nodes[i]);\n }\n }\n }\n this.data = data.slice();\n if (this.autoCleanup) {\n this.cleanup();\n }\n return this;\n }\n cleanup() {\n if (this.garbageBin.size === 0) {\n return this;\n }\n this._nodes = this._nodes.filter(node => {\n if (this.garbageBin.has(node)) {\n this._nodesMap.delete(node);\n this.garbageBin.delete(node);\n this.parentNode.removeChild(node);\n return false;\n }\n return true;\n });\n return this;\n }\n clear() {\n this.update([]);\n return this;\n }\n isGarbage(node) {\n return this.garbageBin.has(node);\n }\n hasGarbage() {\n return this.garbageBin.size > 0;\n }\n each(iterate2) {\n for (const entry of this._nodes.entries()) {\n iterate2(entry[1], entry[1].datum, entry[0]);\n }\n return this;\n }\n *[Symbol.iterator]() {\n for (let index = 0; index < this._nodes.length; index++) {\n const node = this._nodes[index];\n const datum = this._nodes[index].datum;\n yield {\n node,\n datum,\n index\n };\n }\n }\n select(predicate) {\n return _Selection.selectAll(this.parentNode, predicate);\n }\n selectByClass(Class) {\n return _Selection.selectByClass(this.parentNode, Class);\n }\n selectByTag(tag) {\n return _Selection.selectByTag(this.parentNode, tag);\n }\n nodes() {\n return this._nodes;\n }\n};\n\n// packages/ag-charts-community/src/util/distance.ts\nfunction pointsDistanceSquared(x1, y1, x2, y2) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return dx * dx + dy * dy;\n}\nfunction lineDistanceSquared(x, y, x1, y1, x2, y2, best) {\n if (x1 === x2 && y1 === y2) {\n return Math.min(best, pointsDistanceSquared(x, y, x1, y1));\n }\n const dx = x2 - x1;\n const dy = y2 - y1;\n const t = Math.max(0, Math.min(1, ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy)));\n const ix = x1 + t * dx;\n const iy = y1 + t * dy;\n return Math.min(best, pointsDistanceSquared(x, y, ix, iy));\n}\nfunction arcDistanceSquared(x, y, cx, cy, radius, startAngle, endAngle, counterClockwise, best) {\n if (counterClockwise) {\n [endAngle, startAngle] = [startAngle, endAngle];\n }\n const angle = Math.atan2(y - cy, x - cx);\n if (!isBetweenAngles(angle, startAngle, endAngle)) {\n const startX = cx + Math.cos(startAngle) * radius;\n const startY = cy + Math.sin(startAngle) * radius;\n const endX = cx + Math.cos(startAngle) * radius;\n const endY = cy + Math.sin(startAngle) * radius;\n return Math.min(best, pointsDistanceSquared(x, y, startX, startY), pointsDistanceSquared(x, y, endX, endY));\n }\n const distToArc = radius - Math.sqrt(pointsDistanceSquared(x, y, cx, cy));\n return Math.min(best, distToArc * distToArc);\n}\n\n// packages/ag-charts-community/src/scene/shape/line.ts\nvar Line = class extends Shape {\n constructor(opts = {}) {\n super(opts);\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.restoreOwnStyles();\n }\n set x(value) {\n this.x1 = value;\n this.x2 = value;\n }\n set y(value) {\n this.y1 = value;\n this.y2 = value;\n }\n computeBBox() {\n return new BBox(Math.min(this.x1, this.x2), Math.min(this.y1, this.y2), Math.abs(this.x2 - this.x1), Math.abs(this.y2 - this.y1));\n }\n isPointInPath(px, py) {\n if (this.x1 === this.x2 || this.y1 === this.y2) {\n const {\n x,\n y\n } = this.transformPoint(px, py);\n return this.computeBBox().grow(this.strokeWidth / 2).containsPoint(x, y);\n }\n return false;\n }\n distanceSquared(px, py) {\n const {\n x1,\n y1,\n x2,\n y2\n } = this;\n return lineDistanceSquared(px, py, x1, y1, x2, y2, Infinity);\n }\n render(renderCtx) {\n var _a;\n const {\n ctx,\n forceRender,\n stats,\n devicePixelRatio\n } = renderCtx;\n if (this.dirty === 0 /* NONE */ && !forceRender) {\n if (stats) stats.nodesSkipped += this.nodeCount.count;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n let {\n x1,\n y1,\n x2,\n y2\n } = this;\n if (x1 === x2) {\n const {\n strokeWidth\n } = this;\n const x = Math.round(x1 * devicePixelRatio) / devicePixelRatio + Math.trunc(strokeWidth * devicePixelRatio) % 2 / (devicePixelRatio * 2);\n x1 = x;\n x2 = x;\n } else if (y1 === y2) {\n const {\n strokeWidth\n } = this;\n const y = Math.round(y1 * devicePixelRatio) / devicePixelRatio + Math.trunc(strokeWidth * devicePixelRatio) % 2 / (devicePixelRatio * 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 ? void 0 : _a.markClean();\n super.render(renderCtx);\n }\n};\nLine.className = \"Line\";\nLine.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n fill: void 0,\n strokeWidth: 1\n});\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Line.prototype, \"x1\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Line.prototype, \"y1\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Line.prototype, \"x2\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Line.prototype, \"y2\", 2);\n\n// packages/ag-charts-community/src/scene/util/labelPlacement.ts\nfunction circleRectOverlap(c, unitCenter, x, y, w, h) {\n if (c.size === 0) return false;\n let cx = c.x;\n let cy = c.y;\n if (unitCenter != null) {\n cx -= (unitCenter.x - 0.5) * c.size;\n cy -= (unitCenter.y - 0.5) * c.size;\n }\n let edgeX = cx;\n if (cx < x) {\n edgeX = x;\n } else if (cx > x + w) {\n edgeX = x + w;\n }\n let edgeY = cy;\n if (cy < y) {\n edgeY = y;\n } else if (cy > y + h) {\n edgeY = y + h;\n }\n const dx = cx - edgeX;\n const dy = cy - edgeY;\n const d = Math.sqrt(dx * dx + dy * dy);\n return d <= c.size * 0.5;\n}\nfunction rectRectOverlap(r1, x2, y2, w2, h2) {\n const xOverlap = r1.x + r1.width > x2 && r1.x < x2 + w2;\n const 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}\nvar labelPlacements = {\n top: {\n x: 0,\n y: -1\n },\n bottom: {\n x: 0,\n y: 1\n },\n left: {\n x: -1,\n y: 0\n },\n right: {\n x: 1,\n y: 0\n }\n};\nfunction placeLabels(data, bounds, padding = 5) {\n var _a, _b;\n const result = [];\n data = data.map(d => d.slice().sort((a, b) => b.point.size - a.point.size));\n for (let j = 0; j < data.length; j++) {\n const labels = result[j] = [];\n const datum = data[j];\n if (!((datum == null ? void 0 : datum.length) && datum[0].label)) {\n continue;\n }\n for (let i = 0, ln = datum.length; i < ln; i++) {\n const d = datum[i];\n const {\n point,\n label,\n marker\n } = d;\n const {\n text,\n width,\n height\n } = label;\n const r = point.size * 0.5;\n let dx = 0;\n let dy = 0;\n if (r > 0 && d.placement != null) {\n const placement = labelPlacements[d.placement];\n dx = (width * 0.5 + r + padding) * placement.x;\n dy = (height * 0.5 + r + padding) * placement.y;\n }\n const x = point.x - width * 0.5 + dx - (((_a = marker == null ? void 0 : marker.center.x) != null ? _a : 0.5) - 0.5) * point.size;\n const y = point.y - height * 0.5 + dy - (((_b = marker == null ? void 0 : marker.center.y) != null ? _b : 0.5) - 0.5) * point.size;\n const withinBounds = !bounds || rectContainsRect(bounds, x, y, width, height);\n if (!withinBounds) {\n continue;\n }\n const overlapPoints = data.some(dataDatums => dataDatums.some(dataDatum => {\n var _a2;\n return circleRectOverlap(dataDatum.point, (_a2 = dataDatum.marker) == null ? void 0 : _a2.center, x, y, width, height);\n }));\n if (overlapPoints) {\n continue;\n }\n const overlapLabels = result.some(l2 => l2.some(l3 => rectRectOverlap(l3, x, y, width, height)));\n if (overlapLabels) {\n continue;\n }\n labels.push({\n index: i,\n text,\n x,\n y,\n width,\n height,\n datum: d\n });\n }\n }\n return result;\n}\nfunction axisLabelsOverlap(data, padding) {\n const result = [];\n for (let i = 0; i < data.length; i++) {\n const datum = data[i];\n const {\n point: {\n x,\n y\n },\n label: {\n text\n }\n } = datum;\n let {\n label: {\n width,\n height\n }\n } = datum;\n width += padding != null ? padding : 0;\n height += padding != null ? padding : 0;\n const overlapLabels = result.some(l => {\n return rectRectOverlap(l, x, y, width, height);\n });\n if (overlapLabels) {\n return true;\n }\n result.push({\n index: i,\n text,\n x,\n y,\n width,\n height,\n datum\n });\n }\n return false;\n}\n\n// packages/ag-charts-community/src/util/equal.ts\nfunction areArrayItemsStrictlyEqual(arrA, arrB) {\n return arrA.length === arrB.length && arrA.every((a, i) => {\n const b = arrB[i];\n if (Array.isArray(a) && Array.isArray(b)) {\n return areArrayItemsStrictlyEqual(a, b);\n }\n return a === b;\n });\n}\nfunction areArrayNumbersEqual(arrA, arrB) {\n return arrA.length === arrB.length && arrA.every((item, i) => Number(item) === Number(arrB[i]));\n}\n\n// packages/ag-charts-community/src/util/proxy.ts\nfunction ProxyProperty(proxyPath) {\n const pathArray = isArray(proxyPath) ? proxyPath : proxyPath.split(\".\");\n if (pathArray.length === 1) {\n const [property] = pathArray;\n return addTransformToInstanceProperty((target, _, value) => target[property] = value, target => target[property]);\n }\n return addTransformToInstanceProperty((target, _, value) => setPath(target, pathArray, value), target => getPath(target, pathArray));\n}\nfunction ProxyOnWrite(proxyProperty) {\n return addTransformToInstanceProperty((target, _, value) => target[proxyProperty] = value);\n}\nfunction ProxyPropertyOnWrite(childName, childProperty) {\n return addTransformToInstanceProperty((target, key, value) => target[childName][childProperty != null ? childProperty : key] = value);\n}\nfunction ActionOnSet(opts) {\n const {\n newValue: newValueFn,\n oldValue: oldValueFn,\n changeValue: changeValueFn\n } = opts;\n return addTransformToInstanceProperty((target, _, newValue, oldValue) => {\n if (newValue !== oldValue) {\n if (oldValue !== void 0) {\n oldValueFn == null ? void 0 : oldValueFn.call(target, oldValue);\n }\n if (newValue !== void 0) {\n newValueFn == null ? void 0 : newValueFn.call(target, newValue);\n }\n changeValueFn == null ? void 0 : changeValueFn.call(target, newValue, oldValue);\n }\n return newValue;\n });\n}\nfunction ObserveChanges(observerFn) {\n return addObserverToInstanceProperty(observerFn);\n}\n\n// packages/ag-charts-community/src/util/attributeUtil.ts\nfunction setAttribute(e, qualifiedName, value) {\n if (value === void 0 || value === \"\") {\n e == null ? void 0 : e.removeAttribute(qualifiedName);\n } else {\n e == null ? void 0 : e.setAttribute(qualifiedName, value.toString());\n }\n}\n\n// packages/ag-charts-community/src/util/placement.ts\nfunction calculatePlacement(naturalWidth, naturalHeight, containerWidth, containerHeight, bounds) {\n let {\n top,\n right,\n bottom,\n left,\n width,\n height\n } = bounds;\n if (left != null) {\n if (width != null) {\n right = containerWidth - left + width;\n } else if (right != null) {\n width = containerWidth - left - right;\n }\n } else if (right != null && width != null) {\n left = containerWidth - right - width;\n }\n if (top != null) {\n if (height != null) {\n bottom = containerHeight - top - height;\n } else if (bottom != null) {\n height = containerHeight - bottom - top;\n }\n } else if (bottom != null && height != null) {\n top = containerHeight - bottom - height;\n }\n if (width == null) {\n if (height == null) {\n width = naturalWidth;\n height = naturalHeight;\n } else {\n width = Math.ceil(naturalWidth * height / naturalHeight);\n }\n } else if (height == null) {\n height = Math.ceil(naturalHeight * width / naturalWidth);\n }\n if (left == null) {\n if (right == null) {\n left = Math.floor((containerWidth - width) / 2);\n } else {\n left = containerWidth - right - width;\n }\n }\n if (top == null) {\n if (bottom == null) {\n top = Math.floor((containerHeight - height) / 2);\n } else {\n top = containerHeight - height - bottom;\n }\n }\n return {\n x: left,\n y: top,\n width,\n height\n };\n}\n\n// packages/ag-charts-community/src/chart/tooltip/tooltip.ts\nvar DEFAULT_TOOLTIP_CLASS = \"ag-chart-tooltip\";\nvar DEFAULT_TOOLTIP_DARK_CLASS = \"ag-chart-dark-tooltip\";\nvar EMPTY_TOOLTIP_CONTENT = {\n html: \"\",\n ariaLabel: \"\"\n};\nfunction toAccessibleText(inputHtml) {\n const lineConverter = (_match, offset4, str) => {\n if (offset4 === 0 || str[offset4 - 1] !== \".\") {\n return \". \";\n }\n return \" \";\n };\n return inputHtml.replace(//g, lineConverter).replace(/<\\/p\\s+>/g, lineConverter).replace(/<\\/li\\s*\\/>/g, lineConverter).replace(/<[^>]+>/g, \"\");\n}\nfunction toTooltipHtml(input, defaults) {\n var _a, _b, _c;\n if (typeof input === \"string\") {\n return {\n html: input,\n ariaLabel: input\n };\n }\n const {\n content = (_a = defaults == null ? void 0 : defaults.content) != null ? _a : \"\",\n title = defaults == null ? void 0 : defaults.title,\n color = (_b = defaults == null ? void 0 : defaults.color) != null ? _b : \"white\",\n backgroundColor = (_c = defaults == null ? void 0 : defaults.backgroundColor) != null ? _c : \"#888\"\n } = input;\n const titleHtml = title ? `
${title}
` : \"\";\n const titleAria = title ? `${title}: ` : \"\";\n const contentHtml = content ? `
${content}
` : \"\";\n return {\n html: `${titleHtml}${contentHtml}`,\n ariaLabel: toAccessibleText(`${titleAria}${content}`)\n };\n}\nvar TooltipPosition = class extends BaseProperties {\n constructor() {\n super(...arguments);\n /** The type of positioning for the tooltip. By default, the tooltip follows the pointer. */\n this.type = \"pointer\";\n /** The horizontal offset in pixels for the position of the tooltip. */\n this.xOffset = 0;\n /** The vertical offset in pixels for the position of the tooltip. */\n this.yOffset = 0;\n }\n};\n__decorateClass([Validate(UNION([\"pointer\", \"node\", \"top\", \"right\", \"bottom\", \"left\", \"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"], \"a position type\"))], TooltipPosition.prototype, \"type\", 2);\n__decorateClass([Validate(NUMBER)], TooltipPosition.prototype, \"xOffset\", 2);\n__decorateClass([Validate(NUMBER)], TooltipPosition.prototype, \"yOffset\", 2);\nvar Tooltip = class extends BaseProperties {\n constructor() {\n super();\n this.enabled = true;\n this.delay = 0;\n this.range = \"nearest\";\n this.wrapping = \"hyphenate\";\n this.position = new TooltipPosition();\n this.darkTheme = false;\n this.enableInteraction = false;\n this.lastVisibilityChange = Date.now();\n this.wrapTypes = [\"always\", \"hyphenate\", \"on-space\", \"never\"];\n this.showTimeout = 0;\n this._showArrow = true;\n this.element = createElement(\"div\", DEFAULT_TOOLTIP_CLASS);\n setAttribute(this.element, \"aria-hidden\", true);\n this.root = getDocument(\"body\");\n this.root.appendChild(this.element);\n }\n destroy() {\n this.element.remove();\n }\n isVisible() {\n return !this.element.classList.contains(DEFAULT_TOOLTIP_CLASS + \"-hidden\");\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 show(canvasRect, meta, content, instantly = false) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n const {\n element: element2\n } = this;\n if (content != null) {\n element2.innerHTML = content.html;\n } else if (!element2.innerHTML) {\n this.toggle(false);\n return;\n }\n const positionType = (_b = (_a = meta.position) == null ? void 0 : _a.type) != null ? _b : this.position.type;\n const xOffset = (_d = (_c = meta.position) == null ? void 0 : _c.xOffset) != null ? _d : 0;\n const yOffset = (_f = (_e = meta.position) == null ? void 0 : _e.yOffset) != null ? _f : 0;\n const tooltipBounds = this.getTooltipBounds({\n positionType,\n meta,\n yOffset,\n xOffset,\n canvasRect\n });\n const windowBounds = this.getWindowSize();\n const position = calculatePlacement(element2.clientWidth, element2.clientHeight, canvasRect.width, canvasRect.height, tooltipBounds);\n position.x += canvasRect.x;\n position.y += canvasRect.y;\n const left = clamp(0, position.x, windowBounds.width - element2.clientWidth - 1);\n const top = clamp(0, position.y, windowBounds.height - element2.clientHeight);\n const constrained = left !== position.x || top !== position.y;\n const defaultShowArrow = (positionType === \"node\" || positionType === \"pointer\") && !constrained && !xOffset && !yOffset;\n const showArrow = (_h = (_g = meta.showArrow) != null ? _g : this.showArrow) != null ? _h : defaultShowArrow;\n this.updateShowArrow(showArrow);\n element2.style.transform = `translate(${Math.round(left)}px, ${Math.round(top)}px)`;\n this.enableInteraction = (_i = meta.enableInteraction) != null ? _i : false;\n if (this.delay > 0 && !instantly) {\n this.toggle(false);\n this.showTimeout = setTimeout(() => {\n this.toggle(true);\n }, this.delay);\n } else {\n this.toggle(true);\n }\n }\n getWindowSize() {\n const {\n innerWidth,\n innerHeight\n } = getWindow();\n return {\n width: innerWidth,\n height: innerHeight\n };\n }\n toggle(visible) {\n const {\n classList\n } = this.element;\n const toggleClass = (name, include) => classList.toggle(`${DEFAULT_TOOLTIP_CLASS}-${name}`, include);\n const wasVisible = this.isVisible();\n let timeSinceLastVisibilityChangeMs = Infinity;\n if (!visible) {\n clearTimeout(this.showTimeout);\n }\n if (wasVisible !== visible) {\n const now = Date.now();\n timeSinceLastVisibilityChangeMs = now - this.lastVisibilityChange;\n this.lastVisibilityChange = now;\n }\n const animatedMoveThresholdMs = 100;\n const thrashingThresholdMs = 5;\n const noAnimation = !wasVisible && visible && timeSinceLastVisibilityChangeMs > animatedMoveThresholdMs;\n if (timeSinceLastVisibilityChangeMs > thrashingThresholdMs) {\n toggleClass(\"no-animation\", noAnimation);\n }\n toggleClass(\"no-interaction\", !this.enableInteraction);\n toggleClass(\"hidden\", !visible);\n toggleClass(\"arrow\", this._showArrow);\n classList.toggle(DEFAULT_TOOLTIP_DARK_CLASS, this.darkTheme);\n for (const wrapType of this.wrapTypes) {\n classList.toggle(`${DEFAULT_TOOLTIP_CLASS}-wrap-${wrapType}`, wrapType === this.wrapping);\n }\n }\n pointerLeftOntoTooltip(event) {\n var _a;\n if (!this.enableInteraction) return false;\n const classList = (_a = event.sourceEvent.relatedTarget) == null ? void 0 : _a.classList;\n const classes = [\"\", \"-title\", \"-content\"];\n const classListContains = Boolean(classes.filter(c => classList == null ? void 0 : classList.contains(`${DEFAULT_TOOLTIP_CLASS}${c}`)));\n return classList !== void 0 && classListContains;\n }\n updateShowArrow(show) {\n this._showArrow = show;\n }\n getTooltipBounds({\n positionType,\n meta,\n yOffset,\n xOffset,\n canvasRect\n }) {\n const {\n clientWidth: tooltipWidth,\n clientHeight: tooltipHeight\n } = this.element;\n const bounds = {\n width: tooltipWidth,\n height: tooltipHeight\n };\n switch (positionType) {\n case \"node\":\n case \"pointer\":\n {\n bounds.top = meta.offsetY + yOffset - tooltipHeight - 8;\n bounds.left = meta.offsetX + xOffset - tooltipWidth / 2;\n return bounds;\n }\n case \"top\":\n {\n bounds.top = yOffset;\n bounds.left = canvasRect.width / 2 - tooltipWidth / 2 + xOffset;\n return bounds;\n }\n case \"right\":\n {\n bounds.top = canvasRect.height / 2 - tooltipHeight / 2 + yOffset;\n bounds.left = canvasRect.width - tooltipWidth / 2 + xOffset;\n return bounds;\n }\n case \"left\":\n {\n bounds.top = canvasRect.height / 2 - tooltipHeight / 2 + yOffset;\n bounds.left = xOffset;\n return bounds;\n }\n case \"bottom\":\n {\n bounds.top = canvasRect.height - tooltipHeight + yOffset;\n bounds.left = canvasRect.width / 2 - tooltipWidth / 2 + xOffset;\n return bounds;\n }\n case \"top-left\":\n {\n bounds.top = yOffset;\n bounds.left = xOffset;\n return bounds;\n }\n case \"top-right\":\n {\n bounds.top = yOffset;\n bounds.left = canvasRect.width - tooltipWidth + xOffset;\n return bounds;\n }\n case \"bottom-right\":\n {\n bounds.top = canvasRect.height - tooltipHeight + yOffset;\n bounds.left = canvasRect.width - tooltipWidth + xOffset;\n return bounds;\n }\n case \"bottom-left\":\n {\n bounds.top = canvasRect.height - tooltipHeight + yOffset;\n bounds.left = xOffset;\n return bounds;\n }\n }\n }\n};\n__decorateClass([Validate(BOOLEAN)], Tooltip.prototype, \"enabled\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], Tooltip.prototype, \"showArrow\", 2);\n__decorateClass([ObserveChanges((target, newValue, oldValue) => {\n if (newValue) {\n target.element.classList.add(newValue);\n }\n if (oldValue) {\n target.element.classList.remove(oldValue);\n }\n}), Validate(STRING, {\n optional: true\n})], Tooltip.prototype, \"class\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Tooltip.prototype, \"delay\", 2);\n__decorateClass([Validate(INTERACTION_RANGE)], Tooltip.prototype, \"range\", 2);\n__decorateClass([Validate(TEXT_WRAP)], Tooltip.prototype, \"wrapping\", 2);\n__decorateClass([Validate(OBJECT)], Tooltip.prototype, \"position\", 2);\n__decorateClass([Validate(BOOLEAN)], Tooltip.prototype, \"darkTheme\", 2);\n\n// packages/ag-charts-community/src/chart/caption.ts\nvar Caption = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.id = createId(this);\n this.node = new Text({\n zIndex: 1\n }).setProperties({\n textAlign: \"center\",\n pointerEvents: 1 /* None */\n });\n this.enabled = false;\n this.textAlign = \"center\";\n this.fontSize = 10;\n this.fontFamily = \"sans-serif\";\n this.wrapping = \"always\";\n this.truncated = false;\n }\n getOrAddRegion(moduleCtx, regionName) {\n if (regionName === \"root\") {\n return moduleCtx.regionManager.getRegion(\"root\");\n } else {\n return moduleCtx.regionManager.addRegionFromProperties({\n name: regionName,\n bboxproviders: [this.node],\n canInteraction: () => this.enabled && this.node.visible\n });\n }\n }\n registerInteraction(moduleCtx, regionName) {\n const region = this.getOrAddRegion(moduleCtx, regionName);\n const destroyFns = [region.addListener(\"hover\", event => this.handleMouseMove(moduleCtx, event)), region.addListener(\"leave\", event => this.handleMouseLeave(moduleCtx, event))];\n return joinFunctions(...destroyFns);\n }\n computeTextWrap(containerWidth, containerHeight) {\n var _a, _b;\n const {\n text,\n wrapping\n } = this;\n const maxWidth = Math.min((_a = this.maxWidth) != null ? _a : Infinity, containerWidth);\n const maxHeight = (_b = this.maxHeight) != null ? _b : containerHeight;\n if (!isFinite(maxWidth) && !isFinite(maxHeight)) {\n this.node.text = text;\n return;\n }\n const {\n text: wrappedText,\n truncated\n } = Text.wrap(text != null ? text : \"\", maxWidth, maxHeight, this, wrapping);\n this.node.text = wrappedText;\n this.truncated = truncated;\n }\n updateTooltip(moduleCtx, event) {\n if (event !== void 0 && this.enabled && this.node.visible && this.truncated) {\n const {\n offsetX,\n offsetY\n } = event;\n moduleCtx.tooltipManager.updateTooltip(this.id, {\n offsetX,\n offsetY,\n lastPointerEvent: event,\n showArrow: false\n }, toTooltipHtml({\n content: this.text\n }));\n return true;\n }\n return false;\n }\n handleMouseMove(moduleCtx, event) {\n if (this.updateTooltip(moduleCtx, event)) {\n event.consume();\n }\n }\n handleMouseLeave(moduleCtx, _event) {\n moduleCtx.tooltipManager.removeTooltip(this.id);\n }\n};\nCaption.SMALL_PADDING = 10;\nCaption.LARGE_PADDING = 20;\n__decorateClass([Validate(BOOLEAN)], Caption.prototype, \"enabled\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n}), ProxyPropertyOnWrite(\"node\")], Caption.prototype, \"text\", 2);\n__decorateClass([Validate(TEXT_ALIGN, {\n optional: true\n}), ProxyPropertyOnWrite(\"node\")], Caption.prototype, \"textAlign\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n}), ProxyPropertyOnWrite(\"node\")], Caption.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n}), ProxyPropertyOnWrite(\"node\")], Caption.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER), ProxyPropertyOnWrite(\"node\")], Caption.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING), ProxyPropertyOnWrite(\"node\")], Caption.prototype, \"fontFamily\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n}), ProxyPropertyOnWrite(\"node\", \"fill\")], Caption.prototype, \"color\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], Caption.prototype, \"spacing\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], Caption.prototype, \"lineHeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], Caption.prototype, \"maxWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], Caption.prototype, \"maxHeight\", 2);\n__decorateClass([Validate(TEXT_WRAP)], Caption.prototype, \"wrapping\", 2);\n\n// packages/ag-charts-community/src/chart/axis/axisGridLine.ts\nvar GRID_STYLE_KEYS = [\"stroke\", \"lineDash\"];\nvar GRID_STYLE = ARRAY_OF(value => isObject(value) && Object.keys(value).every(key => GRID_STYLE_KEYS.includes(key)), \"objects with gridline style properties such as 'stroke' or 'lineDash'\");\nvar AxisGridLine = class {\n constructor() {\n this.enabled = true;\n this.width = 1;\n this.style = [{\n stroke: void 0,\n lineDash: []\n }];\n }\n};\n__decorateClass([Validate(BOOLEAN)], AxisGridLine.prototype, \"enabled\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AxisGridLine.prototype, \"width\", 2);\n__decorateClass([Validate(GRID_STYLE)], AxisGridLine.prototype, \"style\", 2);\n\n// packages/ag-charts-community/src/chart/axis/axisLabel.ts\nvar AxisLabel = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = true;\n this.autoWrap = false;\n this.fontSize = 12;\n this.fontFamily = \"Verdana, sans-serif\";\n this.padding = 5;\n this.minSpacing = NaN;\n this.color = \"rgba(87, 87, 87, 1)\";\n this.avoidCollisions = true;\n this.mirrored = false;\n this.parallel = false;\n }\n /**\n * The side of the axis line to position the labels on.\n * -1 = left (default)\n * 1 = right\n */\n getSideFlag() {\n return this.mirrored ? 1 : -1;\n }\n};\n__decorateClass([Validate(BOOLEAN)], AxisLabel.prototype, \"enabled\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], AxisLabel.prototype, \"autoWrap\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], AxisLabel.prototype, \"maxWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], AxisLabel.prototype, \"maxHeight\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n})], AxisLabel.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n})], AxisLabel.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(NUMBER.restrict({\n min: 1\n}))], AxisLabel.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING)], AxisLabel.prototype, \"fontFamily\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AxisLabel.prototype, \"padding\", 2);\n__decorateClass([Validate(NUMBER_OR_NAN), Default(NaN)], AxisLabel.prototype, \"minSpacing\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], AxisLabel.prototype, \"color\", 2);\n__decorateClass([Validate(DEGREE, {\n optional: true\n})], AxisLabel.prototype, \"rotation\", 2);\n__decorateClass([Validate(BOOLEAN)], AxisLabel.prototype, \"avoidCollisions\", 2);\n__decorateClass([Validate(BOOLEAN)], AxisLabel.prototype, \"mirrored\", 2);\n__decorateClass([Validate(BOOLEAN)], AxisLabel.prototype, \"parallel\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], AxisLabel.prototype, \"formatter\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], AxisLabel.prototype, \"format\", 2);\n\n// packages/ag-charts-community/src/chart/axis/axisLine.ts\nvar AxisLine = class {\n constructor() {\n this.enabled = true;\n this.width = 1;\n this.color = void 0;\n }\n};\n__decorateClass([Validate(BOOLEAN)], AxisLine.prototype, \"enabled\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AxisLine.prototype, \"width\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], AxisLine.prototype, \"color\", 2);\n\n// packages/ag-charts-community/src/chart/axis/axisTitle.ts\nvar AxisTitle = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = false;\n this.spacing = Caption.SMALL_PADDING;\n this.fontSize = 10;\n this.fontFamily = \"sans-serif\";\n this.wrapping = \"always\";\n }\n};\n__decorateClass([Validate(BOOLEAN)], AxisTitle.prototype, \"enabled\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], AxisTitle.prototype, \"text\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], AxisTitle.prototype, \"spacing\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n})], AxisTitle.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n})], AxisTitle.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AxisTitle.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING)], AxisTitle.prototype, \"fontFamily\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], AxisTitle.prototype, \"color\", 2);\n__decorateClass([Validate(TEXT_WRAP)], AxisTitle.prototype, \"wrapping\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], AxisTitle.prototype, \"formatter\", 2);\n\n// packages/ag-charts-community/src/chart/axis/axisUtil.ts\nfunction prepareAxisAnimationContext(axis) {\n const [requestedRangeMin, requestedRangeMax] = findMinMax(axis.range);\n const min = Math.floor(requestedRangeMin);\n const max = Math.ceil(requestedRangeMax);\n return {\n min,\n max,\n visible: min !== max\n };\n}\nvar fullCircle = Math.PI * 2;\nvar halfCircle = fullCircle / 2;\nfunction normaliseEndRotation(start, end) {\n const directDistance = Math.abs(end - start);\n if (directDistance < halfCircle) return end;\n if (start > end) return end + fullCircle;\n return end - fullCircle;\n}\nfunction prepareAxisAnimationFunctions(ctx) {\n const outOfBounds = (y, range3) => {\n const [min = ctx.min, max = ctx.max] = findMinMax(range3 != null ? range3 : []);\n return y < min || y > max;\n };\n const tick = {\n fromFn(node, datum, status) {\n let y = node.y1 + node.translationY;\n let opacity = node.opacity;\n if (status === \"added\" || outOfBounds(node.datum.translationY, node.datum.range)) {\n y = datum.translationY;\n opacity = 0;\n }\n return {\n y: 0,\n translationY: y,\n opacity,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[status]\n };\n },\n toFn(_node, datum, status) {\n const y = datum.translationY;\n let opacity = 1;\n if (status === \"removed\") {\n opacity = 0;\n }\n return {\n y: 0,\n translationY: y,\n opacity,\n finish: {\n // Set explicit y after animation so it's pixel aligned\n y,\n translationY: 0\n }\n };\n },\n intermediateFn(node, _datum, _status) {\n return {\n visible: !outOfBounds(node.y)\n };\n }\n };\n const label = {\n fromFn(node, newDatum, status) {\n var _a;\n const datum = (_a = node.previousDatum) != null ? _a : newDatum;\n const x = datum.x;\n const y = datum.y;\n const rotationCenterX = datum.rotationCenterX;\n let translationY = Math.round(node.translationY);\n let rotation = datum.rotation;\n let opacity = node.opacity;\n if (status === \"removed\" || outOfBounds(datum.y, datum.range)) {\n rotation = newDatum.rotation;\n } else if (status === \"added\" || outOfBounds(node.datum.y, node.datum.range)) {\n translationY = Math.round(datum.translationY);\n opacity = 0;\n rotation = newDatum.rotation;\n }\n return {\n x,\n y,\n rotationCenterX,\n translationY,\n rotation,\n opacity,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[status]\n };\n },\n toFn(node, datum, status) {\n var _a, _b;\n const x = datum.x;\n const y = datum.y;\n const rotationCenterX = datum.rotationCenterX;\n const translationY = Math.round(datum.translationY);\n let rotation = 0;\n let opacity = 1;\n if (status === \"added\") {\n opacity = 1;\n rotation = datum.rotation;\n } else if (status === \"removed\") {\n opacity = 0;\n rotation = datum.rotation;\n } else {\n rotation = normaliseEndRotation((_b = (_a = node.previousDatum) == null ? void 0 : _a.rotation) != null ? _b : datum.rotation, datum.rotation);\n }\n return {\n x,\n y,\n rotationCenterX,\n translationY,\n rotation,\n opacity,\n finish: {\n rotation: datum.rotation\n }\n };\n }\n };\n const line = {\n fromFn(node, datum) {\n var _a;\n return __spreadProps(__spreadValues({}, (_a = node.previousDatum) != null ? _a : datum), {\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[\"updated\"]\n });\n },\n toFn(_node, datum) {\n return __spreadValues({}, datum);\n }\n };\n const group2 = {\n fromFn(node, _datum) {\n const {\n rotation,\n translationX,\n translationY\n } = node;\n return {\n rotation,\n translationX,\n translationY,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[\"updated\"]\n };\n },\n toFn(_node, datum) {\n const {\n rotation,\n translationX,\n translationY\n } = datum;\n return {\n rotation,\n translationX,\n translationY\n };\n }\n };\n return {\n tick,\n line,\n label,\n group: group2\n };\n}\nfunction resetAxisGroupFn() {\n return (_node, datum) => {\n return {\n rotation: datum.rotation,\n rotationCenterX: datum.rotationCenterX,\n rotationCenterY: datum.rotationCenterY,\n translationX: datum.translationX,\n translationY: datum.translationY\n };\n };\n}\nfunction resetAxisSelectionFn(ctx) {\n const {\n visible: rangeVisible,\n min,\n max\n } = ctx;\n return (_node, datum) => {\n const y = datum.translationY;\n const visible = rangeVisible && y >= min && y <= max;\n return {\n y,\n translationY: 0,\n opacity: 1,\n visible\n };\n };\n}\nfunction resetAxisLabelSelectionFn() {\n return (_node, datum) => {\n return {\n x: datum.x,\n y: datum.y,\n translationY: datum.translationY,\n rotation: datum.rotation,\n rotationCenterX: datum.rotationCenterX\n };\n };\n}\nfunction resetAxisLineSelectionFn() {\n return (_node, datum) => {\n return __spreadValues({}, datum);\n };\n}\n\n// packages/ag-charts-community/src/chart/axis/axis.ts\nvar _Axis = class _Axis {\n constructor(moduleCtx, scale2, options) {\n this.moduleCtx = moduleCtx;\n this.scale = scale2;\n this.id = createId(this);\n this.nice = true;\n this.reverse = false;\n this.keys = [];\n this.dataDomain = {\n domain: [],\n clipped: false\n };\n this.boundSeries = [];\n this.includeInvisibleDomains = false;\n this.interactionEnabled = true;\n this.axisGroup = new Group({\n name: `${this.id}-axis`,\n zIndex: 2 /* AXIS_ZINDEX */\n });\n this.lineNode = this.axisGroup.appendChild(new Line());\n this.tickLineGroup = this.axisGroup.appendChild(new Group({\n name: `${this.id}-Axis-tick-lines`,\n zIndex: 2 /* AXIS_ZINDEX */\n }));\n this.tickLabelGroup = this.axisGroup.appendChild(new Group({\n name: `${this.id}-Axis-tick-labels`,\n zIndex: 2 /* AXIS_ZINDEX */\n }));\n this.crossLineGroup = new Group({\n name: `${this.id}-CrossLines`\n });\n this.gridGroup = new Group({\n name: `${this.id}-Axis-grid`\n });\n this.gridLineGroup = this.gridGroup.appendChild(new Group({\n name: `${this.id}-gridLines`,\n zIndex: 1 /* AXIS_GRID_ZINDEX */\n }));\n this.tickLineGroupSelection = Selection.select(this.tickLineGroup, Line, false);\n this.tickLabelGroupSelection = Selection.select(this.tickLabelGroup, Text, false);\n this.gridLineGroupSelection = Selection.select(this.gridLineGroup, Line, false);\n this.line = new AxisLine();\n this.tick = this.createTick();\n this.gridLine = new AxisGridLine();\n this.label = this.createLabel();\n this.defaultTickMinSpacing = _Axis.defaultTickMinSpacing;\n this.translation = {\n x: 0,\n y: 0\n };\n this.rotation = 0;\n // axis rotation angle in degrees\n this.layout = {\n label: {\n fractionDigits: 0,\n padding: this.label.padding,\n format: this.label.format\n }\n };\n this.destroyFns = [];\n this.range = [0, 1];\n this.visibleRange = [0, 1];\n this.title = new AxisTitle();\n this._titleCaption = new Caption();\n this.gridLength = 0;\n this.fractionDigits = 0;\n /**\n * The distance between the grid ticks and the axis ticks.\n */\n this.gridPadding = 0;\n /**\n * Is used to avoid collisions between axis labels and series.\n */\n this.seriesAreaPadding = 0;\n this.tickGenerationResult = void 0;\n this.maxThickness = Infinity;\n this.moduleMap = new ModuleMap();\n this.refreshScale();\n this.destroyFns.push(this._titleCaption.registerInteraction(this.moduleCtx, \"root\"));\n this._titleCaption.node.rotation = -Math.PI / 2;\n this.axisGroup.appendChild(this._titleCaption.node);\n this.destroyFns.push(moduleCtx.regionManager.getRegion(\"series\").addListener(\"hover\", e => this.checkAxisHover(e)));\n this.animationManager = moduleCtx.animationManager;\n this.animationState = new StateMachine(\"empty\", {\n empty: {\n update: {\n target: \"ready\",\n action: () => this.resetSelectionNodes()\n },\n reset: \"empty\"\n },\n ready: {\n update: data => this.animateReadyUpdate(data),\n resize: () => this.resetSelectionNodes(),\n reset: \"empty\"\n }\n });\n this._crossLines = [];\n this.assignCrossLineArrayConstructor(this._crossLines);\n let previousSize = void 0;\n this.destroyFns.push(moduleCtx.layoutService.addListener(\"layout-complete\", e => {\n if (previousSize != null && jsonDiff(e.chart, previousSize) != null) {\n this.animationState.transition(\"resize\");\n }\n previousSize = __spreadValues({}, e.chart);\n }));\n if ((options == null ? void 0 : options.respondsToZoom) !== false) {\n this.destroyFns.push(moduleCtx.updateService.addListener(\"update-complete\", e => {\n this.minRect = e.minRect;\n }));\n }\n }\n get type() {\n var _a;\n return (_a = this.constructor.type) != null ? _a : \"\";\n }\n set crossLines(value) {\n var _a, _b;\n (_a = this._crossLines) == null ? void 0 : _a.forEach(crossLine => this.detachCrossLine(crossLine));\n if (value) {\n this.assignCrossLineArrayConstructor(value);\n }\n this._crossLines = value;\n (_b = this._crossLines) == null ? void 0 : _b.forEach(crossLine => {\n this.attachCrossLine(crossLine);\n this.initCrossLine(crossLine);\n });\n }\n get crossLines() {\n return this._crossLines;\n }\n resetAnimation(phase) {\n if (phase === \"initial\") {\n this.animationState.transition(\"reset\");\n }\n }\n attachCrossLine(crossLine) {\n this.crossLineGroup.appendChild(crossLine.group);\n this.crossLineGroup.appendChild(crossLine.labelGroup);\n }\n detachCrossLine(crossLine) {\n this.crossLineGroup.removeChild(crossLine.group);\n this.crossLineGroup.removeChild(crossLine.labelGroup);\n }\n destroy() {\n this.moduleMap.destroy();\n this.destroyFns.forEach(f => f());\n }\n refreshScale() {\n var _a;\n this.range = this.scale.range.slice();\n (_a = this.crossLines) == null ? void 0 : _a.forEach(this.initCrossLine, this);\n }\n updateRange() {\n var _a;\n const {\n range: rr,\n visibleRange: vr,\n scale: scale2\n } = this;\n const span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n const shift = span * vr[0];\n const start = rr[0] - shift;\n scale2.range = [start, start + span];\n (_a = this.crossLines) == null ? void 0 : _a.forEach(crossLine => {\n crossLine.clippedRange = [rr[0], rr[1]];\n });\n }\n setCrossLinesVisible(visible) {\n this.crossLineGroup.visible = visible;\n }\n attachAxis(axisNode, gridNode) {\n gridNode.appendChild(this.gridGroup);\n axisNode.appendChild(this.axisGroup);\n axisNode.appendChild(this.crossLineGroup);\n }\n detachAxis(axisNode, gridNode) {\n gridNode.removeChild(this.gridGroup);\n axisNode.removeChild(this.axisGroup);\n axisNode.removeChild(this.crossLineGroup);\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 inRange(x, width = 0, tolerance = 0) {\n const [min, max] = findMinMax(this.range);\n return x + width >= min - tolerance && x <= max + tolerance;\n }\n onLabelFormatChange(ticks, _domain, format2) {\n const {\n scale: scale2,\n fractionDigits\n } = this;\n const logScale = scale2 instanceof LogScale;\n const defaultLabelFormatter = !logScale && fractionDigits > 0 ? x => typeof x === \"number\" ? x.toFixed(fractionDigits) : String(x) : x => String(x);\n if (format2 && scale2 && scale2.tickFormat) {\n try {\n this.labelFormatter = scale2.tickFormat({\n ticks,\n specifier: format2\n });\n } catch (e) {\n this.labelFormatter = defaultLabelFormatter;\n Logger.warnOnce(`the axis label format string ${format2} is invalid. No formatting will be applied`);\n }\n } else {\n this.labelFormatter = defaultLabelFormatter;\n }\n }\n setTickInterval(interval) {\n var _a;\n this.scale.interval = (_a = this.tick.interval) != null ? _a : interval;\n }\n setTickCount(count, minTickCount, maxTickCount) {\n const {\n scale: scale2\n } = this;\n const continuous = ContinuousScale.is(scale2) || OrdinalTimeScale.is(scale2);\n if (!(count && continuous)) {\n return;\n }\n if (typeof count === \"number\") {\n scale2.tickCount = count;\n scale2.minTickCount = minTickCount != null ? minTickCount : 0;\n scale2.maxTickCount = maxTickCount != null ? maxTickCount : Infinity;\n return;\n }\n if (scale2 instanceof TimeScale) {\n this.setTickInterval(count);\n }\n }\n onGridLengthChange(value, prevValue) {\n var _a;\n if (prevValue && !value || !prevValue && value) {\n this.onGridVisibilityChange();\n }\n (_a = this.crossLines) == null ? void 0 : _a.forEach(this.initCrossLine, this);\n }\n onGridVisibilityChange() {\n this.gridLineGroupSelection.clear();\n }\n createLabel() {\n return new AxisLabel();\n }\n checkAxisHover(event) {\n if (!this.interactionEnabled) return;\n const bbox = this.computeBBox();\n const isInAxis = bbox.containsPoint(event.offsetX, event.offsetY);\n if (!isInAxis) return;\n this.moduleCtx.chartEventManager.axisHover(this.id, this.direction);\n }\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n */\n update(_primaryTickCount = 0, animated = true) {\n if (!this.tickGenerationResult) {\n return;\n }\n const {\n rotation,\n parallelFlipRotation,\n regularFlipRotation\n } = this.calculateRotations();\n const sideFlag = this.label.getSideFlag();\n this.updatePosition();\n const lineData = this.getAxisLineCoordinates();\n const {\n tickData,\n combinedRotation,\n textBaseline,\n textAlign,\n primaryTickCount\n } = this.tickGenerationResult;\n const previousTicks = this.tickLabelGroupSelection.nodes().map(node => node.datum.tickId);\n this.updateSelections(lineData, tickData.ticks, {\n combinedRotation,\n textAlign,\n textBaseline,\n range: this.scale.range\n });\n if (!animated || this.animationManager.isSkipped()) {\n this.resetSelectionNodes();\n } else {\n const diff2 = this.calculateUpdateDiff(previousTicks, tickData);\n this.animationState.transition(\"update\", diff2);\n }\n this.updateAxisLine();\n this.updateLabels();\n this.updateVisibility();\n this.updateGridLines(sideFlag);\n this.updateTickLines();\n this.updateTitle({\n anyTickVisible: tickData.ticks.length > 0\n });\n this.updateCrossLines({\n rotation,\n parallelFlipRotation,\n regularFlipRotation\n });\n this.updateLayoutState();\n return primaryTickCount;\n }\n getAxisLineCoordinates() {\n const [min, max] = findMinMax(this.range);\n return {\n x: 0,\n y1: min,\n y2: max\n };\n }\n getTickLineCoordinates(datum) {\n const sideFlag = this.label.getSideFlag();\n const x = sideFlag * this.getTickSize();\n const x1 = Math.min(0, x);\n const x2 = x1 + Math.abs(x);\n const y = datum.translationY;\n return {\n x1,\n x2,\n y\n };\n }\n getTickLabelProps(datum, params) {\n const {\n label\n } = this;\n const {\n combinedRotation,\n textBaseline,\n textAlign,\n range: range3\n } = params;\n const text = datum.tickLabel;\n const sideFlag = label.getSideFlag();\n const labelX = sideFlag * (this.getTickSize() + label.padding + this.seriesAreaPadding);\n const visible = text !== \"\" && text != null;\n return {\n tickId: datum.tickId,\n translationY: datum.translationY,\n fill: label.color,\n fontFamily: label.fontFamily,\n fontSize: label.fontSize,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n rotation: combinedRotation,\n rotationCenterX: labelX,\n text,\n textAlign,\n textBaseline,\n visible,\n x: labelX,\n y: 0,\n range: range3\n };\n }\n getTickSize() {\n return this.tick.enabled ? this.tick.size : this.createTick().size;\n }\n setTitleProps(caption, params) {\n var _a;\n const {\n title\n } = this;\n if (!title.enabled) {\n caption.enabled = false;\n return;\n }\n caption.color = title.color;\n caption.fontFamily = title.fontFamily;\n caption.fontSize = title.fontSize;\n caption.fontStyle = title.fontStyle;\n caption.fontWeight = title.fontWeight;\n caption.enabled = title.enabled;\n caption.wrapping = title.wrapping;\n if (title.enabled) {\n const titleNode = caption.node;\n const padding = ((_a = title.spacing) != null ? _a : 0) + params.spacing;\n const sideFlag = this.label.getSideFlag();\n const parallelFlipRotation = normalizeAngle360(this.rotation);\n const titleRotationFlag = sideFlag === -1 && parallelFlipRotation > Math.PI && parallelFlipRotation < Math.PI * 2 ? -1 : 1;\n const rotation = titleRotationFlag * sideFlag * Math.PI / 2;\n const textBaseline = titleRotationFlag === 1 ? \"bottom\" : \"top\";\n const {\n range: range3\n } = this;\n const x = Math.floor(titleRotationFlag * sideFlag * (range3[0] + range3[1]) / 2);\n const y = sideFlag === -1 ? Math.floor(titleRotationFlag * -padding) : Math.floor(-padding);\n const {\n callbackCache\n } = this.moduleCtx;\n const {\n formatter = p => p.defaultValue\n } = title;\n const text = callbackCache.call(formatter, this.getTitleFormatterParams());\n titleNode.setProperties({\n rotation,\n text,\n textBaseline,\n visible: true,\n x,\n y\n });\n }\n }\n calculateLayout(primaryTickCount) {\n var _b, _c;\n const {\n rotation,\n parallelFlipRotation,\n regularFlipRotation\n } = this.calculateRotations();\n const sideFlag = this.label.getSideFlag();\n const labelX = sideFlag * (this.getTickSize() + this.label.padding + this.seriesAreaPadding);\n this.updateScale();\n this.tickGenerationResult = this.generateTicks({\n primaryTickCount,\n parallelFlipRotation,\n regularFlipRotation,\n labelX,\n sideFlag\n });\n this.updateLayoutState();\n const _a = this.tickGenerationResult,\n {\n tickData,\n combinedRotation,\n textBaseline,\n textAlign\n } = _a,\n ticksResult = __objRest(_a, [\"tickData\", \"combinedRotation\", \"textBaseline\", \"textAlign\"]);\n const boxes = [];\n const {\n x,\n y1,\n y2\n } = this.getAxisLineCoordinates();\n const lineBox = new BBox(x + Math.min(sideFlag * this.seriesAreaPadding, 0), y1, this.seriesAreaPadding, y2 - y1);\n boxes.push(lineBox);\n if (this.tick.enabled) {\n tickData.ticks.forEach(datum => {\n const {\n x1,\n x2,\n y\n } = this.getTickLineCoordinates(datum);\n const tickLineBox = new BBox(x1, y, x2 - x1, 0);\n boxes.push(tickLineBox);\n });\n }\n if (this.label.enabled) {\n const tempText = new Text();\n tickData.ticks.forEach(datum => {\n const labelProps = this.getTickLabelProps(datum, {\n combinedRotation,\n textAlign,\n textBaseline,\n range: this.scale.range\n });\n if (!labelProps.visible) {\n return;\n }\n tempText.setProperties(__spreadProps(__spreadValues({}, labelProps), {\n translationY: Math.round(datum.translationY)\n }));\n const box = tempText.computeTransformedBBox();\n if (box) {\n boxes.push(box);\n }\n });\n }\n const getTransformBox = bbox2 => {\n const matrix = new Matrix();\n const {\n rotation: axisRotation,\n translationX,\n translationY,\n rotationCenterX,\n rotationCenterY\n } = this.getAxisTransform();\n Matrix.updateTransformMatrix(matrix, 1, 1, axisRotation, translationX, translationY, {\n scalingCenterX: 0,\n scalingCenterY: 0,\n rotationCenterX,\n rotationCenterY\n });\n return matrix.transformBBox(bbox2);\n };\n if ((_b = this.title) == null ? void 0 : _b.enabled) {\n const caption = new Caption();\n const spacing = BBox.merge(boxes).width;\n this.setTitleProps(caption, {\n spacing\n });\n const titleNode = caption.node;\n const titleBox = titleNode.computeTransformedBBox();\n if (titleBox) {\n boxes.push(titleBox);\n }\n }\n const bbox = BBox.merge(boxes);\n const transformedBBox = getTransformBox(bbox);\n const anySeriesActive = this.isAnySeriesActive();\n (_c = this.crossLines) == null ? void 0 : _c.forEach(crossLine => {\n var _a2;\n crossLine.sideFlag = -sideFlag;\n crossLine.direction = rotation === -Math.PI / 2 ? \"x\" /* X */ : \"y\" /* Y */;\n if (crossLine instanceof CartesianCrossLine) {\n crossLine.label.parallel = (_a2 = crossLine.label.parallel) != null ? _a2 : this.label.parallel;\n }\n crossLine.parallelFlipRotation = parallelFlipRotation;\n crossLine.regularFlipRotation = regularFlipRotation;\n crossLine.calculateLayout(anySeriesActive, this.reverse);\n });\n primaryTickCount = ticksResult.primaryTickCount;\n return {\n primaryTickCount,\n bbox: transformedBBox\n };\n }\n updateLayoutState() {\n this.layout.label = {\n fractionDigits: this.fractionDigits,\n padding: this.label.padding,\n format: this.label.format\n };\n }\n setDomain(domain) {\n this.dataDomain = this.normaliseDataDomain(domain);\n if (this.reverse) {\n this.dataDomain.domain.reverse();\n }\n this.scale.domain = this.dataDomain.domain;\n }\n updateScale() {\n this.updateRange();\n this.calculateDomain();\n this.setTickInterval(this.tick.interval);\n const {\n scale: scale2,\n nice\n } = this;\n if (!ContinuousScale.is(scale2)) {\n return;\n }\n scale2.nice = nice;\n scale2.update();\n }\n calculateRotations() {\n const rotation = toRadians(this.rotation);\n const parallelFlipRotation = normalizeAngle360(rotation);\n const regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n return {\n rotation,\n parallelFlipRotation,\n regularFlipRotation\n };\n }\n generateTicks({\n primaryTickCount,\n parallelFlipRotation,\n regularFlipRotation,\n labelX,\n sideFlag\n }) {\n var _a;\n const {\n scale: scale2,\n tick,\n label: {\n parallel,\n rotation,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight\n }\n } = this;\n const secondaryAxis = primaryTickCount !== void 0;\n const {\n defaultRotation,\n configuredRotation,\n parallelFlipFlag,\n regularFlipFlag\n } = calculateLabelRotation({\n rotation,\n parallel,\n regularFlipRotation,\n parallelFlipRotation\n });\n const initialRotation = configuredRotation + defaultRotation;\n const labelMatrix = new Matrix();\n const {\n maxTickCount\n } = this.estimateTickCount({\n minSpacing: tick.minSpacing,\n maxSpacing: (_a = tick.maxSpacing) != null ? _a : NaN\n });\n const continuous = ContinuousScale.is(scale2) || OrdinalTimeScale.is(scale2);\n const maxIterations = !continuous || isNaN(maxTickCount) ? 10 : maxTickCount;\n let textAlign = getTextAlign(parallel, configuredRotation, 0, sideFlag, regularFlipFlag);\n const textBaseline = getTextBaseline(parallel, configuredRotation, sideFlag, parallelFlipFlag);\n const textProps = {\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textBaseline,\n textAlign\n };\n let tickData = {\n rawTicks: [],\n ticks: [],\n labelCount: 0\n };\n let index = 0;\n let autoRotation = 0;\n let labelOverlap = true;\n let terminate = false;\n while (labelOverlap && index <= maxIterations) {\n if (terminate) {\n break;\n }\n autoRotation = 0;\n textAlign = getTextAlign(parallel, configuredRotation, 0, sideFlag, regularFlipFlag);\n const tickStrategies = this.getTickStrategies({\n secondaryAxis,\n index\n });\n for (const strategy of tickStrategies) {\n ({\n tickData,\n index,\n autoRotation,\n terminate\n } = strategy({\n index,\n tickData,\n textProps,\n labelOverlap,\n terminate,\n primaryTickCount\n }));\n const rotated = configuredRotation !== 0 || autoRotation !== 0;\n const labelRotation = initialRotation + autoRotation;\n textAlign = getTextAlign(parallel, configuredRotation, autoRotation, sideFlag, regularFlipFlag);\n labelOverlap = this.label.avoidCollisions ? this.checkLabelOverlap(labelRotation, rotated, labelMatrix, tickData.ticks, labelX, __spreadProps(__spreadValues({}, textProps), {\n textAlign\n })) : false;\n }\n }\n const combinedRotation = defaultRotation + configuredRotation + autoRotation;\n if (!secondaryAxis && tickData.rawTicks.length > 0) {\n primaryTickCount = tickData.rawTicks.length;\n }\n return {\n tickData,\n primaryTickCount,\n combinedRotation,\n textBaseline,\n textAlign\n };\n }\n getTickStrategies({\n index: iteration,\n secondaryAxis\n }) {\n const {\n scale: scale2,\n label,\n tick\n } = this;\n const continuous = ContinuousScale.is(scale2) || OrdinalTimeScale.is(scale2);\n const avoidLabelCollisions = label.enabled && label.avoidCollisions;\n const filterTicks = !continuous && iteration !== 0 && avoidLabelCollisions;\n const autoRotate = label.autoRotate === true && label.rotation === void 0;\n const strategies = [];\n let tickGenerationType;\n if (this.tick.values) {\n tickGenerationType = 3 /* VALUES */;\n } else if (secondaryAxis) {\n tickGenerationType = 1 /* CREATE_SECONDARY */;\n } else if (filterTicks) {\n tickGenerationType = 2 /* FILTER */;\n } else {\n tickGenerationType = 0 /* CREATE */;\n }\n const tickGenerationStrategy = ({\n index,\n tickData,\n primaryTickCount,\n terminate\n }) => this.createTickData(tickGenerationType, index, tickData, terminate, primaryTickCount);\n strategies.push(tickGenerationStrategy);\n if (!continuous && !isNaN(tick.minSpacing)) {\n const tickFilterStrategy = ({\n index,\n tickData,\n primaryTickCount,\n terminate\n }) => this.createTickData(2 /* FILTER */, index, tickData, terminate, primaryTickCount);\n strategies.push(tickFilterStrategy);\n }\n if (!avoidLabelCollisions) {\n return strategies;\n }\n if (label.autoWrap) {\n const autoWrapStrategy = ({\n index,\n tickData,\n textProps\n }) => this.wrapLabels(tickData, index, textProps);\n strategies.push(autoWrapStrategy);\n } else if (autoRotate) {\n const autoRotateStrategy = ({\n index,\n tickData,\n labelOverlap,\n terminate\n }) => ({\n index,\n tickData,\n autoRotation: this.getAutoRotation(labelOverlap),\n terminate\n });\n strategies.push(autoRotateStrategy);\n }\n return strategies;\n }\n createTickData(tickGenerationType, index, tickData, terminate, primaryTickCount) {\n var _a;\n const {\n scale: scale2,\n tick\n } = this;\n const {\n maxTickCount,\n minTickCount,\n defaultTickCount\n } = this.estimateTickCount({\n minSpacing: tick.minSpacing,\n maxSpacing: (_a = tick.maxSpacing) != null ? _a : NaN\n });\n const continuous = ContinuousScale.is(scale2) || OrdinalTimeScale.is(scale2);\n const maxIterations = !continuous || isNaN(maxTickCount) ? 10 : maxTickCount;\n let tickCount = continuous ? Math.max(defaultTickCount - index, minTickCount) : maxTickCount;\n const regenerateTicks = tick.interval === void 0 && tick.values === void 0 && tickCount > minTickCount && (continuous || tickGenerationType === 2 /* FILTER */);\n let unchanged = true;\n while (unchanged && index <= maxIterations) {\n const prevTicks = tickData.rawTicks;\n tickCount = continuous ? Math.max(defaultTickCount - index, minTickCount) : maxTickCount;\n const {\n rawTicks,\n ticks,\n labelCount\n } = this.getTicks({\n tickGenerationType,\n previousTicks: prevTicks,\n tickCount,\n minTickCount,\n maxTickCount,\n primaryTickCount\n });\n tickData.rawTicks = rawTicks;\n tickData.ticks = ticks;\n tickData.labelCount = labelCount;\n unchanged = regenerateTicks ? areArrayNumbersEqual(rawTicks, prevTicks) : false;\n index++;\n }\n const shouldTerminate = tick.interval !== void 0 || tick.values !== void 0;\n terminate || (terminate = shouldTerminate);\n return {\n tickData,\n index,\n autoRotation: 0,\n terminate\n };\n }\n checkLabelOverlap(rotation, rotated, labelMatrix, tickData, labelX, textProps) {\n Matrix.updateTransformMatrix(labelMatrix, 1, 1, rotation, 0, 0);\n const labelData = this.createLabelData(tickData, labelX, textProps, labelMatrix);\n const labelSpacing = getLabelSpacing(this.label.minSpacing, rotated);\n return axisLabelsOverlap(labelData, labelSpacing);\n }\n createLabelData(tickData, labelX, textProps, labelMatrix) {\n const labelData = [];\n const measurer = new TextMeasurer(textProps);\n for (const {\n tickLabel,\n translationY\n } of tickData) {\n if (tickLabel === \"\" || tickLabel == null) continue;\n const {\n width,\n height\n } = measurer.size(tickLabel);\n const bbox = new BBox(labelX, translationY, width, height);\n const labelDatum = calculateLabelBBox(tickLabel, bbox, labelX, translationY, labelMatrix);\n labelData.push(labelDatum);\n }\n return labelData;\n }\n getAutoRotation(labelOverlap) {\n var _a;\n return labelOverlap ? normalizeAngle360(toRadians((_a = this.label.autoRotateAngle) != null ? _a : 0)) : 0;\n }\n getTicks({\n tickGenerationType,\n previousTicks,\n tickCount,\n minTickCount,\n maxTickCount,\n primaryTickCount\n }) {\n var _a;\n const {\n range: range3,\n scale: scale2,\n visibleRange\n } = this;\n let rawTicks;\n switch (tickGenerationType) {\n case 3 /* VALUES */:\n if (ContinuousScale.is(scale2)) {\n const [d0, d1] = findMinMax(scale2.getDomain().map(Number));\n rawTicks = this.tick.values.filter(value => value >= d0 && value <= d1).sort((a, b) => a - b);\n } else {\n rawTicks = this.tick.values;\n }\n break;\n case 1 /* CREATE_SECONDARY */:\n if (ContinuousScale.is(scale2)) {\n rawTicks = this.updateSecondaryAxisTicks(primaryTickCount);\n } else {\n rawTicks = this.createTicks(tickCount, minTickCount, maxTickCount);\n }\n break;\n case 2 /* FILTER */:\n rawTicks = this.filterTicks(previousTicks, tickCount);\n break;\n default:\n rawTicks = this.createTicks(tickCount, minTickCount, maxTickCount);\n break;\n }\n this.fractionDigits = rawTicks.fractionDigits >= 0 ? rawTicks.fractionDigits : 0;\n const halfBandwidth = ((_a = scale2.bandwidth) != null ? _a : 0) / 2;\n const ticks = [];\n let labelCount = 0;\n const tickIdCounts = /* @__PURE__ */new Map();\n const start = Math.max(0, Math.floor(visibleRange[0] * rawTicks.length));\n const end = Math.min(rawTicks.length, Math.ceil(visibleRange[1] * rawTicks.length));\n const filteredTicks = rawTicks.slice(start, end);\n this.onLabelFormatChange(filteredTicks, rawTicks, this.label.format);\n for (let i = 0; i < filteredTicks.length; i++) {\n const tick = filteredTicks[i];\n const translationY = scale2.convert(tick) + halfBandwidth;\n if (range3.length > 0 && !this.inRange(translationY, 0, 1e-3)) continue;\n const tickLabel = this.formatTick(tick, start + i);\n let tickId = tickLabel;\n if (tickIdCounts.has(tickId)) {\n const count = tickIdCounts.get(tickId);\n tickIdCounts.set(tickId, count + 1);\n tickId = `${tickId}_${count}`;\n } else {\n tickIdCounts.set(tickId, 1);\n }\n ticks.push({\n tick,\n tickId,\n tickLabel,\n translationY: Math.floor(translationY)\n });\n if (tickLabel === \"\" || tickLabel == null) {\n continue;\n }\n labelCount++;\n }\n return {\n rawTicks,\n ticks,\n labelCount\n };\n }\n filterTicks(ticks, tickCount) {\n var _a;\n const tickSpacing = !isNaN(this.tick.minSpacing) || !isNaN((_a = this.tick.maxSpacing) != null ? _a : NaN);\n const keepEvery = tickSpacing ? Math.ceil(ticks.length / tickCount) : 2;\n return ticks.filter((_, i) => i % keepEvery === 0);\n }\n createTicks(tickCount, minTickCount, maxTickCount) {\n var _a, _b, _c;\n this.setTickCount(tickCount, minTickCount, maxTickCount);\n return (_c = (_b = (_a = this.scale).ticks) == null ? void 0 : _b.call(_a)) != null ? _c : [];\n }\n estimateTickCount({\n minSpacing,\n maxSpacing\n }) {\n const {\n minRect,\n label: {\n avoidCollisions\n }\n } = this;\n if (!avoidCollisions) {\n return {\n minTickCount: ContinuousScale.defaultMaxTickCount,\n maxTickCount: ContinuousScale.defaultMaxTickCount,\n defaultTickCount: ContinuousScale.defaultMaxTickCount\n };\n }\n const rangeWithBleed = this.calculateRangeWithBleed();\n const defaultMinSpacing = Math.max(this.defaultTickMinSpacing, rangeWithBleed / ContinuousScale.defaultMaxTickCount);\n let clampMaxTickCount = !isNaN(maxSpacing);\n if (isNaN(minSpacing)) {\n minSpacing = defaultMinSpacing;\n }\n if (isNaN(maxSpacing)) {\n maxSpacing = rangeWithBleed;\n }\n if (minSpacing > maxSpacing) {\n if (minSpacing === defaultMinSpacing) {\n minSpacing = maxSpacing;\n } else {\n maxSpacing = minSpacing;\n }\n }\n let minRectDistance = 1;\n if (minRect) {\n minRectDistance = this.direction === \"x\" /* X */ ? minRect.width : minRect.height;\n }\n clampMaxTickCount && (clampMaxTickCount = minRectDistance < defaultMinSpacing);\n const maxTickCount = clamp(1, Math.floor(rangeWithBleed / minSpacing), clampMaxTickCount ? Math.min(Math.floor(rangeWithBleed / minRectDistance), 100) : 100);\n const minTickCount = Math.min(maxTickCount, Math.ceil(rangeWithBleed / maxSpacing));\n const defaultTickCount = clamp(minTickCount, ContinuousScale.defaultTickCount, maxTickCount);\n return {\n minTickCount,\n maxTickCount,\n defaultTickCount\n };\n }\n updateVisibility() {\n if (this.moduleCtx.animationManager.isSkipped()) {\n this.resetSelectionNodes();\n }\n this.tickLineGroup.visible = this.tick.enabled;\n this.gridLineGroup.visible = this.gridLine.enabled;\n this.tickLabelGroup.visible = this.label.enabled;\n }\n updateCrossLines({\n rotation,\n parallelFlipRotation,\n regularFlipRotation\n }) {\n var _a;\n const sideFlag = this.label.getSideFlag();\n const anySeriesActive = this.isAnySeriesActive();\n (_a = this.crossLines) == null ? void 0 : _a.forEach(crossLine => {\n var _a2;\n crossLine.sideFlag = -sideFlag;\n crossLine.direction = rotation === -Math.PI / 2 ? \"x\" /* X */ : \"y\" /* Y */;\n if (crossLine instanceof CartesianCrossLine) {\n crossLine.label.parallel = (_a2 = crossLine.label.parallel) != null ? _a2 : this.label.parallel;\n }\n crossLine.parallelFlipRotation = parallelFlipRotation;\n crossLine.regularFlipRotation = regularFlipRotation;\n crossLine.update(anySeriesActive);\n });\n }\n updateTickLines() {\n const {\n tick,\n label\n } = this;\n const sideFlag = label.getSideFlag();\n this.tickLineGroupSelection.each(line => {\n line.strokeWidth = tick.width;\n line.stroke = tick.color;\n line.x1 = sideFlag * this.getTickSize();\n line.x2 = 0;\n });\n }\n calculateAvailableRange() {\n return findRangeExtent(this.range);\n }\n /**\n * Calculates the available range with an additional \"bleed\" beyond the canvas that encompasses the full axis when\n * the visible range is only a portion of the axis.\n */\n calculateRangeWithBleed() {\n const visibleScale = 1 / findRangeExtent(this.visibleRange);\n return round(this.calculateAvailableRange() * visibleScale, 2);\n }\n calculateDomain() {\n const visibleSeries = this.boundSeries.filter(s => this.includeInvisibleDomains || s.isEnabled());\n const domains = visibleSeries.flatMap(series => series.getDomain(this.direction));\n this.setDomain(domains);\n }\n getAxisTransform() {\n return {\n rotation: toRadians(this.rotation),\n rotationCenterX: 0,\n rotationCenterY: 0,\n translationX: Math.floor(this.translation.x),\n translationY: Math.floor(this.translation.y)\n };\n }\n updatePosition() {\n const {\n crossLineGroup,\n axisGroup,\n gridGroup,\n translation,\n gridLineGroupSelection,\n gridPadding,\n gridLength\n } = this;\n const {\n rotation\n } = this.calculateRotations();\n const sideFlag = this.label.getSideFlag();\n const translationX = Math.floor(translation.x);\n const translationY = Math.floor(translation.y);\n crossLineGroup.setProperties({\n rotation,\n translationX,\n translationY\n });\n gridGroup.setProperties({\n rotation,\n translationX,\n translationY\n });\n axisGroup.datum = this.getAxisTransform();\n gridLineGroupSelection.each(line => {\n line.x1 = gridPadding;\n line.x2 = -sideFlag * gridLength + gridPadding;\n });\n }\n updateSecondaryAxisTicks(_primaryTickCount) {\n throw new Error(\"AG Charts - unexpected call to updateSecondaryAxisTicks() - check axes configuration.\");\n }\n updateSelections(lineData, data, params) {\n this.lineNode.datum = lineData;\n this.gridLineGroupSelection.update(this.gridLength ? data : [], group2 => group2.append(new Line()), datum => datum.tickId);\n this.tickLineGroupSelection.update(data, group2 => group2.appendChild(new Line()), datum => datum.tickId);\n this.tickLabelGroupSelection.update(data.map(d => this.getTickLabelProps(d, params)), group2 => group2.appendChild(new Text()), datum => datum.tickId);\n }\n updateAxisLine() {\n const {\n line\n } = this;\n const strokeWidth = line.enabled ? line.width : 0;\n this.lineNode.setProperties({\n stroke: line.color,\n strokeWidth\n });\n }\n updateGridLines(sideFlag) {\n const {\n gridLine: {\n style,\n width\n },\n gridPadding,\n gridLength\n } = this;\n if (gridLength === 0 || style.length === 0) {\n return;\n }\n this.gridLineGroupSelection.each((line, _, index) => {\n const {\n stroke,\n lineDash\n } = style[index % style.length];\n line.setProperties({\n x1: gridPadding,\n x2: -sideFlag * gridLength + gridPadding,\n fill: void 0,\n stroke,\n strokeWidth: width,\n lineDash\n });\n });\n }\n updateLabels() {\n const {\n label\n } = this;\n if (!label.enabled) {\n return;\n }\n this.tickLabelGroupSelection.each((node, datum) => {\n node.setProperties(datum, [\"fill\", \"fontFamily\", \"fontSize\", \"fontStyle\", \"fontWeight\", \"text\", \"textAlign\", \"textBaseline\"]);\n });\n }\n wrapLabels(tickData, index, labelProps) {\n const {\n parallel,\n maxWidth,\n maxHeight\n } = this.label;\n let defaultMaxWidth = this.maxThickness;\n let defaultMaxHeight = Math.round(this.calculateAvailableRange() / tickData.labelCount);\n if (parallel) {\n [defaultMaxWidth, defaultMaxHeight] = [defaultMaxHeight, defaultMaxWidth];\n }\n tickData.ticks.forEach(tickDatum => {\n const {\n text\n } = Text.wrap(tickDatum.tickLabel, maxWidth != null ? maxWidth : defaultMaxWidth, maxHeight != null ? maxHeight : defaultMaxHeight, labelProps, \"hyphenate\");\n tickDatum.tickLabel = text;\n });\n return {\n tickData,\n index,\n autoRotation: 0,\n terminate: true\n };\n }\n updateTitle(params) {\n const {\n rotation,\n title,\n _titleCaption,\n lineNode,\n tickLineGroup,\n tickLabelGroup\n } = this;\n if (!title) {\n _titleCaption.enabled = false;\n return;\n }\n let spacing = 0;\n if (title.enabled && params.anyTickVisible) {\n const tickBBox = Group.computeBBox([tickLineGroup, tickLabelGroup, lineNode]);\n const tickWidth = rotation === 0 ? tickBBox.width : tickBBox.height;\n spacing += tickWidth + (this.tickLabelGroup.visible ? 0 : this.seriesAreaPadding);\n }\n this.setTitleProps(_titleCaption, {\n spacing\n });\n }\n // For formatting (nice rounded) tick values.\n formatTick(datum, index) {\n return this.datumFormatter(index)(datum);\n }\n // For formatting arbitrary values between the ticks.\n formatDatum(datum) {\n return String(datum);\n }\n datumFormatter(index = 0) {\n const {\n label,\n labelFormatter,\n fractionDigits,\n moduleCtx: {\n callbackCache\n }\n } = this;\n if (label.formatter) {\n return datum => {\n var _a;\n return (_a = callbackCache.call(label.formatter, {\n value: fractionDigits > 0 ? datum : String(datum),\n index,\n fractionDigits,\n formatter: labelFormatter\n })) != null ? _a : datum;\n };\n } else if (labelFormatter) {\n return datum => {\n var _a;\n return (_a = callbackCache.call(labelFormatter, datum)) != null ? _a : String(datum);\n };\n }\n return datum => String(datum);\n }\n computeBBox() {\n return this.axisGroup.computeBBox();\n }\n initCrossLine(crossLine) {\n crossLine.scale = this.scale;\n crossLine.gridLength = this.gridLength;\n }\n isAnySeriesActive() {\n return this.boundSeries.some(s => this.includeInvisibleDomains || s.isEnabled());\n }\n clipTickLines(x, y, width, height) {\n this.tickLineGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n }\n clipGrid(x, y, width, height) {\n this.gridGroup.setClipRectInGroupCoordinateSpace(new BBox(x, y, width, height));\n }\n calculatePadding(min, max) {\n const padding = Math.abs(this.reverse ? max : min) * 0.01;\n return [padding, padding];\n }\n getTitleFormatterParams() {\n var _a;\n const boundSeries = this.boundSeries.reduce((acc, next) => {\n const keys = next.getKeys(this.direction);\n const names = next.getNames(this.direction);\n for (let idx = 0; idx < keys.length; idx++) {\n acc.push({\n key: keys[idx],\n name: names[idx]\n });\n }\n return acc;\n }, []);\n return {\n direction: this.direction,\n boundSeries,\n defaultValue: (_a = this.title) == null ? void 0 : _a.text\n };\n }\n normaliseDataDomain(d) {\n return {\n domain: [...d],\n clipped: false\n };\n }\n getLayoutState() {\n return __spreadValues({\n rect: this.computeBBox(),\n gridPadding: this.gridPadding,\n seriesAreaPadding: this.seriesAreaPadding,\n tickSize: this.getTickSize(),\n direction: this.direction,\n domain: this.dataDomain.domain,\n scale: this.scale\n }, this.layout);\n }\n getModuleMap() {\n return this.moduleMap;\n }\n createModuleContext() {\n var _a;\n (_a = this.axisContext) != null ? _a : this.axisContext = this.createAxisContext();\n return __spreadProps(__spreadValues({}, this.moduleCtx), {\n parent: this.axisContext\n });\n }\n createAxisContext() {\n return {\n axisId: this.id,\n direction: this.direction,\n continuous: ContinuousScale.is(this.scale),\n keys: () => this.boundSeries.flatMap(s => s.getKeys(this.direction)),\n seriesKeyProperties: () => this.boundSeries.reduce((keys, series) => {\n const seriesKeys = series.getKeyProperties(this.direction);\n seriesKeys.forEach(key => {\n if (keys.indexOf(key) < 0) {\n keys.push(key);\n }\n });\n return keys;\n }, []),\n scaleValueFormatter: specifier => {\n var _a, _b;\n return specifier ? (_b = (_a = this.scale).tickFormat) == null ? void 0 : _b.call(_a, {\n specifier\n }) : this.formatDatum;\n },\n scaleBandwidth: () => {\n var _a;\n return (_a = this.scale.bandwidth) != null ? _a : 0;\n },\n scaleConvert: val => this.scale.convert(val),\n scaleInvert: val => {\n var _a, _b;\n return (_b = (_a = this.scale).invert) == null ? void 0 : _b.call(_a, val);\n }\n };\n }\n animateReadyUpdate(diff2) {\n const {\n animationManager\n } = this.moduleCtx;\n const selectionCtx = prepareAxisAnimationContext(this);\n const fns = prepareAxisAnimationFunctions(selectionCtx);\n fromToMotion(this.id, \"axis-group\", animationManager, [this.axisGroup], fns.group);\n fromToMotion(this.id, \"line\", animationManager, [this.lineNode], fns.line);\n fromToMotion(this.id, \"line-paths\", animationManager, [this.gridLineGroupSelection, this.tickLineGroupSelection], fns.tick, (_, d) => d.tickId, diff2);\n fromToMotion(this.id, \"tick-labels\", animationManager, [this.tickLabelGroupSelection], fns.label, (_, d) => d.tickId, diff2);\n }\n resetSelectionNodes() {\n const {\n gridLineGroupSelection,\n tickLineGroupSelection,\n tickLabelGroupSelection,\n lineNode\n } = this;\n const selectionCtx = prepareAxisAnimationContext(this);\n resetMotion([this.axisGroup], resetAxisGroupFn());\n resetMotion([gridLineGroupSelection, tickLineGroupSelection], resetAxisSelectionFn(selectionCtx));\n resetMotion([tickLabelGroupSelection], resetAxisLabelSelectionFn());\n resetMotion([lineNode], resetAxisLineSelectionFn());\n }\n calculateUpdateDiff(previous, tickData) {\n const added = /* @__PURE__ */new Set();\n const removed = /* @__PURE__ */new Set();\n const tickMap = {};\n const tickCount = Math.max(previous.length, tickData.ticks.length);\n for (let i = 0; i < tickCount; i++) {\n const tickDatum = tickData.ticks[i];\n const prev = previous[i];\n const tick = tickDatum == null ? void 0 : tickDatum.tickId;\n tickMap[tick != null ? tick : prev] = tickDatum;\n if (prev === tick) {\n continue;\n }\n if (removed.has(tick)) {\n removed.delete(tick);\n } else if (tick) {\n added.add(tick);\n }\n if (added.has(prev)) {\n added.delete(prev);\n } else if (prev) {\n removed.add(prev);\n }\n }\n return {\n changed: added.size > 0 || removed.size > 0,\n added,\n removed\n };\n }\n isReversed() {\n return this.reverse;\n }\n};\n_Axis.defaultTickMinSpacing = 50;\n__decorateClass([Validate(BOOLEAN)], _Axis.prototype, \"nice\", 2);\n__decorateClass([Validate(BOOLEAN)], _Axis.prototype, \"reverse\", 2);\n__decorateClass([Validate(STRING_ARRAY)], _Axis.prototype, \"keys\", 2);\n__decorateClass([Validate(OBJECT, {\n optional: true\n})], _Axis.prototype, \"title\", 2);\n__decorateClass([ObserveChanges((target, value, oldValue) => target.onGridLengthChange(value, oldValue))], _Axis.prototype, \"gridLength\", 2);\nvar Axis = _Axis;\n\n// packages/ag-charts-community/src/chart/axis/cartesianAxisLabel.ts\nvar CartesianAxisLabel = class extends AxisLabel {\n constructor() {\n super(...arguments);\n this.autoRotateAngle = 335;\n }\n};\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], CartesianAxisLabel.prototype, \"autoRotate\", 2);\n__decorateClass([Validate(DEGREE)], CartesianAxisLabel.prototype, \"autoRotateAngle\", 2);\n\n// packages/ag-charts-community/src/chart/axis/cartesianAxis.ts\nvar _CartesianAxis = class _CartesianAxis extends Axis {\n constructor() {\n super(...arguments);\n this.thickness = 0;\n this.position = \"left\";\n }\n static is(value) {\n return value instanceof _CartesianAxis;\n }\n get direction() {\n return [\"top\", \"bottom\"].includes(this.position) ? \"x\" /* X */ : \"y\" /* Y */;\n }\n updateDirection() {\n switch (this.position) {\n case \"top\":\n this.rotation = -90;\n this.label.mirrored = true;\n this.label.parallel = true;\n break;\n case \"right\":\n this.rotation = 0;\n this.label.mirrored = true;\n this.label.parallel = false;\n break;\n case \"bottom\":\n this.rotation = -90;\n this.label.mirrored = false;\n this.label.parallel = true;\n break;\n case \"left\":\n this.rotation = 0;\n this.label.mirrored = false;\n this.label.parallel = false;\n break;\n }\n if (this.axisContext) {\n this.axisContext.position = this.position;\n this.axisContext.direction = this.direction;\n }\n }\n update(primaryTickCount, animated) {\n this.updateDirection();\n return super.update(primaryTickCount, animated);\n }\n calculateLayout(primaryTickCount) {\n this.updateDirection();\n return super.calculateLayout(primaryTickCount);\n }\n createAxisContext() {\n return __spreadProps(__spreadValues({}, super.createAxisContext()), {\n position: this.position\n });\n }\n assignCrossLineArrayConstructor(crossLines) {\n assignJsonApplyConstructedArray(crossLines, CartesianCrossLine);\n }\n createLabel() {\n return new CartesianAxisLabel();\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER)], _CartesianAxis.prototype, \"thickness\", 2);\n__decorateClass([Validate(POSITION2)], _CartesianAxis.prototype, \"position\", 2);\nvar CartesianAxis = _CartesianAxis;\n\n// packages/ag-charts-community/src/chart/axis/categoryAxis.ts\nvar CategoryAxisTick = class extends AxisTick {\n constructor() {\n super(...arguments);\n this.minSpacing = NaN;\n }\n};\n__decorateClass([Validate(MIN_SPACING), Default(NaN)], CategoryAxisTick.prototype, \"minSpacing\", 2);\nvar CategoryAxis = class extends CartesianAxis {\n constructor(moduleCtx, scale2 = new BandScale()) {\n super(moduleCtx, scale2);\n this._paddingOverrideEnabled = false;\n this.groupPaddingInner = 0.1;\n this.includeInvisibleDomains = true;\n }\n set paddingInner(value) {\n this._paddingOverrideEnabled = true;\n this.scale.paddingInner = value;\n }\n get paddingInner() {\n this._paddingOverrideEnabled = true;\n return this.scale.paddingInner;\n }\n set paddingOuter(value) {\n this.scale.paddingOuter = value;\n }\n get paddingOuter() {\n return this.scale.paddingOuter;\n }\n createTick() {\n return new CategoryAxisTick();\n }\n normaliseDataDomain(d) {\n const domain = [];\n const uniqueValues = /* @__PURE__ */new Set();\n for (const v of d) {\n const key = v instanceof Date ? v.getTime() : v;\n if (!uniqueValues.has(key)) {\n uniqueValues.add(key);\n domain.push(v);\n }\n }\n return {\n domain,\n clipped: false\n };\n }\n calculateDomain() {\n if (!this._paddingOverrideEnabled) {\n const paddings = this.boundSeries.map(s => {\n var _a;\n return (_a = s.getBandScalePadding) == null ? void 0 : _a.call(s);\n }).filter(p => p != null);\n if (paddings.length > 0) {\n this.scale.paddingInner = Math.min(...paddings.map(p => p.inner));\n this.scale.paddingOuter = Math.max(...paddings.map(p => p.outer));\n }\n }\n return super.calculateDomain();\n }\n};\nCategoryAxis.className = \"CategoryAxis\";\nCategoryAxis.type = \"category\";\n__decorateClass([Validate(RATIO)], CategoryAxis.prototype, \"groupPaddingInner\", 2);\n\n// packages/ag-charts-community/src/chart/axis/tree.ts\nvar TreeNode = class {\n // current number in sibling group (index)\n constructor(label = \"\", parent, number = 0) {\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 this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n this.number = number;\n }\n getLeftSibling() {\n return this.number > 0 && this.parent ? this.parent.children[this.number - 1] : void 0;\n }\n getLeftmostSibling() {\n return this.number > 0 && this.parent ? this.parent.children[0] : void 0;\n }\n // traverse the left contour of a subtree, return the successor of v on this contour\n nextLeft() {\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 nextRight() {\n return this.children ? this.children[this.children.length - 1] : this.thread;\n }\n getSiblings() {\n return this.parent ? this.parent.children.filter((_, i) => i !== this.number) : [];\n }\n};\nfunction ticksToTree(ticks, pad2 = true) {\n const root = new TreeNode();\n let depth = 0;\n if (pad2) {\n ticks.forEach(tick => depth = Math.max(depth, tick.labels.length));\n }\n ticks.forEach(tick => {\n if (pad2) {\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 const pathParts = tick.labels.slice().reverse();\n const lastPartIndex = pathParts.length - 1;\n pathParts.forEach((pathPart, partIndex) => {\n const children = root.children;\n const existingNode = children.find(child => child.label === pathPart);\n const isNotLeaf = partIndex !== lastPartIndex;\n if (existingNode && isNotLeaf) {\n root = existingNode;\n } else {\n const node = new TreeNode(pathPart, root);\n node.number = children.length;\n children.push(node);\n if (isNotLeaf) {\n root = node;\n }\n }\n });\n}\nfunction moveSubtree(wm, wp, shift) {\n const subtrees = wp.number - wm.number;\n const 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}\nfunction executeShifts(v) {\n const children = v.children;\n if (children) {\n let shift = 0;\n let change = 0;\n for (let i = children.length - 1; i >= 0; i--) {\n const w = children[i];\n w.prelim += shift;\n w.mod += shift;\n change += w.change;\n shift += w.shift + change;\n }\n }\n}\nfunction apportion(v, defaultAncestor, distance2) {\n const w = v.getLeftSibling();\n if (w) {\n let vop = v;\n let vip = v;\n let vim = w;\n let vom = vip.getLeftmostSibling();\n let sip = vip.mod;\n let sop = vop.mod;\n let sim = vim.mod;\n let 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 const shift = vim.prelim + sim - (vip.prelim + sip) + distance2;\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}\nfunction firstWalk(node, distance2) {\n const children = node.children;\n if (children.length) {\n let defaultAncestor = children[0];\n children.forEach(child => {\n firstWalk(child, distance2);\n defaultAncestor = apportion(child, defaultAncestor, distance2);\n });\n executeShifts(node);\n const midpoint = (children[0].prelim + children.at(-1).prelim) / 2;\n const leftSibling = node.getLeftSibling();\n if (leftSibling) {\n node.prelim = leftSibling.prelim + distance2;\n node.mod = node.prelim - midpoint;\n } else {\n node.prelim = midpoint;\n }\n } else {\n const leftSibling = node.getLeftSibling();\n node.prelim = leftSibling ? leftSibling.prelim + distance2 : 0;\n }\n}\nvar Dimensions = class {\n constructor() {\n this.top = Infinity;\n this.right = -Infinity;\n this.bottom = -Infinity;\n this.left = Infinity;\n }\n update(node, xy) {\n const {\n x,\n y\n } = xy(node);\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};\nfunction secondWalk(v, m, layout) {\n v.x = v.prelim + m;\n v.y = v.depth;\n layout.update(v);\n v.children.forEach(w => secondWalk(w, m + v.mod, layout));\n}\nfunction thirdWalk(v) {\n const children = v.children;\n let leafCount = 0;\n children.forEach(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 const layout = new TreeLayout();\n firstWalk(root, 1);\n secondWalk(root, -root.prelim, layout);\n thirdWalk(root);\n return layout;\n}\nvar TreeLayout = class {\n constructor() {\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 update(node) {\n this.dimensions.update(node, n => ({\n x: n.x,\n y: n.y\n }));\n if (node.children.length) {\n this.nonLeafNodes.push(node);\n } else {\n this.leafCount++;\n this.leafNodes.push(node);\n }\n if (node.depth > this.depth) {\n this.depth = node.depth;\n }\n this.nodes.push(node);\n }\n resize(width, height, shiftX = 0, shiftY = 0, flipX = false) {\n const xSteps = this.leafCount - 1;\n const ySteps = this.depth;\n const dimensions = this.dimensions;\n let scalingX = 1;\n let scalingY = 1;\n if (width > 0 && xSteps) {\n const existingSpacingX = (dimensions.right - dimensions.left) / xSteps;\n const desiredSpacingX = width / xSteps;\n scalingX = desiredSpacingX / existingSpacingX;\n if (flipX) {\n scalingX = -scalingX;\n }\n }\n if (height > 0 && ySteps) {\n const existingSpacingY = (dimensions.bottom - dimensions.top) / ySteps;\n const desiredSpacingY = height / ySteps;\n scalingY = desiredSpacingY / existingSpacingY;\n }\n const screenDimensions = new Dimensions();\n this.nodes.forEach(node => {\n node.screenX = node.x * scalingX;\n node.screenY = node.y * scalingY;\n screenDimensions.update(node, n => ({\n x: n.screenX,\n y: n.screenY\n }));\n });\n const offsetX = -screenDimensions.left;\n const offsetY = -screenDimensions.top;\n this.nodes.forEach(node => {\n node.screenX += offsetX + shiftX;\n node.screenY += offsetY + shiftY;\n });\n }\n};\n\n// packages/ag-charts-community/src/chart/axis/groupedCategoryAxis.ts\nvar GroupedCategoryAxisLabel = class extends AxisLabel {\n constructor() {\n super(...arguments);\n this.grid = false;\n }\n};\n__decorateClass([Validate(BOOLEAN)], GroupedCategoryAxisLabel.prototype, \"grid\", 2);\nvar GroupedCategoryAxis = class extends CartesianAxis {\n constructor(moduleCtx) {\n super(moduleCtx, new BandScale());\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();\n this.line = new AxisLine();\n this.label = new GroupedCategoryAxisLabel();\n this.labelColor = \"rgba(87, 87, 87, 1)\";\n this.includeInvisibleDomains = true;\n const {\n tickLineGroup,\n tickLabelGroup,\n gridLineGroup,\n tickScale,\n scale: scale2\n } = this;\n scale2.paddingOuter = 0.1;\n scale2.paddingInner = scale2.paddingOuter * 2;\n this.refreshScale();\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n this.gridLineSelection = Selection.select(gridLineGroup, Line);\n this.axisLineSelection = Selection.select(tickLineGroup, Line);\n this.separatorSelection = Selection.select(tickLineGroup, Line);\n this.labelSelection = Selection.select(tickLabelGroup, Text);\n }\n updateRange() {\n const {\n range: rr,\n visibleRange: vr,\n scale: scale2\n } = this;\n const span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n const shift = span * vr[0];\n const start = rr[0] - shift;\n this.tickScale.range = scale2.range = [start, start + span];\n this.resizeTickTree();\n }\n resizeTickTree() {\n var _a;\n const s = this.scale;\n const range3 = s.domain.length ? [s.convert(s.domain[0]), s.convert(s.domain[s.domain.length - 1])] : s.range;\n const layout = this.tickTreeLayout;\n const lineHeight = this.lineHeight;\n if (layout) {\n layout.resize(Math.abs(range3[1] - range3[0]), layout.depth * lineHeight, (Math.min(range3[0], range3[1]) || 0) + ((_a = s.bandwidth) != null ? _a : 0) / 2, -layout.depth * lineHeight, range3[1] - range3[0] < 0);\n }\n }\n get lineHeight() {\n return this.label.fontSize * 1.5;\n }\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n */\n onGridVisibilityChange() {\n this.gridLineSelection.clear();\n this.labelSelection.clear();\n }\n createTick() {\n return new CategoryAxisTick();\n }\n calculateDomain() {\n var _a;\n const {\n direction\n } = this;\n let isNumericX = null;\n const flatDomains = this.boundSeries.filter(s => s.visible).flatMap(series => {\n if (direction === \"y\" /* Y */ || isNumericX) {\n return series.getDomain(direction);\n }\n if (isNumericX === null) {\n const domain2 = series.getDomain(direction);\n isNumericX = isNumber(domain2[0]);\n return domain2;\n }\n return [];\n });\n this.setDomain((_a = extent(flatDomains)) != null ? _a : unique(flatDomains));\n const {\n domain\n } = this.dataDomain;\n this.tickTreeLayout = treeLayout(ticksToTree(domain));\n this.tickScale.domain = domain.concat(\"\");\n this.resizeTickTree();\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 update() {\n if (!this.computedLayout) {\n return;\n }\n this.updatePosition();\n this.updateTitleCaption();\n this.updateCategoryLabels();\n this.updateSeparators();\n this.updateAxisLines();\n this.updateCategoryGridLines();\n this.resetSelectionNodes();\n }\n updateTitleCaption() {\n const {\n _titleCaption\n } = this;\n _titleCaption.node.visible = false;\n }\n updateCategoryLabels() {\n if (!this.computedLayout) return;\n const {\n tickLabelLayout\n } = this.computedLayout;\n const labelSelection = this.labelSelection.update(tickLabelLayout);\n labelSelection.each((node, datum) => {\n node.setProperties(datum);\n });\n }\n updateSeparators() {\n if (!this.computedLayout) return;\n const {\n separatorLayout\n } = this.computedLayout;\n const {\n range: range3\n } = this;\n const epsilon2 = 1e-7;\n const separatorSelection = this.separatorSelection.update(separatorLayout);\n separatorSelection.each((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 >= range3[0] - epsilon2 && datum.y <= range3[1] + epsilon2;\n line.stroke = this.tick.color;\n line.fill = void 0;\n line.strokeWidth = 1;\n });\n }\n updateAxisLines() {\n if (!this.computedLayout) return;\n const {\n axisLineLayout\n } = this.computedLayout;\n const axisLineSelection = this.axisLineSelection.update(axisLineLayout);\n axisLineSelection.each((line, datum) => {\n line.setProperties(__spreadProps(__spreadValues({}, datum), {\n stroke: this.line.color,\n strokeWidth: this.line.width\n }));\n line.x1 = datum.x;\n line.x2 = datum.x;\n line.y1 = datum.y1;\n line.y2 = datum.y2;\n line.strokeWidth = this.line.width;\n line.stroke = this.line.color;\n });\n }\n updateCategoryGridLines() {\n const {\n gridLength,\n gridLine,\n label,\n range: range3,\n tickScale\n } = this;\n const ticks = tickScale.ticks();\n const sideFlag = label.getSideFlag();\n const gridSelection = this.gridLineSelection.update(gridLength ? ticks : []);\n if (gridLength) {\n const {\n width,\n style\n } = gridLine;\n const styleCount = style.length;\n gridSelection.each((line, datum, index) => {\n const y = Math.round(tickScale.convert(datum));\n line.x1 = 0;\n line.x2 = -sideFlag * gridLength;\n line.y1 = y;\n line.y2 = y;\n line.visible = y >= range3[0] && y <= range3[1];\n const {\n stroke,\n lineDash\n } = style[index % styleCount];\n line.stroke = stroke;\n line.strokeWidth = width;\n line.lineDash = lineDash;\n line.fill = void 0;\n });\n }\n }\n computeLayout() {\n this.updateDirection();\n this.calculateDomain();\n this.updateRange();\n const {\n scale: scale2,\n label,\n label: {\n parallel\n },\n moduleCtx: {\n callbackCache\n },\n range: range3,\n title,\n title: {\n formatter = p => p.defaultValue\n } = {}\n } = this;\n const rangeStart = scale2.range[0];\n const rangeEnd = scale2.range[1];\n const rangeLength = Math.abs(rangeEnd - rangeStart);\n const bandwidth = rangeLength / scale2.domain.length || 0;\n const keepEvery = Math.ceil(label.fontSize / bandwidth);\n const rotation = toRadians(this.rotation);\n const isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n const sideFlag = label.getSideFlag();\n const lineHeight = this.lineHeight;\n const tickTreeLayout = this.tickTreeLayout;\n const labels = scale2.ticks();\n const treeLabels = tickTreeLayout ? tickTreeLayout.nodes : [];\n const isLabelTree = tickTreeLayout ? tickTreeLayout.depth > 1 : false;\n const {\n defaultRotation,\n configuredRotation,\n parallelFlipFlag\n } = calculateLabelRotation({\n rotation: label.rotation,\n parallel,\n regularFlipRotation: normalizeAngle360(rotation - Math.PI / 2),\n parallelFlipRotation: normalizeAngle360(rotation)\n });\n const tickLabelLayout = [];\n const copyLabelProps = node => {\n return {\n fill: node.fill,\n fontFamily: node.fontFamily,\n fontSize: node.fontSize,\n fontStyle: node.fontStyle,\n fontWeight: node.fontWeight,\n rotation: node.rotation,\n rotationCenterX: node.rotationCenterX,\n rotationCenterY: node.rotationCenterY,\n text: node.text,\n textAlign: node.textAlign,\n textBaseline: node.textBaseline,\n translationX: node.translationX,\n translationY: node.translationY,\n visible: node.visible,\n x: node.x,\n y: node.y\n };\n };\n const labelBBoxes = /* @__PURE__ */new Map();\n let maxLeafLabelWidth = 0;\n const tempText = new Text();\n const setLabelProps = (datum, index) => {\n var _a;\n tempText.setProperties({\n fill: label.color,\n fontFamily: label.fontFamily,\n fontSize: label.fontSize,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n textAlign: \"center\",\n textBaseline: parallelFlipFlag === -1 ? \"bottom\" : \"hanging\",\n translationX: datum.screenY - label.fontSize * 0.25,\n translationY: datum.screenX\n });\n if (index === 0) {\n const isCaptionEnabled = (title == null ? void 0 : title.enabled) && labels.length > 0;\n if (!isCaptionEnabled) {\n return false;\n }\n const text = callbackCache.call(formatter, this.getTitleFormatterParams());\n tempText.setProperties({\n fill: title.color,\n fontFamily: title.fontFamily,\n fontSize: title.fontSize,\n fontStyle: title.fontStyle,\n fontWeight: title.fontWeight,\n text,\n textBaseline: \"hanging\",\n translationX: datum.screenY - label.fontSize * 0.25,\n translationY: datum.screenX\n });\n } else if (index % keepEvery === 0) {\n const isInRange = datum.screenX >= range3[0] && datum.screenX <= range3[1];\n if (!isInRange) {\n return false;\n }\n if (label.formatter) {\n tempText.text = (_a = callbackCache.call(label.formatter, {\n value: String(datum.label),\n index\n })) != null ? _a : String(datum.label);\n } else {\n tempText.text = String(datum.label);\n }\n } else {\n return false;\n }\n return true;\n };\n treeLabels.forEach((datum, index) => {\n const isVisible = setLabelProps(datum, index);\n if (!isVisible) return;\n const bbox2 = tempText.computeTransformedBBox();\n if (!bbox2) return;\n labelBBoxes.set(index, bbox2);\n const isLeaf = !datum.children.length;\n if (isLeaf && bbox2.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox2.width;\n }\n });\n const labelX = sideFlag * label.padding;\n const labelGrid = this.label.grid;\n const separatorData = [];\n treeLabels.forEach((datum, index) => {\n let visible = setLabelProps(datum, index);\n const id = index;\n tempText.x = labelX;\n tempText.rotationCenterX = labelX;\n const isLeaf = !datum.children.length;\n if (isLeaf) {\n tempText.rotation = configuredRotation;\n tempText.textAlign = \"end\";\n tempText.textBaseline = \"middle\";\n } else {\n tempText.translationX -= maxLeafLabelWidth - lineHeight + this.label.padding;\n const availableRange = datum.leafCount * bandwidth;\n const bbox2 = labelBBoxes.get(id);\n if (bbox2 && bbox2.width > availableRange) {\n visible = false;\n labelBBoxes.delete(id);\n } else if (isHorizontal) {\n tempText.rotation = defaultRotation;\n } else {\n tempText.rotation = -Math.PI / 2;\n }\n }\n if (datum.parent && isLabelTree) {\n const y = isLeaf ? datum.screenX - bandwidth / 2 : datum.screenX - datum.leafCount * bandwidth / 2;\n if (isLeaf) {\n if (datum.number !== datum.children.length - 1 || labelGrid) {\n separatorData.push({\n y,\n x1: 0,\n x2: -maxLeafLabelWidth - this.label.padding * 2\n });\n }\n } else {\n const x = -maxLeafLabelWidth - this.label.padding * 2 + datum.screenY;\n separatorData.push({\n y,\n x1: x + lineHeight,\n x2: x\n });\n }\n }\n let props;\n if (visible) {\n const bbox2 = tempText.computeTransformedBBox();\n if (bbox2) {\n labelBBoxes.set(index, bbox2);\n }\n props = __spreadProps(__spreadValues({}, copyLabelProps(tempText)), {\n visible\n });\n } else {\n labelBBoxes.delete(index);\n props = {\n visible\n };\n }\n tickLabelLayout.push(props);\n });\n let minX = 0;\n separatorData.forEach(d => minX = Math.min(minX, d.x2));\n separatorData.push({\n y: Math.max(rangeStart, rangeEnd),\n x1: 0,\n x2: minX\n });\n const separatorLayout = [];\n const separatorBoxes = [];\n const epsilon2 = 1e-7;\n separatorData.forEach(datum => {\n if (datum.y >= range3[0] - epsilon2 && datum.y <= range3[1] + epsilon2) {\n const {\n x1,\n x2,\n y\n } = datum;\n const separatorBox = new BBox(Math.min(x1, x2), y, Math.abs(x1 - x2), 0);\n separatorBoxes.push(separatorBox);\n separatorLayout.push({\n x1,\n x2,\n y\n });\n }\n });\n const axisLineLayout = [];\n const axisLineBoxes = [];\n const lineCount = tickTreeLayout ? tickTreeLayout.depth + 1 : 1;\n for (let i = 0; i < lineCount; i++) {\n const visible = labels.length > 0 && (i === 0 || labelGrid && isLabelTree);\n const x = i > 0 ? -maxLeafLabelWidth - this.label.padding * 2 - (i - 1) * lineHeight : 0;\n const lineBox = new BBox(x, Math.min(...range3), 0, Math.abs(range3[1] - range3[0]));\n axisLineBoxes.push(lineBox);\n axisLineLayout.push({\n x,\n y1: range3[0],\n y2: range3[1],\n visible\n });\n }\n const getTransformBox = bbox2 => {\n const matrix = new Matrix();\n const {\n rotation: axisRotation,\n translationX,\n translationY,\n rotationCenterX,\n rotationCenterY\n } = this.getAxisTransform();\n Matrix.updateTransformMatrix(matrix, 1, 1, axisRotation, translationX, translationY, {\n scalingCenterX: 0,\n scalingCenterY: 0,\n rotationCenterX,\n rotationCenterY\n });\n return matrix.transformBBox(bbox2);\n };\n const bbox = BBox.merge([...labelBBoxes.values(), ...separatorBoxes, ...axisLineBoxes]);\n const transformedBBox = getTransformBox(bbox);\n return {\n bbox: transformedBBox,\n tickLabelLayout,\n separatorLayout,\n axisLineLayout\n };\n }\n calculateLayout() {\n const {\n axisLineLayout,\n separatorLayout,\n tickLabelLayout,\n bbox\n } = this.computeLayout();\n this.computedLayout = {\n axisLineLayout,\n separatorLayout,\n tickLabelLayout\n };\n return {\n bbox,\n primaryTickCount: void 0\n };\n }\n};\nGroupedCategoryAxis.className = \"GroupedCategoryAxis\";\nGroupedCategoryAxis.type = \"grouped-category\";\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], GroupedCategoryAxis.prototype, \"labelColor\", 2);\n\n// packages/ag-charts-community/src/util/userAgent.ts\nfunction hasConstrainedCanvasMemory() {\n if (typeof navigator === \"undefined\") {\n return false;\n }\n const iPhoneOSMatch = navigator.userAgent.match(/\\(iPhone; CPU iPhone OS (\\d+_\\d+_\\d+) like Mac OS X\\)/);\n if (iPhoneOSMatch == null) {\n return false;\n }\n const [major, minor] = iPhoneOSMatch[1].split(\"_\").map(Number);\n return major < 16 || major === 16 && minor < 6;\n}\n\n// packages/ag-charts-community/src/scene/canvas/hdpiCanvas.ts\nvar _HdpiCanvas = class _HdpiCanvas {\n constructor(options) {\n this.enabled = true;\n this.width = 600;\n this.height = 300;\n const {\n width,\n height,\n pixelRatio,\n position,\n insertAsFirstChild\n } = options;\n this.insertAsFirstChild = insertAsFirstChild != null ? insertAsFirstChild : false;\n this.pixelRatio = hasConstrainedCanvasMemory() ? 1 : pixelRatio != null ? pixelRatio : getWindow(\"devicePixelRatio\");\n this.element = createElement(\"canvas\");\n this.element.width = Math.round((width != null ? width : this.width) * this.pixelRatio);\n this.element.height = Math.round((height != null ? height : this.height) * this.pixelRatio);\n if (position) {\n this.element.style.position = position;\n }\n this.context = this.element.getContext(\"2d\");\n this.onEnabledChange();\n this.resize(width != null ? width : 0, height != null ? height : 0);\n _HdpiCanvas.debugContext(this.context);\n }\n static is(value) {\n return value instanceof _HdpiCanvas;\n }\n drawImage(context, dx = 0, dy = 0) {\n return context.drawImage(this.context.canvas, dx, dy);\n }\n toDataURL(type) {\n return this.element.toDataURL(type);\n }\n resize(width, height) {\n if (!(width > 0 && height > 0)) return;\n const {\n element: element2,\n context,\n pixelRatio\n } = this;\n element2.width = Math.round(width * pixelRatio);\n element2.height = Math.round(height * pixelRatio);\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n element2.style.width = width + \"px\";\n element2.style.height = height + \"px\";\n this.width = width;\n this.height = height;\n }\n snapshot() {}\n clear() {\n this.context.save();\n this.context.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);\n this.context.clearRect(0, 0, this.width, this.height);\n this.context.restore();\n }\n destroy() {\n this.element.remove();\n this.element.width = 0;\n this.element.height = 0;\n this.context.clearRect(0, 0, 0, 0);\n Object.freeze(this);\n }\n onContainerChange(newValue, oldValue) {\n var _a, _b, _c, _d;\n if (newValue === oldValue) return;\n (_a = this.element.parentNode) == null ? void 0 : _a.removeChild(this.element);\n if (this.insertAsFirstChild && ((_b = this.container) == null ? void 0 : _b.firstChild)) {\n (_c = this.container) == null ? void 0 : _c.insertBefore(this.element, this.container.firstChild);\n } else {\n (_d = this.container) == null ? void 0 : _d.appendChild(this.element);\n }\n }\n onEnabledChange() {\n if (this.element) {\n this.element.style.display = this.enabled ? \"block\" : \"none\";\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n static debugContext(ctx) {\n if (Debug.check(\"canvas\")) {\n const save = ctx.save.bind(ctx);\n const restore = ctx.restore.bind(ctx);\n let depth = 0;\n Object.assign(ctx, {\n save() {\n save();\n depth++;\n },\n restore() {\n if (depth === 0) {\n throw new Error(\"AG Charts - Unable to restore() past depth 0\");\n }\n restore();\n depth--;\n },\n verifyDepthZero() {\n if (depth !== 0) {\n throw new Error(`AG Charts - Save/restore depth is non-zero: ${depth}`);\n }\n }\n });\n }\n }\n};\n__decorateClass([ObserveChanges(target => target.onEnabledChange())], _HdpiCanvas.prototype, \"enabled\", 2);\n__decorateClass([ObserveChanges((target, newValue, oldValue) => target.onContainerChange(newValue, oldValue))], _HdpiCanvas.prototype, \"container\", 2);\nvar HdpiCanvas = _HdpiCanvas;\n\n// packages/ag-charts-community/src/scene/layersManager.ts\nvar LayersManager = class _LayersManager {\n constructor(canvas, markDirty) {\n this.canvas = canvas;\n this.markDirty = markDirty;\n this.debug = Debug.create(true, \"scene\");\n this.layersMap = /* @__PURE__ */new Map();\n this.nextZIndex = 0;\n this.nextLayerId = 0;\n }\n static sortLayers(a, b) {\n var _a, _b;\n return compoundAscending([a.zIndex, ...((_a = a.zIndexSubOrder) != null ? _a : [void 0, void 0]), a.id], [b.zIndex, ...((_b = b.zIndexSubOrder) != null ? _b : [void 0, void 0]), b.id], ascendingStringNumberUndefined);\n }\n get size() {\n return this.layersMap.size;\n }\n forEach(callback) {\n Array.from(this.layersMap.values()).sort(_LayersManager.sortLayers).forEach(callback);\n }\n resize(width, height) {\n this.canvas.resize(width, height);\n this.layersMap.forEach(({\n canvas\n }) => canvas.resize(width, height));\n }\n addLayer(opts) {\n const {\n width,\n height,\n pixelRatio\n } = this.canvas;\n const {\n zIndex = this.nextZIndex++,\n name,\n zIndexSubOrder,\n getComputedOpacity,\n getVisibility\n } = opts;\n const canvas = new HdpiCanvas({\n width,\n height,\n pixelRatio,\n position: \"absolute\"\n });\n const newLayer = {\n id: this.nextLayerId++,\n name,\n canvas,\n zIndex,\n zIndexSubOrder,\n getComputedOpacity,\n getVisibility\n };\n if (zIndex >= this.nextZIndex) {\n this.nextZIndex = zIndex + 1;\n }\n this.layersMap.set(canvas, newLayer);\n this.debug(\"Scene.addLayer() - layers\", this.layersMap);\n return newLayer.canvas;\n }\n removeLayer(canvas) {\n if (this.layersMap.has(canvas)) {\n this.layersMap.delete(canvas);\n canvas.destroy();\n this.markDirty();\n this.debug(\"Scene.removeLayer() - layers\", this.layersMap);\n }\n }\n moveLayer(canvas, newZIndex, newZIndexSubOrder) {\n const layer = this.layersMap.get(canvas);\n if (layer) {\n layer.zIndex = newZIndex;\n layer.zIndexSubOrder = newZIndexSubOrder;\n this.markDirty();\n this.debug(\"Scene.moveLayer() - layers\", this.layersMap);\n }\n }\n clear() {\n this.layersMap.clear();\n }\n};\n\n// packages/ag-charts-community/src/scene/sceneDebug.ts\nfunction debugStats(layersManager, debugSplitTimes, ctx, renderCtxStats, extraDebugStats = {}) {\n if (!Debug.check(\"scene:stats\" /* SCENE_STATS */, \"scene:stats:verbose\" /* SCENE_STATS_VERBOSE */)) return;\n const {\n layersRendered = 0,\n layersSkipped = 0,\n nodesRendered = 0,\n nodesSkipped = 0\n } = renderCtxStats != null ? renderCtxStats : {};\n const end = performance.now();\n const _a = debugSplitTimes,\n {\n start\n } = _a,\n durations = __objRest(_a, [\"start\"]);\n const splits = Object.entries(durations).map(([n, t]) => {\n return time(n, t);\n }).filter(v => v != null).join(\" + \");\n const extras = Object.entries(extraDebugStats).map(([k, v]) => `${k}: ${v}`).join(\" ; \");\n const detailedStats = Debug.check(\"scene:stats:verbose\" /* SCENE_STATS_VERBOSE */);\n const stats = [`${time(\"\\u23F1\\uFE0F\", start, end)} (${splits})`, `${extras}`, `Layers: ${detailedStats ? pct(layersRendered, layersSkipped) : layersManager.size}`, detailedStats ? `Nodes: ${pct(nodesRendered, nodesSkipped)}` : null].filter(isString);\n const statsSize = new Map(stats.map(t => [t, Text.getTextSize(t, ctx.font)]));\n const width = Math.max(...Array.from(statsSize.values(), s => s.width));\n const height = accumulate(statsSize.values(), s => s.height);\n ctx.save();\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, width, height);\n ctx.fillStyle = \"black\";\n let y = 0;\n for (const [stat, size] of statsSize.entries()) {\n y += size.height;\n ctx.fillText(stat, 2, y);\n }\n ctx.restore();\n}\nfunction debugSceneNodeHighlight(ctx, debugNodes) {\n ctx.save();\n for (const [name, node] of Object.entries(debugNodes)) {\n const bbox = node.computeTransformedBBox();\n if (!bbox) {\n Logger.log(`Scene.render() - no bbox for debugged node [${name}].`);\n continue;\n }\n ctx.globalAlpha = 0.8;\n ctx.strokeStyle = \"red\";\n ctx.lineWidth = 1;\n ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);\n ctx.fillStyle = \"red\";\n ctx.strokeStyle = \"white\";\n ctx.font = \"16px sans-serif\";\n ctx.textBaseline = \"top\";\n ctx.textAlign = \"left\";\n ctx.lineWidth = 2;\n ctx.strokeText(name, bbox.x, bbox.y, bbox.width);\n ctx.fillText(name, bbox.x, bbox.y, bbox.width);\n }\n ctx.restore();\n}\nfunction buildTree(node) {\n var _a, _b;\n if (!Debug.check(true, \"scene\" /* SCENE */)) return {};\n return __spreadValues(__spreadValues({\n node,\n name: (_a = node instanceof Group ? node.name : null) != null ? _a : node.id,\n dirty: RedrawType[node.dirty]\n }, ((_b = node.parent) == null ? void 0 : _b.isVirtual) ? {\n virtualParentDirty: RedrawType[node.parent.dirty],\n virtualParent: node.parent\n } : {}), node.children.map(c => buildTree(c)).reduce((result, childTree) => {\n let {\n name: treeNodeName\n } = childTree;\n const {\n node: {\n visible,\n opacity,\n zIndex,\n zIndexSubOrder\n },\n node: childNode,\n virtualParent\n } = childTree;\n if (!visible || opacity <= 0) {\n treeNodeName = `(${treeNodeName})`;\n }\n if (childNode instanceof Group && childNode.isLayer()) {\n treeNodeName = `*${treeNodeName}*`;\n }\n const key = [`${treeNodeName != null ? treeNodeName : \"\"}`, `z: ${zIndex}`, zIndexSubOrder && `zo: ${zIndexSubOrder.map(v => typeof v === \"function\" ? `${v()} (fn)` : v).join(\" / \")}`, virtualParent && `(virtual parent)`].filter(v => !!v).join(\" \");\n let selectedKey = key;\n let index = 1;\n while (result[selectedKey] != null && index < 100) {\n selectedKey = `${key} (${index++})`;\n }\n result[selectedKey] = childTree;\n return result;\n }, {}));\n}\nfunction buildDirtyTree(node) {\n var _a;\n if (node.dirty === 0 /* NONE */) {\n return {\n dirtyTree: {},\n paths: []\n };\n }\n const childrenDirtyTree = node.children.map(c => buildDirtyTree(c)).filter(c => c.paths.length > 0);\n const name = Group.is(node) ? (_a = node.name) != null ? _a : node.id : node.id;\n const paths = childrenDirtyTree.length ? childrenDirtyTree.flatMap(c => c.paths).map(p => `${name}.${p}`) : [name];\n return {\n dirtyTree: __spreadValues({\n name,\n node,\n dirty: RedrawType[node.dirty]\n }, childrenDirtyTree.map(c => c.dirtyTree).filter(t => t.dirty != null).reduce((result, childTree) => {\n var _a2;\n result[(_a2 = childTree.name) != null ? _a2 : \"\"] = childTree;\n return result;\n }, {})),\n paths\n };\n}\nfunction pct(rendered, skipped) {\n const total = rendered + skipped;\n return `${rendered} / ${total} (${Math.round(100 * rendered / total)}%)`;\n}\nfunction time(name, start, end) {\n const duration = end != null ? end - start : start;\n return `${name}: ${Math.round(duration * 100) / 100}ms`;\n}\nfunction accumulate(iterator, mapper) {\n let sum2 = 0;\n for (const item of iterator) {\n sum2 += mapper(item);\n }\n return sum2;\n}\n\n// packages/ag-charts-community/src/scene/scene.ts\nvar Scene = class {\n constructor({\n width,\n height,\n pixelRatio,\n canvasPosition\n }) {\n this.debug = Debug.create(true, \"scene\" /* SCENE */);\n this.id = createId(this);\n this.root = null;\n this.isDirty = false;\n this.canvas = new HdpiCanvas({\n width,\n height,\n pixelRatio,\n position: canvasPosition,\n insertAsFirstChild: canvasPosition === \"absolute\"\n });\n this.layersManager = new LayersManager(this.canvas, () => {\n this.isDirty = true;\n });\n }\n get width() {\n var _a, _b;\n return (_b = (_a = this.pendingSize) == null ? void 0 : _a[0]) != null ? _b : this.canvas.width;\n }\n get height() {\n var _a, _b;\n return (_b = (_a = this.pendingSize) == null ? void 0 : _a[1]) != null ? _b : this.canvas.height;\n }\n setContainer(value) {\n this.canvas.container = value;\n return this;\n }\n setRoot(node) {\n var _a;\n if (this.root === node) {\n return this;\n }\n this.isDirty = true;\n (_a = this.root) == null ? void 0 : _a._setLayerManager();\n this.root = node;\n if (node) {\n node.visible = true;\n node._setLayerManager(this.layersManager);\n }\n return this;\n }\n attachNode(node) {\n var _a;\n (_a = this.root) == null ? void 0 : _a.appendChild(node);\n return () => this.removeChild(node);\n }\n appendChild(node) {\n var _a;\n (_a = this.root) == null ? void 0 : _a.appendChild(node);\n return this;\n }\n removeChild(node) {\n var _a;\n (_a = this.root) == null ? void 0 : _a.removeChild(node);\n return this;\n }\n download(fileName, fileFormat) {\n var _a;\n downloadUrl(this.canvas.toDataURL(fileFormat), (_a = fileName == null ? void 0 : fileName.trim()) != null ? _a : \"image\");\n }\n /** NOTE: Integrated Charts undocumented image download method. */\n getDataURL(fileFormat) {\n return this.canvas.toDataURL(fileFormat);\n }\n resize(width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width > 0 && height > 0 && (width !== this.width || height !== this.height)) {\n this.pendingSize = [width, height];\n this.isDirty = true;\n return true;\n }\n return false;\n }\n render(opts) {\n return __async(this, null, function* () {\n var _a, _b;\n const {\n debugSplitTimes = {\n start: performance.now()\n },\n extraDebugStats\n } = opts != null ? opts : {};\n const {\n canvas,\n canvas: {\n context: ctx\n } = {},\n root,\n pendingSize\n } = this;\n if (!ctx) {\n return;\n }\n const renderStartTime = performance.now();\n if (pendingSize) {\n this.layersManager.resize(...pendingSize);\n this.pendingSize = void 0;\n }\n if (root && !root.visible) {\n this.isDirty = false;\n return;\n }\n if (root && !this.isDirty) {\n if (this.debug.check()) {\n this.debug(\"Scene.render() - no-op\", {\n redrawType: RedrawType[root.dirty],\n tree: buildTree(root)\n });\n }\n debugStats(this.layersManager, debugSplitTimes, ctx, void 0, extraDebugStats);\n return;\n }\n const renderCtx = {\n ctx,\n devicePixelRatio: (_a = this.canvas.pixelRatio) != null ? _a : 1,\n forceRender: true,\n resized: Boolean(pendingSize),\n debugNodes: {}\n };\n if (Debug.check(\"scene:stats:verbose\" /* SCENE_STATS_VERBOSE */)) {\n renderCtx.stats = {\n layersRendered: 0,\n layersSkipped: 0,\n nodesRendered: 0,\n nodesSkipped: 0\n };\n }\n let canvasCleared = false;\n if (!root || root.dirty >= 1 /* TRIVIAL */) {\n canvasCleared = true;\n canvas.clear();\n }\n if (root && Debug.check(\"scene:dirtyTree\" /* SCENE_DIRTY_TREE */)) {\n const {\n dirtyTree,\n paths\n } = buildDirtyTree(root);\n Debug.create(\"scene:dirtyTree\" /* SCENE_DIRTY_TREE */)(\"Scene.render() - dirtyTree\", {\n dirtyTree,\n paths\n });\n }\n if (root && canvasCleared) {\n this.debug(\"Scene.render() - before\", {\n redrawType: RedrawType[root.dirty],\n canvasCleared,\n tree: buildTree(root)\n });\n if (root.visible) {\n root.preRender();\n ctx.save();\n root.render(renderCtx);\n ctx.restore();\n }\n }\n debugSplitTimes[\"\\u270D\\uFE0F\"] = performance.now() - renderStartTime;\n if (this.layersManager.size && canvasCleared) {\n const layerRenderStart = performance.now();\n ctx.save();\n ctx.resetTransform();\n this.layersManager.forEach(layer => {\n if (layer.canvas.enabled && layer.getVisibility()) {\n ctx.globalAlpha = layer.getComputedOpacity();\n layer.canvas.drawImage(ctx);\n }\n });\n ctx.restore();\n debugSplitTimes[\"\\u26D9\"] = performance.now() - layerRenderStart;\n }\n (_b = ctx.verifyDepthZero) == null ? void 0 : _b.call(ctx);\n this.isDirty = false;\n debugStats(this.layersManager, debugSplitTimes, ctx, renderCtx.stats, extraDebugStats);\n debugSceneNodeHighlight(ctx, renderCtx.debugNodes);\n if (root && this.debug.check()) {\n this.debug(\"Scene.render() - after\", {\n redrawType: RedrawType[root.dirty],\n tree: buildTree(root),\n canvasCleared\n });\n }\n });\n }\n /** Alternative to destroy() that preserves re-usable resources. */\n strip() {\n const {\n context,\n pixelRatio\n } = this.canvas;\n context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n this.layersManager.clear();\n this.setRoot(null);\n this.isDirty = false;\n }\n destroy() {\n this.canvas.container = void 0;\n this.strip();\n this.canvas.destroy();\n Object.assign(this, {\n canvas: void 0\n });\n }\n};\nScene.className = \"Scene\";\n\n// packages/ag-charts-community/src/styles/icons.ts\nvar icons_default = `\n[class^='ag-charts-icon'] {\n display: block;\n /* speak: none; */\n mask-size: contain;\n mask-repeat: no-repeat;\n background-color: currentColor;\n}\n\n.ag-charts-icon-zoom-in {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXpvb20taW4iPjxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiLz48bGluZSB4MT0iMjEiIHgyPSIxNi42NSIgeTE9IjIxIiB5Mj0iMTYuNjUiLz48bGluZSB4MT0iMTEiIHgyPSIxMSIgeTE9IjgiIHkyPSIxNCIvPjxsaW5lIHgxPSI4IiB4Mj0iMTQiIHkxPSIxMSIgeTI9IjExIi8+PC9zdmc+);\n}\n\n.ag-charts-icon-zoom-out {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXpvb20tb3V0Ij48Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI4Ii8+PGxpbmUgeDE9IjIxIiB4Mj0iMTYuNjUiIHkxPSIyMSIgeTI9IjE2LjY1Ii8+PGxpbmUgeDE9IjgiIHgyPSIxNCIgeTE9IjExIiB5Mj0iMTEiLz48L3N2Zz4=);\n}\n\n.ag-charts-icon-reset {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXJvdGF0ZS1jY3ciPjxwYXRoIGQ9Ik0zIDEyYTkgOSAwIDEgMCA5LTkgOS43NSA5Ljc1IDAgMCAwLTYuNzQgMi43NEwzIDgiLz48cGF0aCBkPSJNMyAzdjVoNSIvPjwvc3ZnPg==);\n}\n\n.ag-charts-icon-pan-left {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNoZXZyb24tbGVmdCI+PHBhdGggZD0ibTE1IDE4LTYtNiA2LTYiLz48L3N2Zz4=);\n}\n\n.ag-charts-icon-pan-right {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNoZXZyb24tcmlnaHQiPjxwYXRoIGQ9Im05IDE4IDYtNi02LTYiLz48L3N2Zz4=);\n}\n\n.ag-charts-icon-pan-start {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNoZXZyb24tZmlyc3QiPjxwYXRoIGQ9Im0xNyAxOC02LTYgNi02Ii8+PHBhdGggZD0iTTcgNnYxMiIvPjwvc3ZnPg==);\n}\n\n.ag-charts-icon-pan-end {\n mask-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNoZXZyb24tbGFzdCI+PHBhdGggZD0ibTcgMTggNi02LTYtNiIvPjxwYXRoIGQ9Ik0xNyA2djEyIi8+PC9zdmc+);\n}\n\n`;\n\n// packages/ag-charts-community/src/styles/reset.ts\nvar reset_default = `\n[class^='ag-charts'],\n[class^='ag-charts']:focus,\n[class^='ag-charts']:after,\n[class^='ag-charts']:before {\n box-sizing: border-box;\n outline: none;\n}\n\nbutton[class^='ag-charts'] {\n background: none;\n border: 0;\n}\n\n`;\n\n// packages/ag-charts-community/src/styles/theme-default.ts\nvar theme_default_default = `\n.ag-charts-theme-default,\n.ag-charts-theme-default-dark {\n /* Colors */\n --ag-charts-active-color: var(--ag-active-color, #2196f3);\n --ag-charts-background-color: var(--ag-background-color, #fff);\n --ag-charts-foreground-color: var(--ag-foreground-color, #181d1f);\n --ag-charts-border-color: var(--ag-border-color, #dddddd);\n\n /* Sizing */\n --ag-charts-font-size: var(--ag-font-size, 14px);\n --ag-charts-size: var(--ag-grid-size, 8px);\n\n /* Borders */\n --ag-charts-border: var(--ag-borders, solid 1px);\n --ag-charts-border-critical: var(--ag-borders-critical, solid 1px);\n\n /* Toolbar */\n --ag-charts-toolbar-foreground-color: var(--ag-header-foreground-color, var(--ag-charts-foreground-color));\n --ag-charts-toolbar-background-color: var(\n --ag-header-background-color,\n color-mix(in srgb, var(--ag-charts-background-color), var(--ag-charts-foreground-color) 2%)\n );\n --ag-charts-toolbar-size: var(--ag-header-height, 48px);\n --ag-charts-toolbar-padding: calc(var(--ag-charts-size) * 2);\n --ag-charts-toolbar-border: var(--ag-charts-border, solid 1px) var(--ag-charts-border-color);\n --ag-charts-toolbar-border-critical: var(--ag-charts-border-critical, solid 1px) var(--ag-charts-border-color);\n --ag-charts-toolbar-hover-color: color-mix(in srgb, var(--ag-charts-background-color), var(--ag-charts-active-color) 12%);\n --ag-charts-toolbar-disabled-foreground-color: var(\n --ag-disabled-foreground-color,\n color-mix(in srgb, transparent, var(--ag-charts-toolbar-foreground-color) 50%)\n );\n --ag-charts-toolbar-disabled-background-color: var(\n --ag-input-disabled-background-color,\n color-mix(in srgb, var(--ag-charts-toolbar-background-color), var(--ag-charts-toolbar-foreground-color) 6%)\n );\n --ag-charts-toolbar-gap: var(--ag-charts-size);\n\n /* Buttons */\n --ag-charts-button-padding: var(--ag-charts-size);\n --ag-charts-button-radius: var(--ag-border-radius, 4px);\n\n /* Focus Indicator */\n --ag-charts-focus-border: solid 2px var(--ag-input-focus-border-color, var(--ag-charts-active-color));\n --ag-charts-focus-border-shadow: var(--ag-input-focus-box-shadow, 0 0 0 3px color-mix(in srgb, transparent, var(--ag-charts-focus-border) 47%));\n\n /* Icons */\n --ag-charts-icon-font-family: 'agChartsDefault';\n --ag-charts-icon-font-weight: normal;\n --ag-charts-icon-font-color: color-mix(in srgb, transparent, var(--ag-charts-foreground-color), 90%);\n}\n\n`;\n\n// packages/ag-charts-community/src/styles/theme-default-dark.ts\nvar theme_default_dark_default = `\n.ag-charts-theme-default-dark {\n /* Colors */\n --ag-charts-background-color: var(--ag-background-color, color-mix(in srgb, #fff, #182230 97%));\n --ag-charts-foreground-color: var(--ag-foreground-color, #fff);\n --ag-charts-border-color: var(--ag-border-color, rgba(255, 255, 255, 0.16));\n --ag-charts-hover-color: var(\n --ag-row-hover-color,\n color-mix(in srgb, transparent, var(--ag-charts-active-color) 20%)\n );\n\n /* Toolbar */\n --ag-charts-toolbar-background-color: var(--ag-header-background-color, color-mix(in srgb, #fff, #182230 93%));\n}\n\n`;\n\n// packages/ag-charts-community/src/styles/styles.ts\nvar styles_default = `\n/* Reset */\n${reset_default}\n\n/* Icons */\n${icons_default}\n\n/* AG Charts Theme Default */\n${theme_default_default}\n\n/* AG Charts Theme Default Dark */\n${theme_default_dark_default}\n`;\n\n// packages/ag-charts-community/src/util/async.ts\nfunction sleep(sleepTimeoutMs) {\n return new Promise(resolve => {\n setTimeout(() => resolve(void 0), sleepTimeoutMs);\n });\n}\n\n// packages/ag-charts-community/src/util/mutex.ts\nvar Mutex = class {\n constructor() {\n this.available = true;\n this.acquireQueue = [];\n }\n acquire(cb) {\n return new Promise(resolve => {\n this.acquireQueue.push([cb, resolve]);\n if (this.available) {\n this.dispatchNext().catch(e => Logger.errorOnce(e));\n }\n });\n }\n acquireImmediately(cb) {\n return __async(this, null, function* () {\n if (!this.available) {\n return false;\n }\n yield this.acquire(cb);\n return true;\n });\n }\n waitForClearAcquireQueue() {\n return __async(this, null, function* () {\n return this.acquire(() => __async(this, null, function* () {\n return void 0;\n }));\n });\n }\n dispatchNext() {\n return __async(this, null, function* () {\n var _a, _b;\n this.available = false;\n let [next, done] = (_a = this.acquireQueue.shift()) != null ? _a : [];\n while (next) {\n try {\n yield next();\n done == null ? void 0 : done();\n } catch (error) {\n Logger.error(\"mutex callback error\", error);\n done == null ? void 0 : done();\n }\n [next, done] = (_b = this.acquireQueue.shift()) != null ? _b : [];\n }\n this.available = true;\n });\n }\n};\n\n// packages/ag-charts-community/src/util/observable.ts\nvar Observable = class {\n constructor() {\n this.eventListeners = /* @__PURE__ */new Map();\n }\n addEventListener(eventType, listener) {\n if (typeof listener !== \"function\") {\n throw new Error(\"AG Charts - listener must be a Function\");\n }\n const eventTypeListeners = this.eventListeners.get(eventType);\n if (eventTypeListeners) {\n eventTypeListeners.add(listener);\n } else {\n this.eventListeners.set(eventType, /* @__PURE__ */new Set([listener]));\n }\n }\n removeEventListener(type, listener) {\n var _a;\n (_a = this.eventListeners.get(type)) == null ? void 0 : _a.delete(listener);\n if (this.eventListeners.size === 0) {\n this.eventListeners.delete(type);\n }\n }\n hasEventListener(type) {\n return this.eventListeners.has(type);\n }\n clearEventListeners() {\n this.eventListeners.clear();\n }\n fireEvent(event) {\n var _a;\n (_a = this.eventListeners.get(event.type)) == null ? void 0 : _a.forEach(listener => listener(event));\n }\n};\n\n// packages/ag-charts-community/src/util/padding.ts\nvar Padding = class extends BaseProperties {\n constructor(top = 0, right = top, bottom = top, left = right) {\n super();\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n clear() {\n this.top = this.right = this.bottom = this.left = 0;\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER)], Padding.prototype, \"top\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Padding.prototype, \"right\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Padding.prototype, \"bottom\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Padding.prototype, \"left\", 2);\n\n// packages/ag-charts-community/src/util/render.ts\nfunction debouncedAnimationFrame(cb) {\n return buildScheduler((innerCb, _delayMs) => requestAnimationFrame(innerCb), cb);\n}\nfunction debouncedCallback(cb) {\n return buildScheduler((innerCb, delayMs = 0) => setTimeout(innerCb, delayMs), cb);\n}\nfunction buildScheduler(scheduleFn, cb) {\n let scheduleCount = 0;\n let promiseRunning = false;\n let awaitingPromise;\n let awaitingDone;\n const busy = () => {\n return promiseRunning;\n };\n const done = () => {\n promiseRunning = false;\n awaitingDone == null ? void 0 : awaitingDone();\n awaitingDone = void 0;\n awaitingPromise = void 0;\n if (scheduleCount > 0) {\n scheduleFn(scheduleCb);\n }\n };\n const scheduleCb = () => {\n const count = scheduleCount;\n scheduleCount = 0;\n promiseRunning = true;\n const maybePromise = cb({\n count\n });\n if (!maybePromise) {\n done();\n return;\n }\n maybePromise.then(done, done);\n };\n return {\n schedule(delayMs) {\n if (scheduleCount === 0 && !busy()) {\n scheduleFn(scheduleCb, delayMs);\n }\n scheduleCount++;\n },\n await() {\n return __async(this, null, function* () {\n if (!busy()) {\n return;\n }\n if (awaitingPromise == null) {\n awaitingPromise = new Promise(resolve => {\n awaitingDone = resolve;\n });\n }\n while (busy()) {\n yield awaitingPromise;\n }\n });\n }\n };\n}\n\n// packages/ag-charts-community/src/util/sizeMonitor.ts\nvar SizeMonitor = class {\n constructor() {\n this.elements = /* @__PURE__ */new Map();\n this.documentReady = false;\n this.queuedObserveRequests = [];\n this.onLoad = () => {\n this.documentReady = true;\n this.queuedObserveRequests.forEach(([el, cb]) => this.observe(el, cb));\n this.queuedObserveRequests = [];\n };\n var _a;\n if (typeof ResizeObserver === \"undefined\") return;\n this.resizeObserver = new ResizeObserver(entries => {\n for (const {\n target,\n contentRect\n } of entries) {\n const {\n width,\n height\n } = contentRect;\n this.checkSize(this.elements.get(target), target, width, height);\n }\n });\n this.documentReady = getDocument(\"readyState\") === \"complete\";\n if (!this.documentReady) {\n (_a = getWindow()) == null ? void 0 : _a.addEventListener(\"load\", this.onLoad);\n }\n }\n destroy() {\n var _a, _b;\n (_a = getWindow()) == null ? void 0 : _a.removeEventListener(\"load\", this.onLoad);\n (_b = this.resizeObserver) == null ? void 0 : _b.disconnect();\n this.resizeObserver = null;\n }\n checkSize(entry, element2, width, height) {\n var _a, _b;\n if (!entry) return;\n if (width !== ((_a = entry.size) == null ? void 0 : _a.width) || height !== ((_b = entry.size) == null ? void 0 : _b.height)) {\n entry.size = {\n width,\n height\n };\n entry.cb(entry.size, element2);\n }\n }\n // Only a single callback is supported.\n observe(element2, cb) {\n var _a;\n if (!this.documentReady) {\n this.queuedObserveRequests.push([element2, cb]);\n return;\n }\n if (this.elements.has(element2)) {\n this.removeFromQueue(element2);\n } else {\n (_a = this.resizeObserver) == null ? void 0 : _a.observe(element2);\n }\n this.elements.set(element2, {\n cb\n });\n }\n unobserve(element2) {\n var _a;\n (_a = this.resizeObserver) == null ? void 0 : _a.unobserve(element2);\n this.elements.delete(element2);\n this.removeFromQueue(element2);\n if (!this.elements.size) {\n this.destroy();\n }\n }\n removeFromQueue(element2) {\n this.queuedObserveRequests = this.queuedObserveRequests.filter(([el]) => el !== element2);\n }\n};\n\n// packages/ag-charts-community/src/util/callbackCache.ts\nvar CallbackCache = class {\n constructor() {\n this.cache = /* @__PURE__ */new WeakMap();\n }\n call(fn, ...params) {\n let serialisedParams;\n let paramCache = this.cache.get(fn);\n const invoke = () => {\n try {\n const result = fn(...params);\n if (paramCache && serialisedParams != null) {\n paramCache.set(serialisedParams, result);\n }\n return result;\n } catch (e) {\n Logger.warnOnce(`User callback errored, ignoring`, e);\n return;\n }\n };\n try {\n serialisedParams = JSON.stringify(params);\n } catch (e) {\n return invoke();\n }\n if (paramCache == null) {\n paramCache = /* @__PURE__ */new Map();\n this.cache.set(fn, paramCache);\n }\n if (!paramCache.has(serialisedParams)) {\n return invoke();\n }\n return paramCache.get(serialisedParams);\n }\n invalidateCache() {\n this.cache = /* @__PURE__ */new WeakMap();\n }\n};\n\n// packages/ag-charts-community/src/chart/annotation/annotationManager.ts\nvar AnnotationManager = class {\n constructor(annotationRoot) {\n this.annotationRoot = annotationRoot;\n }\n attachNode(node) {\n this.annotationRoot.append(node);\n return () => {\n var _a;\n (_a = this.annotationRoot) == null ? void 0 : _a.removeChild(node);\n return this;\n };\n }\n setAnnotationStyles(styles) {\n this.styles = styles;\n }\n getAnnotationTypeStyles(type) {\n var _a;\n return (_a = this.styles) == null ? void 0 : _a[type];\n }\n};\n\n// packages/ag-charts-community/src/util/listeners.ts\nvar Listeners = class {\n constructor() {\n this.registeredListeners = /* @__PURE__ */new Map();\n }\n addListener(eventType, handler) {\n const record = {\n symbol: Symbol(eventType),\n handler\n };\n if (this.registeredListeners.has(eventType)) {\n this.registeredListeners.get(eventType).push(record);\n } else {\n this.registeredListeners.set(eventType, [record]);\n }\n return () => this.removeListener(record.symbol);\n }\n removeListener(eventSymbol) {\n for (const [type, listeners] of this.registeredListeners.entries()) {\n const matchIndex = listeners.findIndex(listener => listener.symbol === eventSymbol);\n if (matchIndex >= 0) {\n listeners.splice(matchIndex, 1);\n if (listeners.length === 0) {\n this.registeredListeners.delete(type);\n }\n break;\n }\n }\n }\n dispatch(eventType, ...params) {\n for (const listener of this.getListenersByType(eventType)) {\n try {\n listener.handler(...params);\n } catch (e) {\n Logger.errorOnce(e);\n }\n }\n }\n dispatchWrapHandlers(eventType, wrapFn, ...params) {\n for (const listener of this.getListenersByType(eventType)) {\n try {\n wrapFn(listener.handler, ...params);\n } catch (e) {\n Logger.errorOnce(e);\n }\n }\n }\n getListenersByType(eventType) {\n var _a;\n return (_a = this.registeredListeners.get(eventType)) != null ? _a : [];\n }\n destroy() {\n this.registeredListeners.clear();\n }\n};\n\n// packages/ag-charts-community/src/chart/data/dataService.ts\nvar DataService = class extends Listeners {\n constructor(animationManager) {\n super();\n this.animationManager = animationManager;\n this.dispatchOnlyLatest = true;\n this.dispatchThrottle = 0;\n this.requestThrottle = 300;\n this.isLoadingInitialData = false;\n this.isLoadingData = false;\n this.freshRequests = [];\n this.requestCounter = 0;\n this.debug = Debug.create(true, \"data-model\", \"data-source\");\n this.throttledFetch = this.createThrottledFetch(this.requestThrottle);\n this.throttledDispatch = this.createThrottledDispatch(this.dispatchThrottle);\n }\n updateCallback(dataSourceCallback) {\n if (typeof dataSourceCallback !== \"function\") return;\n this.debug(\"DataService - updated data source callback\");\n this.dataSourceCallback = dataSourceCallback;\n this.isLoadingInitialData = true;\n this.animationManager.skip();\n this.dispatch(\"data-source-change\");\n }\n clearCallback() {\n this.dataSourceCallback = void 0;\n }\n load(params) {\n this.isLoadingData = true;\n this.throttledFetch(params);\n }\n isLazy() {\n return this.dataSourceCallback != null;\n }\n isLoading() {\n return this.isLazy() && (this.isLoadingInitialData || this.isLoadingData);\n }\n createThrottledFetch(requestThrottle) {\n return throttle(params => this.fetch(params), requestThrottle, {\n leading: false,\n trailing: true\n });\n }\n createThrottledDispatch(dispatchThrottle) {\n return throttle((id, data) => {\n this.debug(`DataService - dispatching 'data-load' | ${id}`);\n this.dispatch(\"data-load\", {\n type: \"data-load\",\n data\n });\n }, dispatchThrottle, {\n leading: true,\n trailing: true\n });\n }\n fetch(params) {\n return __async(this, null, function* () {\n if (!this.dataSourceCallback) {\n throw new Error(\"DataService - [dataSource.getData] callback not initialised\");\n }\n const start = performance.now();\n const id = this.requestCounter++;\n this.debug(`DataService - requesting | ${id}`);\n this.freshRequests.push(id);\n let response;\n try {\n response = yield this.dataSourceCallback(params);\n this.debug(`DataService - response | ${performance.now() - start}ms | ${id}`);\n } catch (error) {\n this.debug(`DataService - request failed | ${id}`);\n Logger.errorOnce(`DataService - request failed | [${error}]`);\n }\n this.isLoadingInitialData = false;\n const requestIndex = this.freshRequests.findIndex(rid => rid === id);\n if (requestIndex === -1 || this.dispatchOnlyLatest && requestIndex !== this.freshRequests.length - 1) {\n this.debug(`DataService - discarding stale request | ${id}`);\n return;\n }\n this.freshRequests = this.freshRequests.slice(requestIndex + 1);\n if (this.freshRequests.length === 0) {\n this.isLoadingData = false;\n }\n if (Array.isArray(response)) {\n this.throttledDispatch(id, response);\n } else {\n this.dispatch(\"data-error\");\n }\n });\n }\n};\n__decorateClass([ActionOnSet({\n newValue(dispatchThrottle) {\n this.throttledDispatch = this.createThrottledDispatch(dispatchThrottle);\n }\n})], DataService.prototype, \"dispatchThrottle\", 2);\n__decorateClass([ActionOnSet({\n newValue(requestThrottle) {\n this.throttledFetch = this.createThrottledFetch(requestThrottle);\n }\n})], DataService.prototype, \"requestThrottle\", 2);\n\n// packages/ag-charts-community/src/chart/interaction/animationBatch.ts\nvar AnimationBatch = class {\n constructor(maxAnimationTime) {\n this.maxAnimationTime = maxAnimationTime;\n this.debug = Debug.create(true, \"animation\");\n this.controllers = /* @__PURE__ */new Map();\n this.stoppedCbs = /* @__PURE__ */new Set();\n this.currentPhase = 0;\n this.phases = new Map(PHASE_ORDER.map(p => [p, []]));\n this.skipAnimations = false;\n this.animationTimeConsumed = 0;\n /** Guard against premature animation execution. */\n this.isReady = false;\n }\n get size() {\n return this.controllers.size;\n }\n get consumedTimeMs() {\n return this.animationTimeConsumed;\n }\n isActive() {\n return this.controllers.size > 0;\n }\n getActiveControllers() {\n var _a;\n return (_a = this.phases.get(PHASE_ORDER[this.currentPhase])) != null ? _a : [];\n }\n checkOverlappingId(id) {\n if (id != null && this.controllers.has(id)) {\n this.controllers.get(id).stop();\n this.debug(`Skipping animation batch due to update of existing animation: ${id}`);\n this.skip();\n }\n }\n addAnimation(animation) {\n var _a;\n if (animation.isComplete) return;\n const animationPhaseIdx = PHASE_ORDER.indexOf(animation.phase);\n if (animationPhaseIdx < this.currentPhase) {\n this.debug(`Skipping animation due to being for an earlier phase`, animation.id);\n animation.stop();\n return;\n }\n this.controllers.set(animation.id, animation);\n (_a = this.phases.get(animation.phase)) == null ? void 0 : _a.push(animation);\n }\n removeAnimation(animation) {\n this.controllers.delete(animation.id);\n const phase = this.phases.get(animation.phase);\n const index = phase == null ? void 0 : phase.indexOf(animation);\n if (index != null && index >= 0) {\n phase == null ? void 0 : phase.splice(index, 1);\n }\n }\n progress(deltaTime) {\n if (!this.isReady) return;\n let unusedTime = deltaTime === 0 ? 0.01 : deltaTime;\n const refresh = () => {\n const phase2 = PHASE_ORDER[this.currentPhase];\n return {\n phaseControllers: [...this.getActiveControllers()],\n phase: phase2,\n phaseMeta: PHASE_METADATA[phase2]\n };\n };\n let {\n phase,\n phaseControllers,\n phaseMeta\n } = refresh();\n const arePhasesComplete = () => PHASE_ORDER[this.currentPhase] == null;\n const progressPhase = () => {\n ({\n phase,\n phaseControllers,\n phaseMeta\n } = refresh());\n while (!arePhasesComplete() && phaseControllers.length === 0) {\n this.currentPhase++;\n ({\n phase,\n phaseControllers,\n phaseMeta\n } = refresh());\n this.debug(`AnimationBatch - phase changing to ${phase}`, {\n unusedTime\n }, phaseControllers);\n }\n };\n const total = this.controllers.size;\n this.debug(`AnimationBatch - ${deltaTime}ms; phase ${phase} with ${phaseControllers == null ? void 0 : phaseControllers.length} of ${total}`);\n do {\n const phaseDeltaTime = unusedTime;\n const skipPhase = phaseMeta.skipIfNoEarlierAnimations && this.animationTimeConsumed === 0;\n let completeCount = 0;\n for (const controller of phaseControllers) {\n if (skipPhase) {\n controller.stop();\n } else {\n unusedTime = Math.min(controller.update(phaseDeltaTime), unusedTime);\n }\n if (controller.isComplete) {\n completeCount++;\n this.removeAnimation(controller);\n }\n }\n this.animationTimeConsumed += phaseDeltaTime - unusedTime;\n this.debug(`AnimationBatch - updated ${phaseControllers.length} controllers; ${completeCount} completed`);\n this.debug(`AnimationBatch - animationTimeConsumed: ${this.animationTimeConsumed}`);\n progressPhase();\n } while (unusedTime > 0 && !arePhasesComplete());\n if (this.animationTimeConsumed > this.maxAnimationTime) {\n Logger.warnOnce(\"Animation batch exceeded max animation time, skipping.\", new Map(this.controllers.entries()));\n this.stop();\n }\n }\n ready() {\n if (this.isReady) return;\n this.isReady = true;\n this.debug(`AnimationBatch - ready; skipped: ${this.skipAnimations}`, [...this.controllers]);\n let skipAll = true;\n for (const [, controller] of this.controllers) {\n if (controller.duration > 0 && PHASE_METADATA[controller.phase].skipIfNoEarlierAnimations !== true) {\n skipAll = false;\n break;\n }\n }\n if (!skipAll) {\n for (const [, controller] of this.controllers) {\n if (controller.autoplay) {\n controller.play(true);\n }\n }\n }\n }\n skip(skip = true) {\n if (this.skipAnimations === false && skip === true) {\n for (const controller of this.controllers.values()) {\n controller.stop();\n }\n this.controllers.clear();\n }\n this.skipAnimations = skip;\n }\n play() {\n for (const controller of this.controllers.values()) {\n controller.play();\n }\n }\n pause() {\n for (const controller of this.controllers.values()) {\n controller.pause();\n }\n }\n stop() {\n for (const controller of this.controllers.values()) {\n try {\n controller.stop();\n this.removeAnimation(controller);\n } catch (error) {\n Logger.error(\"Error during animation stop\", error);\n }\n }\n this.dispatchStopped();\n }\n stopByAnimationId(id) {\n if (id != null && this.controllers.has(id)) {\n const controller = this.controllers.get(id);\n if (controller) {\n controller.stop();\n this.removeAnimation(controller);\n }\n }\n }\n stopByAnimationGroupId(id) {\n for (const controller of this.controllers.values()) {\n if (controller.groupId === id) {\n this.stopByAnimationId(controller.id);\n }\n }\n }\n dispatchStopped() {\n this.stoppedCbs.forEach(cb => cb());\n this.stoppedCbs.clear();\n }\n isSkipped() {\n return this.skipAnimations;\n }\n destroy() {\n this.stop();\n this.controllers.clear();\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/baseManager.ts\nvar BaseManager = class {\n constructor() {\n this.listeners = new Listeners();\n this.destroyFns = [];\n }\n addListener(type, handler) {\n return this.listeners.addListener(type, handler);\n }\n removeListener(listenerSymbol) {\n this.listeners.removeListener(listenerSymbol);\n }\n destroy() {\n this.listeners.destroy();\n this.destroyFns.forEach(fn => fn());\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/consumableEvent.ts\nfunction buildConsumable(obj) {\n const builtEvent = __spreadProps(__spreadValues({}, obj), {\n consumed: false,\n consume() {\n var _a, _b;\n builtEvent.consumed = true;\n if (obj.sourceEvent instanceof Event) {\n (_a = obj.sourceEvent) == null ? void 0 : _a.preventDefault();\n } else {\n (_b = obj.sourceEvent) == null ? void 0 : _b.consume();\n }\n }\n });\n return builtEvent;\n}\nfunction buildConsumptionHandler() {\n return (handler, e) => {\n if (!e.consumed) {\n handler(e);\n }\n };\n}\nfunction dispatchTypedConsumable(listeners, type, event) {\n listeners.dispatchWrapHandlers(type, buildConsumptionHandler(), event);\n}\n\n// packages/ag-charts-community/src/chart/interaction/interactionManager.ts\nvar POINTER_INTERACTION_TYPES = [\"click\", \"dblclick\", \"contextmenu\", \"hover\", \"drag-start\", \"drag\", \"drag-end\", \"leave\", \"enter\", \"page-left\", \"wheel\"];\nvar FOCUS_INTERACTION_TYPES = [\"blur\", \"focus\"];\nvar KEY_INTERACTION_TYPES = [\"keydown\", \"keyup\"];\nvar WINDOW_EVENT_HANDLERS = [\"pagehide\", \"mousemove\", \"mouseup\"];\nvar EVENT_HANDLERS = [\"click\", \"dblclick\", \"contextmenu\", \"mousedown\", \"mouseout\", \"mouseenter\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\", \"wheel\", \"blur\", \"focus\", \"keydown\", \"keyup\"];\nvar CSS = `\n.ag-chart-wrapper {\n touch-action: none;\n}\n`;\nvar InteractionState = /* @__PURE__ */(InteractionState2 => {\n InteractionState2[InteractionState2[\"Default\"] = 16] = \"Default\";\n InteractionState2[InteractionState2[\"ZoomDrag\"] = 8] = \"ZoomDrag\";\n InteractionState2[InteractionState2[\"Annotations\"] = 4] = \"Annotations\";\n InteractionState2[InteractionState2[\"ContextMenu\"] = 2] = \"ContextMenu\";\n InteractionState2[InteractionState2[\"Animation\"] = 1] = \"Animation\";\n InteractionState2[InteractionState2[\"All\"] = 31] = \"All\";\n return InteractionState2;\n})(InteractionState || {});\nvar _InteractionManager = class _InteractionManager extends BaseManager {\n constructor(keyboardOptions, element2) {\n super();\n this.keyboardOptions = keyboardOptions;\n this.debug = Debug.create(true, \"interaction\");\n this.eventHandler = event => this.processEvent(event);\n this.mouseDown = false;\n this.touchDown = false;\n this.clickHistory = [{\n offsetX: NaN,\n offsetY: NaN,\n type: \"mousedown\"\n }];\n this.dblclickHistory = [{\n offsetX: NaN,\n offsetY: NaN,\n type: \"mousedown\"\n }, {\n offsetX: NaN,\n offsetY: NaN,\n type: \"mouseup\"\n }, {\n offsetX: NaN,\n offsetY: NaN,\n type: \"mousedown\"\n }];\n this.stateQueue = 16 /* Default */ | 1 /* Animation */;\n this.rootElement = getDocument(\"body\");\n this.element = element2;\n for (const type of EVENT_HANDLERS) {\n if (type.startsWith(\"touch\")) {\n element2.addEventListener(type, this.eventHandler, {\n passive: true\n });\n } else if (type === \"wheel\") {\n element2.addEventListener(type, this.eventHandler, {\n passive: false\n });\n } else {\n element2.addEventListener(type, this.eventHandler);\n }\n }\n for (const type of WINDOW_EVENT_HANDLERS) {\n getWindow().addEventListener(type, this.eventHandler);\n }\n injectStyle(CSS, \"interactionManager\");\n }\n destroy() {\n super.destroy();\n for (const type of WINDOW_EVENT_HANDLERS) {\n getWindow().removeEventListener(type, this.eventHandler);\n }\n for (const type of EVENT_HANDLERS) {\n this.element.removeEventListener(type, this.eventHandler);\n }\n }\n // Wrapper to only broadcast events when the InteractionManager is a given state.\n addListener(type, handler, triggeringStates = 16 /* Default */) {\n return super.addListener(type, e => {\n const currentState = this.getState();\n if (currentState & triggeringStates) {\n handler(e);\n }\n });\n }\n pushState(state) {\n this.stateQueue |= state;\n }\n popState(state) {\n this.stateQueue &= ~state;\n }\n getState() {\n return this.stateQueue & -this.stateQueue;\n }\n processEvent(event) {\n const types = this.decideInteractionEventTypes(event);\n if (types.length > 0) {\n this.dispatchEvent(event, types).catch(e => Logger.errorOnce(e));\n }\n }\n dispatchEvent(event, types) {\n return __async(this, null, function* () {\n if (allInStringUnion(POINTER_INTERACTION_TYPES, types)) {\n this.dispatchPointerEvent(event, types);\n } else if (allInStringUnion(FOCUS_INTERACTION_TYPES, types)) {\n for (const type of types) {\n dispatchTypedConsumable(this.listeners, type, buildConsumable({\n type,\n sourceEvent: event\n }));\n }\n } else if (allInStringUnion(KEY_INTERACTION_TYPES, types)) {\n for (const type of types) {\n dispatchTypedConsumable(this.listeners, type, buildConsumable({\n type,\n sourceEvent: event\n }));\n }\n }\n });\n }\n dispatchPointerEvent(event, types) {\n const coords = this.calculateCoordinates(event);\n if (coords == null) {\n return;\n }\n for (const type of types) {\n dispatchTypedConsumable(this.listeners, type, this.buildPointerEvent(__spreadValues({\n type,\n event\n }, coords)));\n }\n }\n recordDown(event) {\n if (event instanceof MouseEvent) {\n partialAssign([\"offsetX\", \"offsetY\"], this.clickHistory[0], event);\n partialAssign([\"offsetX\", \"offsetY\"], this.dblclickHistory[2], this.dblclickHistory[0]);\n partialAssign([\"offsetX\", \"offsetY\"], this.dblclickHistory[0], event);\n }\n this.dragStartElement = event.target;\n }\n recordUp(event) {\n if (event instanceof MouseEvent) {\n partialAssign([\"offsetX\", \"offsetY\"], this.dblclickHistory[1], event);\n }\n this.dragStartElement = void 0;\n }\n decideInteractionEventTypes(event) {\n const dragStart = \"drag-start\";\n switch (event.type) {\n case \"blur\":\n case \"focus\":\n case \"keydown\":\n case \"keyup\":\n return this.keyboardOptions.enabled ? [event.type] : [];\n case \"click\":\n case \"dblclick\":\n case \"contextmenu\":\n case \"wheel\":\n return [event.type];\n case \"mousedown\":\n if (!this.isEventOverElement(event)) {\n return [];\n }\n this.mouseDown = true;\n this.recordDown(event);\n return [dragStart];\n case \"touchstart\":\n if (!this.isEventOverElement(event)) {\n return [];\n }\n this.touchDown = true;\n this.recordDown(event);\n return [dragStart];\n case \"touchmove\":\n case \"mousemove\":\n if (!this.mouseDown && !this.touchDown && !this.isEventOverElement(event)) {\n return [];\n }\n return this.mouseDown || this.touchDown ? [\"drag\"] : [\"hover\"];\n case \"mouseup\":\n if (!this.mouseDown && !this.isEventOverElement(event)) {\n return [];\n }\n this.mouseDown = false;\n this.recordUp(event);\n return [\"drag-end\"];\n case \"touchend\":\n if (!this.touchDown && !this.isEventOverElement(event)) {\n return [];\n }\n this.touchDown = false;\n this.recordUp(event);\n return [\"drag-end\"];\n case \"mouseout\":\n case \"touchcancel\":\n return [\"leave\"];\n case \"mouseenter\":\n const mouseButtonDown = event instanceof MouseEvent && (event.buttons & 1) === 1;\n if (this.mouseDown !== mouseButtonDown) {\n this.mouseDown = mouseButtonDown;\n return [mouseButtonDown ? dragStart : \"drag-end\"];\n }\n return [\"enter\"];\n case \"pagehide\":\n return [\"page-left\"];\n }\n return [];\n }\n isEventOverElement(event) {\n var _a, _b, _c;\n return event.target === this.element || ((_a = event.target) == null ? void 0 : _a.parentElement) === this.element || ((_c = (_b = event.target) == null ? void 0 : _b.parentElement) == null ? void 0 : _c.parentElement) === this.element;\n }\n calculateCoordinates(event) {\n var _a;\n if (event instanceof MouseEvent) {\n return this.getMouseEventCoords(event);\n } else if (typeof TouchEvent !== \"undefined\" && event instanceof TouchEvent) {\n const lastTouch = (_a = event.touches[0]) != null ? _a : event.changedTouches[0];\n const {\n clientX,\n clientY,\n pageX,\n pageY\n } = lastTouch;\n return __spreadProps(__spreadValues({}, _InteractionManager.NULL_COORDS), {\n clientX,\n clientY,\n pageX,\n pageY\n });\n } else if (event instanceof PageTransitionEvent) {\n if (event.persisted) {\n return;\n }\n return _InteractionManager.NULL_COORDS;\n }\n }\n getMouseEventCoords(event) {\n const {\n clientX,\n clientY,\n pageX,\n pageY\n } = event;\n let {\n offsetX,\n offsetY\n } = event;\n const offsets = el => {\n let x = 0;\n let y = 0;\n while (el) {\n x += el.offsetLeft;\n y += el.offsetTop;\n el = el.offsetParent;\n }\n return {\n x,\n y\n };\n };\n if (this.dragStartElement != null && event.target !== this.dragStartElement) {\n const offsetDragStart = offsets(this.dragStartElement);\n const offsetEvent = offsets(event.target);\n offsetX -= offsetDragStart.x - offsetEvent.x;\n offsetY -= offsetDragStart.y - offsetEvent.y;\n }\n return {\n clientX,\n clientY,\n pageX,\n pageY,\n offsetX,\n offsetY\n };\n }\n isWheelEvent(event) {\n return event.type === \"wheel\";\n }\n buildPointerEvent(opts) {\n const {\n type,\n event,\n clientX,\n clientY\n } = opts;\n let {\n offsetX,\n offsetY,\n pageX,\n pageY\n } = opts;\n if (!isFiniteNumber(offsetX) || !isFiniteNumber(offsetY)) {\n const rect = this.element.getBoundingClientRect();\n offsetX = clientX - rect.left;\n offsetY = clientY - rect.top;\n }\n if (!isFiniteNumber(pageX) || !isFiniteNumber(pageY)) {\n const pageRect = this.rootElement.getBoundingClientRect();\n pageX = clientX - pageRect.left;\n pageY = clientY - pageRect.top;\n }\n let [deltaX, deltaY] = [NaN, NaN];\n if (this.isWheelEvent(event)) {\n const factor = event.deltaMode === 0 ? 0.01 : 1;\n deltaX = event.deltaX * factor;\n deltaY = event.deltaY * factor;\n }\n let pointerHistory = [];\n if (event.type === \"click\") {\n pointerHistory = this.clickHistory;\n } else if (event.type === \"dblclick\") {\n pointerHistory = this.dblclickHistory;\n }\n const builtEvent = buildConsumable({\n type,\n offsetX,\n offsetY,\n pageX,\n pageY,\n deltaX,\n deltaY,\n pointerHistory,\n sourceEvent: event\n });\n this.debug(\"InteractionManager - builtEvent: \", builtEvent);\n return builtEvent;\n }\n};\n_InteractionManager.NULL_COORDS = {\n clientX: -Infinity,\n clientY: -Infinity,\n pageX: -Infinity,\n pageY: -Infinity,\n offsetX: -Infinity,\n offsetY: -Infinity\n};\nvar InteractionManager = _InteractionManager;\n\n// packages/ag-charts-community/src/chart/interaction/animationManager.ts\nfunction validAnimationDuration(testee) {\n if (testee == null) return true;\n return !isNaN(testee) && testee >= 0 && testee <= 2;\n}\nvar AnimationManager = class extends BaseManager {\n constructor(interactionManager, chartUpdateMutex) {\n super();\n this.interactionManager = interactionManager;\n this.chartUpdateMutex = chartUpdateMutex;\n this.defaultDuration = 1e3;\n this.batch = new AnimationBatch(this.defaultDuration * 1.5);\n this.debug = Debug.create(true, \"animation\");\n this.rafAvailable = typeof requestAnimationFrame !== \"undefined\";\n this.isPlaying = false;\n this.requestId = null;\n this.skipAnimations = false;\n }\n /**\n * Create an animation to tween a value between the `from` and `to` properties. If an animation already exists\n * with the same `id`, immediately stop it.\n */\n animate(_a) {\n var opts = __objRest(_a, []);\n var _a2;\n const batch = this.batch;\n try {\n batch.checkOverlappingId(opts.id);\n } catch (error) {\n this.failsafeOnError(error);\n return;\n }\n const id = (_a2 = opts.id) != null ? _a2 : Math.random().toString();\n const skip = this.isSkipped() || opts.phase === \"none\";\n if (skip) {\n this.debug(\"AnimationManager - skipping animation\");\n }\n const {\n delay,\n duration\n } = opts;\n if (!validAnimationDuration(delay)) {\n throw new Error(`Animation delay of ${delay} is unsupported (${id})`);\n }\n if (!validAnimationDuration(duration)) {\n throw new Error(`Animation duration of ${duration} is unsupported (${id})`);\n }\n const animation = new Animation(__spreadProps(__spreadValues({}, opts), {\n id,\n skip,\n autoplay: this.isPlaying ? opts.autoplay : false,\n phase: opts.phase,\n defaultDuration: this.defaultDuration\n }));\n if (this.forceTimeJump(animation, this.defaultDuration)) {\n return;\n }\n this.batch.addAnimation(animation);\n return animation;\n }\n play() {\n if (this.isPlaying) {\n return;\n }\n this.isPlaying = true;\n this.debug(\"AnimationManager.play()\");\n try {\n this.batch.play();\n } catch (error) {\n this.failsafeOnError(error);\n }\n this.requestAnimation();\n }\n pause() {\n if (!this.isPlaying) {\n return;\n }\n this.isPlaying = false;\n this.cancelAnimation();\n this.debug(\"AnimationManager.pause()\");\n try {\n this.batch.pause();\n } catch (error) {\n this.failsafeOnError(error);\n }\n }\n stop() {\n this.isPlaying = false;\n this.cancelAnimation();\n this.debug(\"AnimationManager.stop()\");\n this.batch.stop();\n }\n stopByAnimationId(id) {\n try {\n this.batch.stopByAnimationId(id);\n } catch (error) {\n this.failsafeOnError(error);\n }\n }\n stopByAnimationGroupId(id) {\n try {\n this.batch.stopByAnimationGroupId(id);\n } catch (error) {\n this.failsafeOnError(error);\n }\n }\n reset() {\n if (this.isPlaying) {\n this.stop();\n this.play();\n } else {\n this.stop();\n }\n }\n skip(skip = true) {\n this.skipAnimations = skip;\n }\n isSkipped() {\n return !this.rafAvailable || this.skipAnimations || this.batch.isSkipped();\n }\n isActive() {\n return this.isPlaying && this.batch.isActive();\n }\n skipCurrentBatch() {\n if (this.debug.check()) {\n this.debug(`AnimationManager - skipCurrentBatch()`, {\n stack: new Error().stack\n });\n }\n this.batch.skip();\n }\n /** Mocking point for tests to guarantee that animation updates happen. */\n isSkippingFrames() {\n return true;\n }\n /** Mocking point for tests to capture requestAnimationFrame callbacks. */\n scheduleAnimationFrame(cb) {\n this.requestId = requestAnimationFrame(cb);\n }\n /** Mocking point for tests to skip animations to a specific point in time. */\n forceTimeJump(_animation, _defaultDuration) {\n return false;\n }\n requestAnimation() {\n if (!this.rafAvailable) return;\n if (!this.batch.isActive() || this.requestId !== null) return;\n let prevTime;\n const onAnimationFrame = time2 => __async(this, null, function* () {\n const executeAnimationFrame = () => __async(this, null, function* () {\n const deltaTime = time2 - (prevTime != null ? prevTime : time2);\n prevTime = time2;\n this.debug(\"AnimationManager - onAnimationFrame()\", {\n controllersCount: this.batch.size,\n deltaTime\n });\n this.interactionManager.pushState(1 /* Animation */);\n try {\n this.batch.progress(deltaTime);\n } catch (error) {\n this.failsafeOnError(error);\n }\n this.listeners.dispatch(\"animation-frame\", {\n type: \"animation-frame\",\n deltaMs: deltaTime\n });\n });\n if (this.isSkippingFrames()) {\n yield this.chartUpdateMutex.acquireImmediately(executeAnimationFrame);\n } else {\n yield this.chartUpdateMutex.acquire(executeAnimationFrame);\n }\n if (this.batch.isActive()) {\n this.scheduleAnimationFrame(onAnimationFrame);\n } else {\n this.batch.stop();\n this.listeners.dispatch(\"animation-stop\", {\n type: \"animation-stop\",\n deltaMs: this.batch.consumedTimeMs\n });\n }\n });\n this.listeners.dispatch(\"animation-start\", {\n type: \"animation-start\",\n deltaMs: 0\n });\n this.scheduleAnimationFrame(onAnimationFrame);\n }\n cancelAnimation() {\n if (this.requestId === null) return;\n cancelAnimationFrame(this.requestId);\n this.requestId = null;\n this.startBatch();\n }\n failsafeOnError(error, cancelAnimation = true) {\n Logger.error(\"Error during animation, skipping animations\", error);\n if (cancelAnimation) {\n this.cancelAnimation();\n }\n }\n startBatch(skipAnimations) {\n this.debug(`AnimationManager - startBatch() with skipAnimations=${skipAnimations}.`);\n this.reset();\n this.batch.stop();\n this.batch.destroy();\n this.batch = new AnimationBatch(this.defaultDuration * 1.5);\n if (skipAnimations === true) {\n this.batch.skip();\n }\n }\n endBatch() {\n if (this.batch.isActive()) {\n this.batch.ready();\n this.requestAnimation();\n } else {\n this.interactionManager.popState(1 /* Animation */);\n if (this.batch.isSkipped()) {\n this.batch.skip(false);\n }\n }\n }\n onBatchStop(cb) {\n this.batch.stoppedCbs.add(cb);\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/ariaAnnouncementServices.ts\nvar AriaAnnouncementService = class _AriaAnnouncementService {\n constructor(canvas) {\n this.canvas = canvas;\n this.debug = Debug.create(true, \"aria\");\n this.canvas.appendChild(this.liveElem = _AriaAnnouncementService.createAnnouncer());\n }\n static createAnnouncer() {\n const e = getDocument().createElement(\"div\");\n e.classList.add(\"ag-charts-aria-announcer\");\n setAttribute(e, \"role\", \"status\");\n setAttribute(e, \"aria-live\", \"assertive\");\n return e;\n }\n destroy() {\n this.canvas.removeChild(this.liveElem);\n }\n announceValue(value) {\n this.debug(`AriaAnnouncementService - announceValue: ${value}`);\n this.liveElem.textContent = value;\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/chartEventManager.ts\nvar ChartEventManager = class extends BaseManager {\n legendItemClick(series, itemId, enabled, legendItemName) {\n const event = {\n type: \"legend-item-click\",\n series,\n itemId,\n enabled,\n legendItemName\n };\n this.listeners.dispatch(\"legend-item-click\", event);\n }\n legendItemDoubleClick(series, itemId, enabled, numVisibleItems, legendItemName) {\n const event = {\n type: \"legend-item-double-click\",\n series,\n itemId,\n enabled,\n legendItemName,\n numVisibleItems\n };\n this.listeners.dispatch(\"legend-item-double-click\", event);\n }\n axisHover(axisId, direction) {\n const event = {\n type: \"axis-hover\",\n axisId,\n direction\n };\n this.listeners.dispatch(\"axis-hover\", event);\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/contextMenuRegistry.ts\nvar ContextMenuRegistry = class {\n constructor() {\n this.defaultActions = [];\n this.disabledActions = /* @__PURE__ */new Set();\n }\n copyDefaultActions() {\n return [...this.defaultActions];\n }\n registerDefaultAction(action) {\n if (action.id && this.defaultActions.find(({\n id\n }) => id === action.id)) {\n return;\n }\n this.defaultActions.push(action);\n }\n enableAction(actionId) {\n this.disabledActions.delete(actionId);\n }\n disableAction(actionId) {\n this.disabledActions.add(actionId);\n }\n isDisabled(actionId) {\n return this.disabledActions.has(actionId);\n }\n};\n\n// packages/ag-charts-community/src/util/stateTracker.ts\nvar StateTracker = class extends Map {\n constructor(defaultValue, defaultState) {\n super();\n this.defaultValue = defaultValue;\n this.defaultState = defaultState;\n }\n set(key, value) {\n this.delete(key);\n if (typeof value !== \"undefined\") {\n super.set(key, value);\n }\n return this;\n }\n stateId() {\n var _a;\n return (_a = Array.from(this.keys()).pop()) != null ? _a : this.defaultState;\n }\n stateValue() {\n var _a;\n return (_a = Array.from(this.values()).pop()) != null ? _a : this.defaultValue;\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/cursorManager.ts\nvar CursorManager = class {\n constructor(element2) {\n this.element = element2;\n this.stateTracker = new StateTracker(\"default\");\n }\n updateCursor(callerId, style) {\n this.stateTracker.set(callerId, style);\n this.element.style.cursor = this.stateTracker.stateValue();\n }\n getCursor() {\n return this.element.style.cursor;\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/gestureDetector.ts\nfunction distanceSquared(finger1, finger2) {\n const dx = finger1.screenX - finger2.screenX;\n const dy = finger1.screenY - finger2.screenY;\n return dx * dx + dy * dy;\n}\nfunction distance(finger1, finger2) {\n return Math.sqrt(distanceSquared(finger1, finger2));\n}\nvar MIN_DISTANCE_TO_START_PINCH = 1;\nvar GestureDetector = class extends BaseManager {\n constructor(element2) {\n super();\n this.touchstart = event => this.onTouchStart(event);\n this.touchmove = event => this.onTouchMove(event);\n this.touchend = event => this.onTouchEnd(event);\n this.touchcancel = event => this.onTouchCancel(event);\n this.pinch = {\n finger1: {\n identifier: NaN,\n screenX: NaN,\n screenY: NaN\n },\n finger2: {\n identifier: NaN,\n screenX: NaN,\n screenY: NaN\n },\n origin: {\n x: NaN,\n y: NaN\n },\n distance: NaN,\n status: 0 /* Off */\n };\n this.element = element2;\n element2.addEventListener(\"touchstart\", this.touchstart, {\n passive: true\n });\n element2.addEventListener(\"touchmove\", this.touchmove, {\n passive: true\n });\n element2.addEventListener(\"touchend\", this.touchend);\n element2.addEventListener(\"touchcancel\", this.touchcancel);\n }\n destroy() {\n const {\n element: element2\n } = this;\n element2.removeEventListener(\"touchstart\", this.touchstart);\n element2.removeEventListener(\"touchmove\", this.touchmove);\n element2.removeEventListener(\"touchend\", this.touchend);\n element2.removeEventListener(\"touchcancel\", this.touchcancel);\n }\n findPinchTouches(moveEvent) {\n const {\n touches\n } = moveEvent;\n const {\n finger1,\n finger2\n } = this.pinch;\n if (this.pinch.status !== 0 /* Off */ && touches.length === 2) {\n if (touches[0].identifier === finger1.identifier && touches[1].identifier === finger2.identifier) {\n return [touches[0], touches[1]];\n }\n if (touches[0].identifier === finger2.identifier && touches[1].identifier === finger1.identifier) {\n return [touches[1], touches[0]];\n }\n }\n }\n copyTouchData(event) {\n const keys = [\"identifier\", \"screenX\", \"screenY\"];\n partialAssign(keys, this.pinch.finger1, event.touches[0]);\n partialAssign(keys, this.pinch.finger2, event.touches[1]);\n this.pinch.distance = distance(this.pinch.finger1, this.pinch.finger2);\n }\n dispatchPinchEvent(type, deltaDistance) {\n const {\n finger1,\n finger2,\n origin\n } = this.pinch;\n const newEvent = {\n type,\n finger1,\n finger2,\n deltaDistance,\n origin\n };\n this.listeners.dispatch(type, newEvent);\n }\n onTouchStart(event) {\n this.stopPinchTracking();\n const {\n pinch\n } = this;\n if (event.touches.length === 2) {\n pinch.status = 1 /* Initialized */;\n this.copyTouchData(event);\n pinch.origin.x = (event.touches[0].clientX + event.touches[1].clientX) / 2;\n pinch.origin.y = (event.touches[0].clientY + event.touches[1].clientY) / 2;\n }\n }\n onTouchMove(event) {\n const pinchTouches = this.findPinchTouches(event);\n if (pinchTouches !== void 0) {\n const [touch1, touch2] = pinchTouches;\n const {\n pinch\n } = this;\n const newDistance = distance(touch1, touch2);\n const deltaDistance = newDistance - pinch.distance;\n if (pinch.status === 1 /* Initialized */) {\n if (Math.abs(deltaDistance) > MIN_DISTANCE_TO_START_PINCH) {\n pinch.status = 2 /* Running */;\n this.copyTouchData(event);\n this.dispatchPinchEvent(\"pinch-start\", 0);\n }\n } else if (pinch.status === 2 /* Running */) {\n pinch.distance = newDistance;\n this.copyTouchData(event);\n this.dispatchPinchEvent(\"pinch-move\", deltaDistance);\n } else {\n Logger.error(`unexpected pinch.status: ${pinch.status}`);\n }\n }\n }\n onTouchEnd(_event) {\n this.stopPinchTracking();\n }\n onTouchCancel(_event) {\n this.stopPinchTracking();\n }\n stopPinchTracking() {\n const {\n pinch\n } = this;\n if (pinch.status === 2 /* Running */) {\n this.dispatchPinchEvent(\"pinch-end\", 0);\n }\n this.pinch.status = 0 /* Off */;\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/highlightManager.ts\nvar HighlightManager = class extends BaseManager {\n constructor() {\n super(...arguments);\n this.highlightStates = new StateTracker();\n this.pickedStates = new StateTracker();\n }\n updateHighlight(callerId, highlightedDatum) {\n const {\n activeHighlight: previousHighlight\n } = this;\n this.highlightStates.set(callerId, highlightedDatum);\n this.activeHighlight = this.highlightStates.stateValue();\n if (!this.isEqual(this.activeHighlight, previousHighlight)) {\n this.listeners.dispatch(\"highlight-change\", {\n type: \"highlight-change\",\n currentHighlight: this.activeHighlight,\n previousHighlight\n });\n }\n }\n getActiveHighlight() {\n return this.activeHighlight;\n }\n updatePicked(callerId, clickableDatum) {\n this.pickedStates.set(callerId, clickableDatum);\n this.activePicked = this.pickedStates.stateValue();\n }\n getActivePicked() {\n return this.activePicked;\n }\n isEqual(a, b) {\n return a === b || (a == null ? void 0 : a.series) === (b == null ? void 0 : b.series) && (a == null ? void 0 : a.itemId) === (b == null ? void 0 : b.itemId) && (a == null ? void 0 : a.datum) === (b == null ? void 0 : b.datum);\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/keyNavManager.ts\nvar KeyNavManager = class extends BaseManager {\n constructor(interactionManager) {\n super();\n this.hasBrowserFocus = false;\n this.isMouseBlurred = false;\n this.isClicking = false;\n this.destroyFns.push(interactionManager.addListener(\"drag-start\", e => this.onClickStart(e), 31 /* All */), interactionManager.addListener(\"click\", e => this.onClickStop(e), 31 /* All */), interactionManager.addListener(\"drag-end\", e => this.onClickStop(e), 31 /* All */), interactionManager.addListener(\"wheel\", e => this.mouseBlur(e)), interactionManager.addListener(\"hover\", e => this.mouseBlur(e)), interactionManager.addListener(\"drag\", e => this.mouseBlur(e)), interactionManager.addListener(\"blur\", e => this.onBlur(e), 31 /* All */), interactionManager.addListener(\"focus\", e => this.onFocus(e), 31 /* All */), interactionManager.addListener(\"keydown\", e => this.onKeyDown(e), 31 /* All */));\n }\n destroy() {\n super.destroy();\n }\n onClickStart(event) {\n this.isClicking = true;\n this.mouseBlur(event);\n }\n onClickStop(event) {\n this.isClicking = false;\n this.mouseBlur(event);\n }\n mouseBlur(event) {\n if (!this.hasBrowserFocus) return;\n if (!this.isMouseBlurred) {\n this.dispatch(\"blur\", 0, event);\n this.isMouseBlurred = true;\n }\n }\n onBlur(event) {\n this.hasBrowserFocus = false;\n this.isMouseBlurred = false;\n this.dispatch(\"blur\", 0, event);\n }\n onFocus(event) {\n this.hasBrowserFocus = true;\n if (this.isClicking) {\n this.isMouseBlurred = true;\n } else {\n this.dispatch(\"browserfocus\", 1, event);\n this.dispatch(\"tab\", 0, event);\n }\n }\n onKeyDown(event) {\n if (!this.hasBrowserFocus || this.isClicking) return;\n this.isMouseBlurred = false;\n switch (event.sourceEvent.code) {\n case \"Tab\":\n if (event.sourceEvent.shiftKey) {\n return this.dispatch(\"tab\", -1, event);\n } else {\n return this.dispatch(\"tab\", 1, event);\n }\n case \"ArrowDown\":\n return this.dispatch(\"nav-vert\", 1, event);\n case \"ArrowUp\":\n return this.dispatch(\"nav-vert\", -1, event);\n case \"ArrowLeft\":\n return this.dispatch(\"nav-hori\", -1, event);\n case \"ArrowRight\":\n return this.dispatch(\"nav-hori\", 1, event);\n case \"Space\":\n case \"Enter\":\n return this.dispatch(\"submit\", 0, event);\n }\n }\n dispatch(type, delta2, interactionEvent) {\n const event = buildConsumable({\n type,\n delta: delta2,\n sourceEvent: interactionEvent\n });\n dispatchTypedConsumable(this.listeners, type, event);\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/focusStyles.ts\nvar focusStyles_exports = {};\n__export(focusStyles_exports, {\n block: () => block,\n css: () => css,\n elements: () => elements,\n modifiers: () => modifiers\n});\nvar block = \"ag-charts-focus\";\nvar elements = {\n wrapper: `${block}__wrapper`,\n indicator: `${block}__indicator`\n};\nvar modifiers = {\n hidden: `${block}--hidden`\n};\nvar css = `\n.${block}.${elements.wrapper} {\n position: relative;\n display: block;\n pointer-events: none;\n user-select: none;\n overflow: hidden;\n top: 0;\n left: 0;\n}\n\n.${block}.${elements.indicator} {\n position: absolute;\n display: block;\n pointer-events: none;\n user-select: none;\n border: var(--ag-charts-focus-border);\n box-shadow: var(--ag-charts-focus-border-shadow);\n}\n\n.${modifiers.hidden} {\n visibility: hidden;\n}\n`;\n\n// packages/ag-charts-community/src/chart/interaction/regionManager.ts\nvar REGION_TAB_ORDERING = [\"series\", \"legend\"];\nvar RegionListeners = class extends Listeners {};\nvar RegionManager = class {\n constructor(interactionManager, keyNavManager, canvasElement, element2) {\n this.interactionManager = interactionManager;\n this.keyNavManager = keyNavManager;\n this.canvasElement = canvasElement;\n this.currentTabIndex = 0;\n this.isDragging = false;\n this.leftCanvas = false;\n this.regions = /* @__PURE__ */new Map();\n this.destroyFns = [];\n this.destroyFns.push(...POINTER_INTERACTION_TYPES.map(eventName => interactionManager.addListener(eventName, this.processPointerEvent.bind(this), 31 /* All */)), this.keyNavManager.addListener(\"blur\", this.onNav.bind(this)), this.keyNavManager.addListener(\"browserfocus\", this.onFocus.bind(this)), this.keyNavManager.addListener(\"tab\", this.onTab.bind(this)), this.keyNavManager.addListener(\"nav-vert\", this.onNav.bind(this)), this.keyNavManager.addListener(\"nav-hori\", this.onNav.bind(this)), this.keyNavManager.addListener(\"submit\", this.onNav.bind(this)));\n injectStyle(css, block);\n this.focusWrapper = getDocument().createElement(\"div\");\n this.focusIndicator = getDocument().createElement(\"div\");\n this.focusWrapper.appendChild(this.focusIndicator);\n element2.appendChild(this.focusWrapper);\n const {\n block: block3,\n elements: elements3,\n modifiers: modifiers3\n } = focusStyles_exports;\n this.focusWrapper.classList.add(block3, elements3.wrapper);\n this.focusIndicator.classList.add(block3, elements3.indicator, modifiers3.hidden);\n }\n destroy() {\n this.destroyFns.forEach(fn => fn());\n this.currentRegion = void 0;\n for (const region of this.regions.values()) {\n region.listeners.destroy();\n }\n this.focusWrapper.remove();\n this.regions.clear();\n }\n addRegionFromProperties(properties) {\n const region = {\n properties,\n listeners: new RegionListeners()\n };\n this.regions.set(properties.name, region);\n return this.makeObserver(region);\n }\n addRegion(name, bboxprovider, ...extraProviders) {\n return this.addRegionFromProperties({\n name,\n bboxproviders: [bboxprovider, ...extraProviders],\n canInteraction: () => true\n });\n }\n getRegion(name) {\n return this.makeObserver(this.regions.get(name));\n }\n find(x, y) {\n const matches = [];\n for (const [_name, region] of this.regions.entries()) {\n for (const provider of region.properties.bboxproviders) {\n const bbox = provider.getCachedBBox();\n if (bbox.containsPoint(x, y)) {\n matches.push([region, bbox.width * bbox.height]);\n }\n }\n }\n return matches.sort((a, b) => a[1] - b[1]).map(m => m[0]);\n }\n // This method return a wrapper object that matches the interface of InteractionManager.addListener.\n // The intent is to allow the InteractionManager and RegionManager to be used almost interchangeably.\n makeObserver(region) {\n const {\n interactionManager\n } = this;\n class ObservableRegionImplementation {\n addListener(type, handler, triggeringStates = 16 /* Default */) {\n var _a;\n return (_a = region == null ? void 0 : region.listeners.addListener(type, e => {\n if (!e.consumed) {\n const currentState = interactionManager.getState();\n if (currentState & triggeringStates) {\n handler(e);\n }\n }\n })) != null ? _a : () => {};\n }\n }\n return new ObservableRegionImplementation();\n }\n checkPointerHistory(targetRegion, event) {\n for (const historyEvent of event.pointerHistory) {\n const historyRegion = this.pickRegion(historyEvent.offsetX, historyEvent.offsetY);\n if (targetRegion.properties.name !== (historyRegion == null ? void 0 : historyRegion.properties.name)) {\n return false;\n }\n }\n return true;\n }\n dispatch(region, event) {\n region == null ? void 0 : region.listeners.dispatch(event.type, event);\n }\n // Process events during a drag action. Returns false if this event should follow the standard\n // RegionManager.processEvent flow, or true if this event already processed by this function.\n handleDragging(event) {\n const {\n currentRegion\n } = this;\n switch (event.type) {\n case \"drag-start\":\n this.isDragging = true;\n this.leftCanvas = false;\n break;\n case \"leave\":\n this.leftCanvas = true;\n return this.isDragging;\n case \"enter\":\n this.leftCanvas = false;\n return this.isDragging;\n case \"drag\":\n if (this.isDragging) {\n this.dispatch(currentRegion, event);\n return true;\n }\n break;\n case \"drag-end\":\n if (this.isDragging) {\n this.isDragging = false;\n this.dispatch(currentRegion, event);\n if (this.leftCanvas) {\n this.dispatch(currentRegion, __spreadProps(__spreadValues({}, event), {\n type: \"leave\"\n }));\n }\n return true;\n }\n break;\n }\n return false;\n }\n processPointerEvent(event) {\n if (this.handleDragging(event)) {\n return;\n }\n const {\n currentRegion\n } = this;\n const newRegion = this.pickRegion(event.offsetX, event.offsetY);\n if (currentRegion !== void 0 && (newRegion == null ? void 0 : newRegion.properties.name) !== currentRegion.properties.name) {\n this.dispatch(currentRegion, __spreadProps(__spreadValues({}, event), {\n type: \"leave\"\n }));\n }\n if (newRegion !== void 0 && newRegion.properties.name !== (currentRegion == null ? void 0 : currentRegion.properties.name)) {\n this.dispatch(newRegion, __spreadProps(__spreadValues({}, event), {\n type: \"enter\"\n }));\n }\n if (newRegion !== void 0 && this.checkPointerHistory(newRegion, event)) {\n this.dispatch(newRegion, event);\n }\n this.currentRegion = newRegion;\n }\n pickRegion(x, y) {\n const matchingRegions = this.find(x, y);\n return matchingRegions.length > 0 ? matchingRegions[0] : void 0;\n }\n getTabRegion(tabIndex) {\n if (tabIndex !== void 0 && tabIndex >= 0 && tabIndex < REGION_TAB_ORDERING.length) {\n return this.regions.get(REGION_TAB_ORDERING[tabIndex]);\n }\n return void 0;\n }\n dispatchTabStart(event) {\n const {\n delta: delta2,\n sourceEvent\n } = event;\n const startEvent = buildConsumable({\n type: \"tab-start\",\n delta: delta2,\n sourceEvent\n });\n const focusedRegion = this.getTabRegion(this.currentTabIndex);\n this.dispatch(focusedRegion, startEvent);\n return !!startEvent.consumed;\n }\n getNextInteractableTabIndex(currentIndex, delta2) {\n const direction = delta2 < 0 ? -1 : 1;\n let i = currentIndex;\n while (delta2 !== 0) {\n const region = this.getTabRegion(i + direction);\n if (region === void 0) {\n return void 0;\n } else if (region.properties.canInteraction()) {\n delta2 = delta2 - direction;\n }\n i = i + direction;\n }\n return i;\n }\n validateCurrentTabIndex() {\n var _a;\n const focusedRegion = this.getTabRegion(this.currentTabIndex);\n if (focusedRegion !== void 0 && !focusedRegion.properties.canInteraction()) {\n this.currentTabIndex = (_a = this.getNextInteractableTabIndex(-1, 1)) != null ? _a : 0;\n }\n }\n onFocus(event) {\n const {\n delta: delta2,\n sourceEvent\n } = event;\n const newIndex = delta2 > 0 ? this.getNextInteractableTabIndex(-1, 1) : this.getNextInteractableTabIndex(REGION_TAB_ORDERING.length, -1);\n this.currentTabIndex = newIndex != null ? newIndex : 0;\n const focusedRegion = this.getTabRegion(this.currentTabIndex);\n if (focusedRegion) {\n this.dispatch(focusedRegion, buildConsumable({\n type: \"tab\",\n delta: delta2,\n sourceEvent\n }));\n }\n }\n onTab(event) {\n const consumed = this.dispatchTabStart(event);\n if (consumed) return;\n this.validateCurrentTabIndex();\n const newTabIndex = this.getNextInteractableTabIndex(this.currentTabIndex, event.delta);\n const newRegion = this.getTabRegion(newTabIndex);\n const focusedRegion = this.getTabRegion(this.currentTabIndex);\n if (newTabIndex !== void 0) {\n this.currentTabIndex = newTabIndex;\n }\n if (focusedRegion !== void 0 && (newRegion == null ? void 0 : newRegion.properties.name) !== focusedRegion.properties.name) {\n const {\n delta: delta2,\n sourceEvent\n } = event;\n const blurEvent = buildConsumable({\n type: \"blur\",\n delta: delta2,\n sourceEvent\n });\n this.dispatch(focusedRegion, blurEvent);\n }\n if (newRegion === void 0 || !newRegion.properties.canInteraction()) {\n this.updateFocusIndicatorRect(void 0);\n } else {\n this.dispatch(newRegion, event);\n }\n }\n onNav(event) {\n const focusedRegion = this.getTabRegion(this.currentTabIndex);\n this.dispatch(focusedRegion, event);\n }\n updateFocusWrapperRect() {\n this.focusWrapper.style.width = this.canvasElement.style.width;\n this.focusWrapper.style.height = this.canvasElement.style.height;\n }\n updateFocusIndicatorRect(rect) {\n if (rect == null) {\n this.focusIndicator.classList.add(modifiers.hidden);\n return;\n }\n this.updateFocusWrapperRect();\n this.focusIndicator.classList.remove(modifiers.hidden);\n this.focusIndicator.style.width = `${rect.width}px`;\n this.focusIndicator.style.height = `${rect.height}px`;\n this.focusIndicator.style.left = `${rect.x}px`;\n this.focusIndicator.style.top = `${rect.y}px`;\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/toolbarManager.ts\nvar ToolbarManager = class extends BaseManager {\n constructor(element2) {\n super();\n this.element = element2;\n }\n static isGroup(group2, event) {\n return event.group === group2;\n }\n pressButton(group2, value) {\n this.listeners.dispatch(\"button-pressed\", {\n type: \"button-pressed\",\n group: group2,\n value\n });\n }\n toggleGroup(group2, visible) {\n this.listeners.dispatch(\"group-toggled\", {\n type: \"group-toggled\",\n group: group2,\n visible\n });\n }\n toggleButton(group2, value, enabled) {\n this.listeners.dispatch(\"button-toggled\", {\n type: \"button-toggled\",\n group: group2,\n value,\n enabled\n });\n }\n proxyGroupOptions(group2, options) {\n this.listeners.dispatch(\"proxy-group-options\", {\n type: \"proxy-group-options\",\n group: group2,\n options\n });\n }\n};\n\n// packages/ag-charts-community/src/chart/interaction/tooltipManager.ts\nvar defaultTooltipCss = `\n.${DEFAULT_TOOLTIP_CLASS} {\n transition: transform 0.1s ease;\n max-width: 100%;\n position: fixed;\n left: 0px;\n top: 0px;\n z-index: 99999;\n font: 12px Verdana, sans-serif;\n color: rgb(70, 70, 70);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-wrap-always {\n overflow-wrap: break-word;\n word-break: break-word;\n hyphens: none;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-wrap-hyphenate {\n overflow-wrap: break-word;\n word-break: break-word;\n hyphens: auto;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-wrap-on-space {\n overflow-wrap: normal;\n word-break: normal;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-wrap-never {\n white-space: pre;\n text-overflow: ellipsis;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-no-interaction {\n pointer-events: none;\n user-select: none;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-no-animation {\n transition: none !important;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-hidden {\n visibility: hidden;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-title {\n overflow: hidden;\n position: relative;\n padding: 8px 14px;\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n color: white;\n background-color: #888888;\n z-index: 1;\n text-overflow: inherit;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-title:only-child {\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-content {\n overflow: hidden;\n padding: 6px 14px;\n line-height: 1.7em;\n background: white;\n border-bottom-left-radius: 2px;\n border-bottom-right-radius: 2px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n overflow: hidden;\n text-overflow: inherit;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-arrow::before {\n content: \"\";\n\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n\n border: 5px solid #d9d9d9;\n\n border-left-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent;\n\n width: 0;\n height: 0;\n\n margin: 0 auto;\n}\n\n.${DEFAULT_TOOLTIP_CLASS}-arrow::after {\n content: \"\";\n\n position: absolute;\n top: calc(100% - 1px);\n left: 50%;\n transform: translateX(-50%);\n\n border: 5px solid white;\n\n border-left-color: transparent;\n border-right-color: transparent;\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`;\nvar TooltipManager = class {\n constructor(canvasElement, tooltip) {\n this.canvasElement = canvasElement;\n this.tooltip = tooltip;\n this.stateTracker = new StateTracker();\n this.appliedState = null;\n if (typeof IntersectionObserver !== \"undefined\") {\n const observer = new IntersectionObserver(entries => {\n for (const entry of entries) {\n if (entry.target === this.canvasElement && entry.intersectionRatio === 0) {\n this.tooltip.toggle(false);\n }\n }\n }, {\n root: this.tooltip.root\n });\n observer.observe(this.canvasElement);\n this.observer = observer;\n }\n injectStyle(defaultTooltipCss, \"tooltip\");\n }\n updateTooltip(callerId, meta, content) {\n var _a;\n if (!this.tooltip.enabled) return;\n content != null ? content : content = (_a = this.stateTracker.get(callerId)) == null ? void 0 : _a.content;\n this.stateTracker.set(callerId, {\n content,\n meta\n });\n this.applyStates();\n }\n removeTooltip(callerId) {\n if (!this.tooltip.enabled) return;\n this.stateTracker.delete(callerId);\n this.applyStates();\n }\n getTooltipMeta(callerId) {\n var _a;\n return (_a = this.stateTracker.get(callerId)) == null ? void 0 : _a.meta;\n }\n destroy() {\n var _a;\n (_a = this.observer) == null ? void 0 : _a.unobserve(this.canvasElement);\n }\n applyStates() {\n var _a;\n const id = this.stateTracker.stateId();\n const state = id ? this.stateTracker.get(id) : null;\n if ((state == null ? void 0 : state.meta) == null || (state == null ? void 0 : state.content) == null) {\n this.appliedState = null;\n this.tooltip.toggle(false);\n return;\n }\n const canvasRect = this.canvasElement.getBoundingClientRect();\n if (((_a = this.appliedState) == null ? void 0 : _a.content) === (state == null ? void 0 : state.content)) {\n const renderInstantly = this.tooltip.isVisible();\n this.tooltip.show(canvasRect, state == null ? void 0 : state.meta, null, renderInstantly);\n } else {\n this.tooltip.show(canvasRect, state == null ? void 0 : state.meta, state == null ? void 0 : state.content);\n }\n this.appliedState = state;\n }\n static makeTooltipMeta(event, datum) {\n var _a, _b, _c, _d, _e, _f, _g;\n const {\n offsetX,\n offsetY\n } = event;\n const {\n tooltip\n } = datum.series.properties;\n const meta = {\n offsetX,\n offsetY,\n enableInteraction: (_b = (_a = tooltip.interaction) == null ? void 0 : _a.enabled) != null ? _b : false,\n lastPointerEvent: {\n type: event.type,\n offsetX,\n offsetY\n },\n showArrow: tooltip.showArrow,\n position: {\n type: tooltip.position.type,\n xOffset: tooltip.position.xOffset,\n yOffset: tooltip.position.yOffset\n }\n };\n const refPoint = (_g = (_d = (_c = datum.yBar) == null ? void 0 : _c.upperPoint) != null ? _d : datum.midPoint) != null ? _g : (_f = (_e = datum.series).datumMidPoint) == null ? void 0 : _f.call(_e, datum);\n if (tooltip.position.type === \"node\" && refPoint) {\n const {\n x,\n y\n } = refPoint;\n const point = datum.series.contentGroup.inverseTransformPoint(x, y);\n return __spreadProps(__spreadValues({}, meta), {\n offsetX: Math.round(point.x),\n offsetY: Math.round(point.y)\n });\n }\n return meta;\n }\n};\n\n// packages/ag-charts-community/src/chart/layout/layoutService.ts\nvar LayoutService = class extends Listeners {\n constructor() {\n super(...arguments);\n this.layoutComplete = \"layout-complete\";\n }\n addListener(eventType, handler) {\n if (this.isLayoutStage(eventType) || this.isLayoutComplete(eventType)) {\n return super.addListener(eventType, handler);\n }\n throw new Error(`AG Charts - unsupported listener type: ${eventType}`);\n }\n dispatchPerformLayout(stage, ctx) {\n if (this.isLayoutStage(stage)) {\n return this.getListenersByType(stage).reduce((result, listener) => {\n try {\n return listener.handler(result);\n } catch (e) {\n Logger.errorOnce(e);\n return result;\n }\n }, ctx);\n }\n return ctx;\n }\n dispatchLayoutComplete(event) {\n this.dispatch(this.layoutComplete, event);\n }\n isLayoutStage(eventType) {\n return eventType !== this.layoutComplete;\n }\n isLayoutComplete(eventType) {\n return eventType === this.layoutComplete;\n }\n};\n\n// packages/ag-charts-community/src/chart/series/seriesStateManager.ts\nvar SeriesStateManager = class {\n constructor() {\n this.groups = {};\n }\n registerSeries({\n id,\n seriesGrouping,\n visible,\n type\n }) {\n var _a, _b;\n if (!seriesGrouping) return;\n (_b = (_a = this.groups)[type]) != null ? _b : _a[type] = {};\n this.groups[type][id] = {\n grouping: seriesGrouping,\n visible\n };\n }\n deregisterSeries({\n id,\n type\n }) {\n if (this.groups[type]) {\n delete this.groups[type][id];\n }\n if (this.groups[type] && Object.keys(this.groups[type]).length === 0) {\n delete this.groups[type];\n }\n }\n getVisiblePeerGroupIndex({\n type,\n seriesGrouping,\n visible\n }) {\n var _a;\n if (!seriesGrouping) return {\n visibleGroupCount: visible ? 1 : 0,\n visibleSameStackCount: visible ? 1 : 0,\n index: 0\n };\n const visibleGroupsSet = /* @__PURE__ */new Set();\n const visibleSameStackSet = /* @__PURE__ */new Set();\n for (const entry of Object.values((_a = this.groups[type]) != null ? _a : {})) {\n if (!entry.visible) continue;\n visibleGroupsSet.add(entry.grouping.groupIndex);\n if (entry.grouping.groupIndex === seriesGrouping.groupIndex) {\n visibleSameStackSet.add(entry.grouping.stackIndex);\n }\n }\n const visibleGroups = Array.from(visibleGroupsSet);\n visibleGroups.sort((a, b) => a - b);\n return {\n visibleGroupCount: visibleGroups.length,\n visibleSameStackCount: visibleSameStackSet.size,\n index: visibleGroups.indexOf(seriesGrouping.groupIndex)\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/chartUpdateType.ts\nvar ChartUpdateType = /* @__PURE__ */(ChartUpdateType2 => {\n ChartUpdateType2[ChartUpdateType2[\"FULL\"] = 0] = \"FULL\";\n ChartUpdateType2[ChartUpdateType2[\"UPDATE_DATA\"] = 1] = \"UPDATE_DATA\";\n ChartUpdateType2[ChartUpdateType2[\"PROCESS_DATA\"] = 2] = \"PROCESS_DATA\";\n ChartUpdateType2[ChartUpdateType2[\"PERFORM_LAYOUT\"] = 3] = \"PERFORM_LAYOUT\";\n ChartUpdateType2[ChartUpdateType2[\"SERIES_UPDATE\"] = 4] = \"SERIES_UPDATE\";\n ChartUpdateType2[ChartUpdateType2[\"TOOLTIP_RECALCULATION\"] = 5] = \"TOOLTIP_RECALCULATION\";\n ChartUpdateType2[ChartUpdateType2[\"SCENE_RENDER\"] = 6] = \"SCENE_RENDER\";\n ChartUpdateType2[ChartUpdateType2[\"NONE\"] = 7] = \"NONE\";\n return ChartUpdateType2;\n})(ChartUpdateType || {});\n\n// packages/ag-charts-community/src/chart/updateService.ts\nvar UpdateService = class extends Listeners {\n constructor(updateCallback) {\n super();\n this.updateCallback = updateCallback;\n }\n update(type = 0 /* FULL */, options) {\n this.updateCallback(type, options);\n }\n dispatchUpdateComplete(rects) {\n this.dispatch(\"update-complete\", {\n type: \"update-complete\",\n minRect: rects == null ? void 0 : rects.minRect,\n minVisibleRect: rects == null ? void 0 : rects.minVisibleRect\n });\n }\n};\n\n// packages/ag-charts-community/src/chart/chartContext.ts\nvar ChartContext = class {\n constructor(chart, vars) {\n const {\n scene,\n syncManager,\n element: element2,\n updateCallback,\n updateMutex\n } = vars;\n this.chartService = chart;\n this.scene = scene;\n this.syncManager = syncManager;\n this.zoomManager = chart.zoomManager;\n this.annotationManager = new AnnotationManager(chart.annotationRoot);\n this.ariaAnnouncementService = new AriaAnnouncementService(scene.canvas.element);\n this.chartEventManager = new ChartEventManager();\n this.contextMenuRegistry = new ContextMenuRegistry();\n this.cursorManager = new CursorManager(element2);\n this.highlightManager = new HighlightManager();\n this.interactionManager = new InteractionManager(chart.keyboard, element2);\n this.keyNavManager = new KeyNavManager(this.interactionManager);\n this.regionManager = new RegionManager(this.interactionManager, this.keyNavManager, this.scene.canvas.element, element2);\n this.toolbarManager = new ToolbarManager(element2);\n this.gestureDetector = new GestureDetector(element2);\n this.layoutService = new LayoutService();\n this.updateService = new UpdateService(updateCallback);\n this.seriesStateManager = new SeriesStateManager();\n this.callbackCache = new CallbackCache();\n this.animationManager = new AnimationManager(this.interactionManager, updateMutex);\n this.animationManager.skip();\n this.animationManager.play();\n this.dataService = new DataService(this.animationManager);\n this.tooltipManager = new TooltipManager(this.scene.canvas.element, chart.tooltip);\n }\n destroy() {\n this.tooltipManager.destroy();\n this.regionManager.destroy();\n this.keyNavManager.destroy();\n this.interactionManager.destroy();\n this.animationManager.stop();\n this.animationManager.destroy();\n this.ariaAnnouncementService.destroy();\n this.chartEventManager.destroy();\n this.highlightManager.destroy();\n this.callbackCache.invalidateCache();\n this.animationManager.reset();\n this.syncManager.destroy();\n }\n};\n\n// packages/ag-charts-community/src/chart/chartHighlight.ts\nvar ChartHighlight = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.range = \"tooltip\";\n }\n};\n__decorateClass([Validate(UNION([\"tooltip\", \"node\"], \"a range\"))], ChartHighlight.prototype, \"range\", 2);\n\n// packages/ag-charts-community/src/chart/data/dataDomain.ts\nvar DiscreteDomain = class _DiscreteDomain {\n constructor() {\n this.domain = /* @__PURE__ */new Set();\n }\n static is(value) {\n return value instanceof _DiscreteDomain;\n }\n extend(val) {\n this.domain.add(val);\n }\n getDomain() {\n return Array.from(this.domain);\n }\n};\nvar ContinuousDomain = class _ContinuousDomain {\n constructor() {\n this.domain = [Infinity, -Infinity];\n }\n static is(value) {\n return value instanceof _ContinuousDomain;\n }\n static extendDomain(values, domain = [Infinity, -Infinity]) {\n for (const value of values) {\n if (typeof value !== \"number\") {\n continue;\n }\n if (domain[0] > value) {\n domain[0] = value;\n }\n if (domain[1] < value) {\n domain[1] = value;\n }\n }\n return domain;\n }\n extend(value) {\n if (this.domain[0] > value) {\n this.domain[0] = value;\n }\n if (this.domain[1] < value) {\n this.domain[1] = value;\n }\n }\n getDomain() {\n return [...this.domain];\n }\n};\n\n// packages/ag-charts-community/src/chart/data/dataModel.ts\nfunction toKeyString(keys) {\n return keys.map(key => isObject(key) ? JSON.stringify(key) : key).join(\"-\");\n}\nfunction round2(val) {\n const accuracy = 1e4;\n if (Number.isInteger(val)) {\n return val;\n } else if (Math.abs(val) > accuracy) {\n return Math.trunc(val);\n }\n return Math.round(val * accuracy) / accuracy;\n}\nfunction fixNumericExtentInternal(extent2) {\n if (extent2 == null) {\n return [];\n }\n let [min, max] = extent2.map(Number);\n if (min === 0 && max === 0) {\n return [0, 1];\n }\n if (min === Infinity && max === -Infinity) {\n return [];\n } else if (min === Infinity) {\n min = 0;\n } else if (max === -Infinity) {\n max = 0;\n }\n return isFiniteNumber(min) && isFiniteNumber(max) ? [min, max] : [];\n}\nfunction fixNumericExtent(extent2, axis) {\n var _a;\n const fixedExtent = fixNumericExtentInternal(extent2);\n if (fixedExtent.length === 0) {\n return fixedExtent;\n }\n let [min, max] = fixedExtent;\n if (min === max) {\n const [paddingMin, paddingMax] = (_a = axis == null ? void 0 : axis.calculatePadding(min, max)) != null ? _a : [1, 1];\n min -= paddingMin;\n max += paddingMax;\n }\n return [min, max];\n}\nfunction getMissCount(scopeProvider, missMap) {\n var _a;\n return (_a = missMap == null ? void 0 : missMap.get(scopeProvider.id)) != null ? _a : 0;\n}\nvar INVALID_VALUE = Symbol(\"invalid\");\nvar DataModel = class {\n constructor(opts, mode = \"standalone\") {\n this.opts = opts;\n this.mode = mode;\n this.debug = Debug.create(true, \"data-model\");\n this.scopeCache = /* @__PURE__ */new Map();\n this.keys = [];\n this.values = [];\n this.aggregates = [];\n this.groupProcessors = [];\n this.propertyProcessors = [];\n this.reducers = [];\n this.processors = [];\n let keys = true;\n for (const next of opts.props) {\n if (next.type === \"key\" && !keys) {\n throw new Error(\"AG Charts - internal config error: keys must come before values.\");\n }\n if (next.type === \"value\" && keys) {\n keys = false;\n }\n }\n const verifyMatchGroupId = ({\n matchGroupIds = []\n }) => {\n for (const matchGroupId of matchGroupIds) {\n if (this.values.every(def => def.groupId !== matchGroupId)) {\n throw new Error(`AG Charts - internal config error: matchGroupIds properties must match defined groups (${matchGroupId}).`);\n }\n }\n };\n for (const def of opts.props) {\n switch (def.type) {\n case \"key\":\n this.keys.push(__spreadProps(__spreadValues({}, def), {\n index: this.keys.length,\n missing: /* @__PURE__ */new Map()\n }));\n break;\n case \"value\":\n if (def.property == null) {\n throw new Error(`AG Charts - internal config error: no properties specified for value definitions: ${JSON.stringify(def)}`);\n }\n this.values.push(__spreadProps(__spreadValues({}, def), {\n index: this.values.length,\n missing: /* @__PURE__ */new Map()\n }));\n break;\n case \"aggregate\":\n verifyMatchGroupId(def);\n this.aggregates.push(__spreadProps(__spreadValues({}, def), {\n index: this.aggregates.length\n }));\n break;\n case \"group-value-processor\":\n verifyMatchGroupId(def);\n this.groupProcessors.push(__spreadProps(__spreadValues({}, def), {\n index: this.groupProcessors.length\n }));\n break;\n case \"property-value-processor\":\n this.propertyProcessors.push(__spreadProps(__spreadValues({}, def), {\n index: this.propertyProcessors.length\n }));\n break;\n case \"reducer\":\n this.reducers.push(__spreadProps(__spreadValues({}, def), {\n index: this.reducers.length\n }));\n break;\n case \"processor\":\n this.processors.push(__spreadProps(__spreadValues({}, def), {\n index: this.processors.length\n }));\n break;\n }\n }\n }\n resolveProcessedDataDefById(scope, searchId) {\n var _a;\n const def = (_a = this.scopeCache.get(scope.id)) == null ? void 0 : _a.get(searchId);\n if (!def) {\n throw new Error(`AG Charts - didn't find property definition for [${searchId}, ${scope.id}]`);\n }\n return {\n index: def.index,\n def\n };\n }\n resolveProcessedDataIndexById(scope, searchId) {\n return this.resolveProcessedDataDefById(scope, searchId).index;\n }\n resolveProcessedDataDefsByIds(scope, searchIds) {\n return searchIds.map(searchId => [searchId, this.resolveProcessedDataDefById(scope, searchId)]);\n }\n resolveProcessedDataDefsValues(defs, {\n keys,\n values\n }) {\n const result = {};\n for (const [searchId, {\n index,\n def\n }] of defs) {\n const processedData = def.type === \"key\" ? keys : values;\n result[searchId] = processedData[index];\n }\n return result;\n }\n getDomain(scope, searchId, type = \"value\", processedData) {\n var _a;\n const domains = this.getDomainsByType(type, processedData);\n return (_a = domains == null ? void 0 : domains[this.resolveProcessedDataIndexById(scope, searchId)]) != null ? _a : [];\n }\n getDomainsByType(type, processedData) {\n switch (type) {\n case \"key\":\n return processedData.domain.keys;\n case \"value\":\n return processedData.domain.values;\n case \"aggregate\":\n return processedData.domain.aggValues;\n case \"group-value-processor\":\n return processedData.domain.groups;\n default:\n return null;\n }\n }\n processData(data, sources) {\n var _a;\n const {\n opts: {\n groupByKeys,\n groupByFn\n },\n aggregates,\n groupProcessors,\n reducers,\n processors,\n propertyProcessors\n } = this;\n const start = performance.now();\n if (groupByKeys && this.keys.length === 0) {\n return;\n }\n let processedData = this.extractData(data, sources);\n if (groupByKeys) {\n processedData = this.groupData(processedData);\n } else if (groupByFn) {\n processedData = this.groupData(processedData, groupByFn(processedData));\n }\n if (groupProcessors.length > 0) {\n this.postProcessGroups(processedData);\n }\n if (aggregates.length > 0) {\n this.aggregateData(processedData);\n }\n if (propertyProcessors.length > 0) {\n this.postProcessProperties(processedData);\n }\n if (reducers.length > 0) {\n this.reduceData(processedData);\n }\n if (processors.length > 0) {\n this.postProcessData(processedData);\n }\n if (data.length > 0) {\n for (const def of iterate(this.keys, this.values)) {\n for (const [scope, missCount] of def.missing) {\n if (missCount >= data.length) {\n const scopeHint = scope == null ? \"\" : ` for ${scope}`;\n Logger.warnOnce(`the key '${def.property}' was not found in any data element${scopeHint}.`);\n }\n }\n }\n }\n const end = performance.now();\n processedData.time = end - start;\n if (this.debug.check()) {\n logProcessedData(processedData);\n }\n this.scopeCache.clear();\n for (const def of iterate(this.keys, this.values, this.aggregates)) {\n if (!def.idsMap) continue;\n for (const [scope, ids] of def.idsMap) {\n for (const id of ids) {\n if (!this.scopeCache.has(scope)) {\n this.scopeCache.set(scope, /* @__PURE__ */new Map([[id, def]]));\n } else if ((_a = this.scopeCache.get(scope)) == null ? void 0 : _a.has(id)) {\n throw new Error(\"duplicate definition ids on the same scope are not allowed.\");\n } else {\n this.scopeCache.get(scope).set(id, def);\n }\n }\n }\n }\n return processedData;\n }\n valueGroupIdxLookup({\n matchGroupIds\n }) {\n const result = [];\n for (const [index, def] of this.values.entries()) {\n if (!matchGroupIds || def.groupId && matchGroupIds.includes(def.groupId)) {\n result.push(index);\n }\n }\n return result;\n }\n valueIdxLookup(scopes, prop) {\n const noScopesToMatch = scopes == null || scopes.length === 0;\n const propId = typeof prop === \"string\" ? prop : prop.id;\n const hasMatchingScopeId = def => {\n if (def.idsMap) {\n for (const [scope, ids] of def.idsMap) {\n if ((scopes == null ? void 0 : scopes.includes(scope)) && ids.has(propId)) {\n return true;\n }\n }\n }\n return false;\n };\n const result = this.values.findIndex(def => {\n const validDefScopes = def.scopes == null || noScopesToMatch && !def.scopes.length || def.scopes.some(s => scopes == null ? void 0 : scopes.includes(s));\n return validDefScopes && (def.property === propId || def.id === propId || hasMatchingScopeId(def));\n });\n if (result === -1) {\n throw new Error(`AG Charts - configuration error, unknown property ${JSON.stringify(prop)} in scope(s) ${JSON.stringify(scopes)}`);\n }\n return result;\n }\n extractData(data, sources) {\n var _a, _b, _c, _d;\n const {\n dataDomain,\n processValue,\n scopes,\n allScopesHaveSameDefs\n } = this.initDataDomainProcessor();\n const sourcesById = new Map(sources == null ? void 0 : sources.map(s => [s.id, s]));\n const {\n keys: keyDefs,\n values: valueDefs\n } = this;\n const resultData = new Array(data.length);\n let resultDataIdx = 0;\n let partialValidDataCount = 0;\n for (const [datumIdx, datum] of data.entries()) {\n const sourceDatums = {};\n const validScopes = scopes.size > 0 ? new Set(scopes) : void 0;\n const keys = new Array(keyDefs.length);\n let keyIdx = 0;\n let key;\n for (const def of keyDefs) {\n key = processValue(def, datum, key);\n if (key === INVALID_VALUE) break;\n if (keys) {\n keys[keyIdx++] = key;\n }\n }\n if (key === INVALID_VALUE) continue;\n const values = valueDefs.length > 0 ? new Array(valueDefs.length) : void 0;\n let value;\n for (const [valueDefIdx, def] of valueDefs.entries()) {\n for (const scope of (_a = def.scopes) != null ? _a : scopes) {\n const source = sourcesById.get(scope);\n const valueDatum = (_b = source == null ? void 0 : source.data[datumIdx]) != null ? _b : datum;\n value = processValue(def, valueDatum, value, scope);\n if (value === INVALID_VALUE || !values) continue;\n if (source != null && def.includeProperty !== false) {\n const property = def.includeProperty && def.id != null ? def.id : def.property;\n (_c = sourceDatums[scope]) != null ? _c : sourceDatums[scope] = {};\n sourceDatums[scope][property] = value;\n }\n values[valueDefIdx] = value;\n }\n if (value === INVALID_VALUE) {\n if (allScopesHaveSameDefs) break;\n for (const scope of (_d = def.scopes) != null ? _d : scopes) {\n validScopes == null ? void 0 : validScopes.delete(scope);\n }\n if ((validScopes == null ? void 0 : validScopes.size) === 0) break;\n }\n }\n if (value === INVALID_VALUE && allScopesHaveSameDefs) continue;\n if ((validScopes == null ? void 0 : validScopes.size) === 0) continue;\n const result = {\n datum: __spreadValues(__spreadValues({}, datum), sourceDatums),\n keys,\n values\n };\n if (!allScopesHaveSameDefs && validScopes && validScopes.size < scopes.size) {\n partialValidDataCount++;\n result.validScopes = new Set(validScopes);\n }\n resultData[resultDataIdx++] = result;\n }\n resultData.length = resultDataIdx;\n const propertyDomain = def => {\n const defDomain = dataDomain.get(def);\n const result = defDomain.getDomain();\n if (ContinuousDomain.is(defDomain) && result[0] > result[1]) {\n return [];\n }\n return result;\n };\n return {\n type: \"ungrouped\",\n input: {\n count: data.length\n },\n data: resultData,\n domain: {\n keys: keyDefs.map(propertyDomain),\n values: valueDefs.map(propertyDomain)\n },\n defs: {\n allScopesHaveSameDefs,\n keys: keyDefs,\n values: valueDefs\n },\n partialValidDataCount,\n time: 0\n };\n }\n groupData(data, groupingFn) {\n var _a;\n const processedData = /* @__PURE__ */new Map();\n for (const dataEntry of data.data) {\n const {\n keys,\n values,\n datum,\n validScopes\n } = dataEntry;\n const group2 = (_a = groupingFn == null ? void 0 : groupingFn(dataEntry)) != null ? _a : keys;\n const groupStr = toKeyString(group2);\n if (processedData.has(groupStr)) {\n const existingData = processedData.get(groupStr);\n existingData.values.push(values);\n existingData.datum.push(datum);\n if (validScopes != null && existingData.validScopes != null) {\n for (const scope of existingData.validScopes) {\n if (!validScopes.has(scope)) {\n existingData.validScopes.delete(scope);\n }\n }\n }\n } else {\n processedData.set(groupStr, {\n keys: group2,\n values: [values],\n datum: [datum],\n validScopes\n });\n }\n }\n const resultData = new Array(processedData.size);\n const resultGroups = new Array(processedData.size);\n let dataIndex = 0;\n for (const {\n keys,\n values,\n datum,\n validScopes\n } of processedData.values()) {\n if ((validScopes == null ? void 0 : validScopes.size) === 0) continue;\n resultGroups[dataIndex] = keys;\n resultData[dataIndex++] = {\n keys,\n values,\n datum,\n validScopes\n };\n }\n return __spreadProps(__spreadValues({}, data), {\n type: \"grouped\",\n data: resultData,\n domain: __spreadProps(__spreadValues({}, data.domain), {\n groups: resultGroups\n })\n });\n }\n aggregateData(processedData) {\n var _a, _b, _c, _d, _e, _f, _g;\n const isUngrouped = processedData.type === \"ungrouped\";\n processedData.domain.aggValues = [];\n for (const [index, def] of this.aggregates.entries()) {\n const indices = this.valueGroupIdxLookup(def);\n const domain = [Infinity, -Infinity];\n for (const datum of processedData.data) {\n (_a = datum.aggValues) != null ? _a : datum.aggValues = new Array(this.aggregates.length);\n if (datum.validScopes) continue;\n const values = isUngrouped ? [datum.values] : datum.values;\n let groupAggValues = (_c = (_b = def.groupAggregateFunction) == null ? void 0 : _b.call(def)) != null ? _c : [Infinity, -Infinity];\n for (const distinctValues of values) {\n const valuesToAgg = indices.map(valueIdx => distinctValues[valueIdx]);\n const valuesAgg = def.aggregateFunction(valuesToAgg, datum.keys);\n if (valuesAgg) {\n groupAggValues = (_e = (_d = def.groupAggregateFunction) == null ? void 0 : _d.call(def, valuesAgg, groupAggValues)) != null ? _e : ContinuousDomain.extendDomain(valuesAgg, groupAggValues);\n }\n }\n const finalValues = ((_g = (_f = def.finalFunction) == null ? void 0 : _f.call(def, groupAggValues)) != null ? _g : groupAggValues).map(v => round2(v));\n datum.aggValues[index] = finalValues;\n ContinuousDomain.extendDomain(finalValues, domain);\n }\n processedData.domain.aggValues.push(domain);\n }\n }\n postProcessGroups(processedData) {\n var _a, _b;\n const {\n groupProcessors\n } = this;\n const affectedIndices = /* @__PURE__ */new Set();\n const updatedDomains = /* @__PURE__ */new Map();\n const groupProcessorIndices = /* @__PURE__ */new Map();\n const groupProcessorInitFns = /* @__PURE__ */new Map();\n for (const processor of groupProcessors) {\n const indices = this.valueGroupIdxLookup(processor);\n groupProcessorIndices.set(processor, indices);\n groupProcessorInitFns.set(processor, processor.adjust());\n for (const idx of indices) {\n const valueDef = this.values[idx];\n const isDiscrete = valueDef.valueType === \"category\";\n affectedIndices.add(idx);\n updatedDomains.set(idx, isDiscrete ? new DiscreteDomain() : new ContinuousDomain());\n }\n }\n const updateDomains = values => {\n var _a2;\n for (const valueIndex of affectedIndices) {\n (_a2 = updatedDomains.get(valueIndex)) == null ? void 0 : _a2.extend(values[valueIndex]);\n }\n };\n for (const group2 of processedData.data) {\n for (const processor of groupProcessors) {\n if (group2.validScopes) continue;\n const valueIndexes = (_a = groupProcessorIndices.get(processor)) != null ? _a : [];\n const adjustFn = (_b = groupProcessorInitFns.get(processor)) == null ? void 0 : _b();\n if (!adjustFn) continue;\n if (processedData.type === \"grouped\") {\n for (const values of group2.values) {\n if (values) {\n adjustFn(values, valueIndexes);\n }\n }\n } else if (group2.values) {\n adjustFn(group2.values, valueIndexes);\n }\n }\n if (processedData.type === \"grouped\") {\n for (const values of group2.values) {\n updateDomains(values);\n }\n } else {\n updateDomains(group2.values);\n }\n }\n for (const [idx, dataDomain] of updatedDomains) {\n processedData.domain.values[idx] = dataDomain.getDomain();\n }\n }\n postProcessProperties(processedData) {\n for (const {\n adjust,\n property,\n scopes\n } of this.propertyProcessors) {\n adjust()(processedData, this.valueIdxLookup(scopes, property));\n }\n }\n reduceData(processedData) {\n var _a, _b;\n (_a = processedData.reduced) != null ? _a : processedData.reduced = {};\n for (const def of this.reducers) {\n const reducer = def.reducer();\n let accValue = def.initialValue;\n for (const datum of processedData.data) {\n if (!datum.validScopes || ((_b = def.scopes) == null ? void 0 : _b.some(s => {\n var _a2;\n return (_a2 = datum.validScopes) == null ? void 0 : _a2.has(s);\n }))) {\n accValue = reducer(accValue, datum);\n }\n }\n processedData.reduced[def.property] = accValue;\n }\n }\n postProcessData(processedData) {\n var _a;\n (_a = processedData.reduced) != null ? _a : processedData.reduced = {};\n for (const def of this.processors) {\n processedData.reduced[def.property] = def.calculate(processedData);\n }\n }\n initDataDomainProcessor() {\n const {\n keys: keyDefs,\n values: valueDefs\n } = this;\n const scopes = /* @__PURE__ */new Set();\n for (const valueDef of valueDefs) {\n if (!valueDef.scopes) continue;\n for (const scope of valueDef.scopes) {\n scopes.add(scope);\n }\n }\n const dataDomain = /* @__PURE__ */new Map();\n const processorFns = /* @__PURE__ */new Map();\n let allScopesHaveSameDefs = true;\n const initDataDomain = () => {\n var _a;\n for (const def of iterate(keyDefs, valueDefs)) {\n if (def.valueType === \"category\") {\n dataDomain.set(def, new DiscreteDomain());\n } else {\n dataDomain.set(def, new ContinuousDomain());\n allScopesHaveSameDefs && (allScopesHaveSameDefs = ((_a = def.scopes) != null ? _a : []).length === scopes.size);\n }\n }\n };\n initDataDomain();\n const accessors = this.buildAccessors(iterate(keyDefs, valueDefs));\n const processValue = (def, datum, previousDatum, scope) => {\n var _a, _b, _c, _d, _e;\n let valueInDatum;\n let value;\n if (accessors.has(def.property)) {\n try {\n value = accessors.get(def.property)(datum);\n } catch (error) {}\n valueInDatum = value != null;\n } else {\n valueInDatum = def.property in datum;\n value = valueInDatum ? datum[def.property] : def.missingValue;\n }\n if (def.forceValue != null) {\n const valueNegative = valueInDatum && isNegative(value);\n value = valueNegative ? -1 * def.forceValue : def.forceValue;\n valueInDatum = true;\n }\n const missingValueDef = \"missingValue\" in def;\n if (!valueInDatum && !missingValueDef) {\n const missCount = (_a = def.missing.get(scope)) != null ? _a : 0;\n def.missing.set(scope, missCount + 1);\n }\n if (!dataDomain.has(def)) {\n initDataDomain();\n }\n if (valueInDatum && !((_c = (_b = def.validation) == null ? void 0 : _b.call(def, value, datum)) != null ? _c : true)) {\n if (\"invalidValue\" in def) {\n value = def.invalidValue;\n } else {\n if (this.mode !== \"integrated\") {\n Logger.warnOnce(`invalid value of type [${typeof value}] ignored:`, `[${value}]`);\n }\n return INVALID_VALUE;\n }\n }\n if (def.processor) {\n if (!processorFns.has(def)) {\n processorFns.set(def, def.processor());\n }\n value = (_d = processorFns.get(def)) == null ? void 0 : _d(value, previousDatum === INVALID_VALUE ? void 0 : previousDatum);\n }\n (_e = dataDomain.get(def)) == null ? void 0 : _e.extend(value);\n return value;\n };\n return {\n dataDomain,\n processValue,\n initDataDomain,\n scopes,\n allScopesHaveSameDefs\n };\n }\n buildAccessors(defs) {\n const result = /* @__PURE__ */new Map();\n if (this.mode === \"integrated\") {\n return result;\n }\n for (const def of defs) {\n const isPath = def.property.includes(\".\") || def.property.includes(\"[\");\n if (!isPath) continue;\n let fnBody;\n if (def.property.startsWith(\"[\")) {\n fnBody = `return datum${def.property};`;\n } else {\n fnBody = `return datum.${def.property};`;\n }\n result.set(def.property, new Function(\"datum\", fnBody));\n }\n return result;\n }\n};\nfunction logProcessedData(processedData) {\n var _a, _b;\n const logValues = (name, data) => {\n if (data.length > 0) {\n Logger.log(`DataModel.processData() - ${name}`);\n Logger.table(data);\n }\n };\n Logger.log(\"DataModel.processData() - processedData\", processedData);\n logValues(\"Key Domains\", processedData.domain.keys);\n logValues(\"Group Domains\", (_a = processedData.domain.groups) != null ? _a : []);\n logValues(\"Value Domains\", processedData.domain.values);\n logValues(\"Aggregate Domains\", (_b = processedData.domain.aggValues) != null ? _b : []);\n if (processedData.type === \"grouped\") {\n const flattenedValues = processedData.data.reduce((acc, next) => {\n var _a2, _b2;\n const keys = (_a2 = next.keys) != null ? _a2 : [];\n const aggValues = (_b2 = next.aggValues) != null ? _b2 : [];\n const skipKeys = next.keys.map(() => void 0);\n const skipAggValues = aggValues == null ? void 0 : aggValues.map(() => void 0);\n acc.push(...next.values.map((v, i) => [...(i === 0 ? keys : skipKeys), ...(v != null ? v : []), ...(i == 0 ? aggValues : skipAggValues)]));\n return acc;\n }, []);\n logValues(\"Values\", flattenedValues);\n } else {\n const flattenedValues = processedData.data.reduce((acc, next) => {\n var _a2;\n const aggValues = (_a2 = next.aggValues) != null ? _a2 : [];\n acc.push([...next.keys, ...next.values, ...aggValues]);\n return acc;\n }, []);\n logValues(\"Values\", flattenedValues);\n }\n}\n\n// packages/ag-charts-community/src/chart/data/dataController.ts\nvar _DataController = class _DataController {\n constructor(mode) {\n this.mode = mode;\n this.debug = Debug.create(true, \"data-model\");\n this.requested = [];\n this.status = \"setup\";\n }\n request(id, data, opts) {\n return __async(this, null, function* () {\n if (this.status !== \"setup\") {\n throw new Error(`AG Charts - data request after data setup phase.`);\n }\n return new Promise((resolve, reject) => {\n this.requested.push({\n id,\n opts,\n data,\n resolve,\n reject\n });\n });\n });\n }\n execute() {\n if (this.status !== \"setup\") {\n throw new Error(`AG Charts - data request after data setup phase.`);\n }\n this.status = \"executed\";\n this.debug(\"DataController.execute() - requested\", this.requested);\n const valid = this.validateRequests(this.requested);\n this.debug(\"DataController.execute() - validated\", valid);\n const merged = this.mergeRequested(valid);\n this.debug(\"DataController.execute() - merged\", merged);\n if (this.debug.check()) {\n getWindow().processedData = [];\n }\n const scopes = this.requested.map(({\n id\n }) => id);\n const needsValueExtraction = this.hasMultipleDataSources(valid);\n for (const {\n opts,\n data,\n resolves,\n rejects,\n ids\n } of merged) {\n try {\n const dataModel = new DataModel(opts, this.mode);\n const processedData = dataModel.processData(data, valid);\n if (this.debug.check()) {\n getWindow(\"processedData\").push(processedData);\n }\n if ((processedData == null ? void 0 : processedData.partialValidDataCount) === 0) {\n resolves.forEach((resolve, requestIdx) => resolve({\n dataModel,\n processedData: this.processScopedData(ids[requestIdx], processedData, scopes, needsValueExtraction)\n }));\n } else if (processedData) {\n this.splitResult(dataModel, processedData, ids, resolves);\n } else {\n rejects.forEach(cb => cb(new Error(`AG Charts - no processed data generated`)));\n }\n } catch (error) {\n rejects.forEach(cb => cb(error));\n }\n }\n }\n hasMultipleDataSources(validRequests) {\n if (validRequests.length) {\n const [{\n data\n }, ...restRequests] = validRequests;\n return restRequests.some(v => data !== v.data);\n }\n return false;\n }\n processScopedData(id, processedData, ids, needsValueExtraction) {\n const extractDatum = datum => {\n if (Array.isArray(datum)) {\n return datum.map(extractDatum);\n }\n const extracted = needsValueExtraction ? __spreadValues(__spreadValues({}, datum), datum[id]) : datum;\n for (const otherId of ids) {\n delete extracted[otherId];\n }\n return extracted;\n };\n const extractValues = values => {\n var _a;\n if (Array.isArray(values)) {\n return values.map(extractValues);\n }\n return (_a = values == null ? void 0 : values[id]) != null ? _a : values;\n };\n return __spreadProps(__spreadValues({}, processedData), {\n data: processedData.data.map(datum => {\n var _a;\n return __spreadProps(__spreadValues({}, datum), {\n datum: extractDatum(datum.datum),\n values: needsValueExtraction ? (_a = datum.values) == null ? void 0 : _a.map(extractValues) : datum.values\n });\n })\n });\n }\n validateRequests(requested) {\n const valid = [];\n for (const [index, request] of requested.entries()) {\n if (index > 0 && request.data.length !== requested[0].data.length && request.opts.groupByData === false) {\n request.reject(new Error(\"all series[].data arrays must be of the same length and have matching keys.\"));\n } else {\n valid.push(request);\n }\n }\n return valid;\n }\n mergeRequested(requested) {\n const grouped = [];\n for (const request of requested) {\n const match = grouped.find(_DataController.groupMatch(request));\n if (match) {\n match.push(request);\n } else {\n grouped.push([request]);\n }\n }\n return grouped.map(_DataController.mergeRequests);\n }\n splitResult(dataModel, processedData, scopes, resolves) {\n for (let i = 0; i < scopes.length; i++) {\n const scope = scopes[i];\n const resolve = resolves[i];\n resolve({\n dataModel,\n processedData: __spreadProps(__spreadValues({}, processedData), {\n data: processedData.data.filter(({\n validScopes\n }) => {\n var _a;\n return (_a = validScopes == null ? void 0 : validScopes.has(scope)) != null ? _a : true;\n })\n })\n });\n }\n }\n static groupMatch({\n data,\n opts\n }) {\n function keys(props) {\n return props.filter(p => p.type === \"key\").map(p => p.property).join(\";\");\n }\n return ([group2]) => (opts.groupByData === false || group2.data === data) && group2.opts.groupByKeys === opts.groupByKeys && group2.opts.groupByFn === opts.groupByFn && keys(group2.opts.props) === keys(opts.props);\n }\n static mergeRequests(requests) {\n return requests.reduce((result, _a) => {\n var {\n id,\n data,\n resolve,\n reject,\n opts: _b\n } = _a,\n _c = _b,\n {\n props\n } = _c,\n opts = __objRest(_c, [\"props\"]);\n var _a2, _b2, _c2, _d, _e;\n result.ids.push(id);\n result.rejects.push(reject);\n result.resolves.push(resolve);\n (_a2 = result.data) != null ? _a2 : result.data = data;\n (_b2 = result.opts) != null ? _b2 : result.opts = __spreadProps(__spreadValues({}, opts), {\n props: []\n });\n for (const prop of props) {\n const clone = __spreadProps(__spreadValues({}, prop), {\n scopes: [id]\n });\n _DataController.createIdsMap(id, clone);\n const match = result.opts.props.find(existing => existing.type === clone.type && _DataController.deepEqual(existing, clone));\n if (!match) {\n result.opts.props.push(clone);\n continue;\n }\n (_c2 = match.scopes) != null ? _c2 : match.scopes = [];\n match.scopes.push(...((_d = clone.scopes) != null ? _d : []));\n if ((match.type === \"key\" || match.type === \"value\") && ((_e = clone.idsMap) == null ? void 0 : _e.size)) {\n _DataController.mergeIdsMap(clone.idsMap, match.idsMap);\n }\n }\n return result;\n }, {\n ids: [],\n rejects: [],\n resolves: [],\n data: null,\n opts: null\n });\n }\n static mergeIdsMap(fromMap, toMap) {\n for (const [scope, ids] of fromMap) {\n if (toMap.has(scope)) {\n for (const id of ids) {\n toMap.get(scope).add(id);\n }\n } else {\n toMap.set(scope, new Set(ids));\n }\n }\n }\n static createIdsMap(scope, prop) {\n var _a;\n if (prop.id == null) return;\n (_a = prop.idsMap) != null ? _a : prop.idsMap = /* @__PURE__ */new Map();\n if (prop.idsMap.has(scope)) {\n prop.idsMap.get(scope).add(prop.id);\n } else {\n prop.idsMap.set(scope, /* @__PURE__ */new Set([prop.id]));\n }\n }\n static deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a && b && typeof a == \"object\" && typeof b == \"object\") {\n if (a.constructor !== b.constructor) {\n return false;\n }\n let i, length;\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) {\n return false;\n }\n for (i = length - 1; i >= 0; i--) {\n if (!_DataController.deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n const keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length - 1; i >= 0; i--) {\n const key = keys[i];\n if (!_DataController.skipKeys.has(key) && (!Object.hasOwn(b, key) || !_DataController.deepEqual(a[key], b[key]))) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n};\n// optimized version of deep equality for `mergeRequests` which can potentially loop over 1M times\n_DataController.skipKeys = /* @__PURE__ */new Set([\"id\", \"idsMap\", \"type\", \"scopes\"]);\nvar DataController = _DataController;\n\n// packages/ag-charts-community/src/chart/interaction/syncManager.ts\nvar _SyncManager = class _SyncManager extends BaseManager {\n constructor(chart) {\n super();\n this.chart = chart;\n }\n subscribe(groupId = _SyncManager.DEFAULT_GROUP) {\n let syncGroup = this.get(groupId);\n if (!syncGroup) {\n syncGroup = /* @__PURE__ */new Set();\n _SyncManager.chartsGroups.set(groupId, syncGroup);\n }\n syncGroup.add(this.chart);\n return this;\n }\n unsubscribe(groupId = _SyncManager.DEFAULT_GROUP) {\n var _a;\n (_a = this.get(groupId)) == null ? void 0 : _a.delete(this.chart);\n return this;\n }\n getChart() {\n return this.chart;\n }\n getGroup(groupId = _SyncManager.DEFAULT_GROUP) {\n const syncGroup = this.get(groupId);\n return syncGroup ? Array.from(syncGroup) : [];\n }\n getGroupSiblings(groupId = _SyncManager.DEFAULT_GROUP) {\n return this.getGroup(groupId).filter(chart => chart !== this.chart);\n }\n get(groupId) {\n return _SyncManager.chartsGroups.get(groupId);\n }\n};\n_SyncManager.chartsGroups = /* @__PURE__ */new Map();\n_SyncManager.DEFAULT_GROUP = Symbol(\"sync-group-default\");\nvar SyncManager = _SyncManager;\n\n// packages/ag-charts-community/src/chart/interaction/zoomManager.ts\nvar ZoomManager = class extends BaseManager {\n constructor() {\n super(...arguments);\n this.axisZoomManagers = /* @__PURE__ */new Map();\n this.state = new StateTracker(void 0, \"initial\");\n this.rejectCallbacks = /* @__PURE__ */new Map();\n }\n updateAxes(axes) {\n var _a;\n const zoomManagers = new Map(axes.map(axis => [axis.id, this.axisZoomManagers.get(axis.id)]));\n this.axisZoomManagers.clear();\n for (const axis of axes) {\n this.axisZoomManagers.set(axis.id, (_a = zoomManagers.get(axis.id)) != null ? _a : new AxisZoomManager(axis));\n }\n if (this.state.size > 0 && axes.length > 0) {\n this.updateZoom(this.state.stateId(), this.state.stateValue());\n }\n }\n updateZoom(callerId, newZoom, canChangeInitial = true, rejectCallback) {\n var _a;\n if (rejectCallback) {\n this.rejectCallbacks.set(callerId, rejectCallback);\n }\n if (this.axisZoomManagers.size === 0) {\n const stateId = this.state.stateId();\n if (stateId === \"initial\" || stateId === callerId || canChangeInitial) {\n this.state.set(callerId, newZoom);\n if (stateId !== callerId) {\n (_a = this.rejectCallbacks.get(stateId)) == null ? void 0 : _a(callerId);\n }\n } else {\n rejectCallback == null ? void 0 : rejectCallback(stateId);\n }\n return;\n }\n this.state.set(callerId, newZoom);\n this.axisZoomManagers.forEach(axis => {\n axis.updateZoom(callerId, newZoom == null ? void 0 : newZoom[axis.getDirection()]);\n });\n this.applyChanges(callerId);\n }\n updateAxisZoom(callerId, axisId, newZoom) {\n var _a;\n (_a = this.axisZoomManagers.get(axisId)) == null ? void 0 : _a.updateZoom(callerId, newZoom);\n this.applyChanges(callerId);\n }\n // Fire this event to signal to listeners that the view is changing through a zoom and/or pan change.\n fireZoomPanStartEvent(callerId) {\n this.listeners.dispatch(\"zoom-pan-start\", {\n type: \"zoom-pan-start\",\n callerId\n });\n }\n getZoom() {\n let x;\n let y;\n this.axisZoomManagers.forEach(axis => {\n if (axis.getDirection() === \"x\" /* X */) {\n x != null ? x : x = axis.getZoom();\n } else if (axis.getDirection() === \"y\" /* Y */) {\n y != null ? y : y = axis.getZoom();\n }\n });\n if (x || y) {\n return {\n x,\n y\n };\n }\n }\n getAxisZoom(axisId) {\n var _a, _b;\n return (_b = (_a = this.axisZoomManagers.get(axisId)) == null ? void 0 : _a.getZoom()) != null ? _b : {\n min: 0,\n max: 1\n };\n }\n getAxisZooms() {\n const axes = {};\n for (const [axisId, axis] of this.axisZoomManagers.entries()) {\n axes[axisId] = {\n direction: axis.getDirection(),\n zoom: axis.getZoom()\n };\n }\n return axes;\n }\n applyChanges(callerId) {\n const changed = Array.from(this.axisZoomManagers.values(), axis => axis.applyChanges()).some(Boolean);\n if (!changed) {\n return;\n }\n const axes = {};\n for (const [axisId, axis] of this.axisZoomManagers.entries()) {\n axes[axisId] = axis.getZoom();\n }\n this.listeners.dispatch(\"zoom-change\", __spreadProps(__spreadValues({\n type: \"zoom-change\"\n }, this.getZoom()), {\n axes,\n callerId\n }));\n }\n};\nvar AxisZoomManager = class {\n constructor(axis) {\n this.axis = axis;\n const [min = 0, max = 1] = axis.visibleRange;\n this.state = new StateTracker({\n min,\n max\n });\n this.currentZoom = this.state.stateValue();\n }\n getDirection() {\n return this.axis.direction;\n }\n updateZoom(callerId, newZoom) {\n this.state.set(callerId, newZoom);\n }\n getZoom() {\n return deepClone(this.state.stateValue());\n }\n applyChanges() {\n const prevZoom = this.currentZoom;\n this.currentZoom = this.state.stateValue();\n return prevZoom.min !== this.currentZoom.min || prevZoom.max !== this.currentZoom.max;\n }\n};\n\n// packages/ag-charts-community/src/chart/keyboard.ts\nvar Keyboard = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = false;\n }\n};\n__decorateClass([Validate(BOOLEAN)], Keyboard.prototype, \"enabled\", 2);\n__decorateClass([Validate(NUMBER)], Keyboard.prototype, \"tabIndex\", 2);\n\n// packages/ag-charts-community/src/chart/keyboardUtil.ts\nfunction makeKeyboardPointerEvent(regionManager, pick) {\n const {\n bbox,\n showFocusBox\n } = pick;\n if (showFocusBox) {\n regionManager.updateFocusIndicatorRect(pick.bbox);\n }\n if (bbox !== void 0) {\n const {\n x: offsetX,\n y: offsetY\n } = bbox.computeCenter();\n return {\n type: \"keyboard\",\n offsetX,\n offsetY\n };\n }\n return void 0;\n}\n\n// packages/ag-charts-community/src/chart/mapping/prepareAxis.ts\nvar CARTESIAN_AXIS_POSITIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar CARTESIAN_AXIS_TYPES = [\"category\", \"grouped-category\", \"ordinal-time\", \"number\", \"log\", \"time\"];\nfunction hasCartesianAxisPosition(axis) {\n const allowedTypes = CARTESIAN_AXIS_TYPES;\n return allowedTypes.includes(axis.type);\n}\nfunction isCartesianAxisOptions(options) {\n const allowedTypes = CARTESIAN_AXIS_TYPES;\n return allowedTypes.includes(options.type);\n}\nfunction isAxisPosition(position) {\n const allowedPositions = CARTESIAN_AXIS_POSITIONS;\n return typeof position === \"string\" && allowedPositions.includes(position);\n}\nvar AxisPositionGuesser = class {\n constructor() {\n this.result = [];\n this.valid = [];\n this.invalid = [];\n }\n push(axis, options) {\n const {\n result,\n valid,\n invalid\n } = this;\n if (isCartesianAxisOptions(options)) {\n if (isAxisPosition(options.position)) {\n valid.push(axis);\n } else {\n invalid.push(axis);\n }\n }\n result.push(axis);\n }\n guessInvalidPositions() {\n const takenPosition = this.valid.filter(v => hasCartesianAxisPosition(v)).map(v => v.position).filter(v => v !== void 0);\n const guesses = [\"top\", \"right\", \"bottom\", \"left\"];\n for (const invalidAxis of this.invalid) {\n let nextGuess = guesses.pop();\n while (takenPosition.includes(nextGuess) && nextGuess !== void 0) {\n nextGuess = guesses.pop();\n }\n if (nextGuess === void 0) break;\n invalidAxis.position = nextGuess;\n }\n return this.result;\n }\n};\n\n// packages/ag-charts-community/src/chart/mapping/prepareSeries.ts\nvar MATCHING_KEYS = [\"direction\", \"xKey\", \"yKey\", \"sizeKey\", \"angleKey\", \"radiusKey\", \"normalizedTo\", \"stacked\", \"grouped\", \"stackGroup\"];\nfunction matchSeriesOptions(series, optSeries, oldOptsSeries) {\n var _a, _b, _c, _d;\n const generateKey = (type, i) => {\n const result = [type];\n for (const key of MATCHING_KEYS) {\n if (key in i && i[key] != null) result.push(`${key}=${i[key]}`);\n }\n return result.join(\";\");\n };\n const seriesMap = /* @__PURE__ */new Map();\n let idx = 0;\n for (const s of series) {\n const key = generateKey(s.type, s.properties);\n if (!seriesMap.has(key)) {\n seriesMap.set(key, []);\n }\n (_a = seriesMap.get(key)) == null ? void 0 : _a.push([s, idx++]);\n }\n const optsMap = /* @__PURE__ */new Map();\n for (const o of optSeries) {\n const key = generateKey(o.type, o);\n if (!optsMap.has(key)) {\n optsMap.set(key, []);\n }\n (_b = optsMap.get(key)) == null ? void 0 : _b.push(o);\n }\n const overlap = [...seriesMap.keys()].some(k => optsMap.has(k));\n if (!overlap) {\n return {\n status: \"no-overlap\",\n oldKeys: seriesMap.keys(),\n newKeys: optsMap.keys()\n };\n }\n const changes = [];\n let targetIdx = -1;\n for (const [key, optArray] of optsMap.entries()) {\n for (const opts of optArray) {\n targetIdx++;\n const seriesArray = seriesMap.get(key);\n if (seriesArray == null || seriesArray.length < 1) {\n changes.push({\n opts,\n idx: targetIdx,\n status: \"add\"\n });\n seriesMap.delete(key);\n continue;\n }\n const [outputSeries, outputIdx] = seriesArray.shift();\n const previousOpts = (_c = oldOptsSeries == null ? void 0 : oldOptsSeries[outputIdx]) != null ? _c : {};\n const diff2 = jsonDiff(previousOpts, opts != null ? opts : {});\n const {\n groupIndex,\n stackIndex\n } = (_d = diff2 == null ? void 0 : diff2.seriesGrouping) != null ? _d : {};\n if (groupIndex != null || stackIndex != null) {\n changes.push({\n opts,\n series: outputSeries,\n diff: diff2,\n idx: outputIdx,\n status: \"series-grouping\"\n });\n } else if (diff2) {\n changes.push({\n opts,\n series: outputSeries,\n diff: diff2,\n idx: outputIdx,\n status: \"update\"\n });\n } else {\n changes.push({\n opts,\n series: outputSeries,\n idx: outputIdx,\n status: \"no-op\"\n });\n }\n if (seriesArray.length === 0) {\n seriesMap.delete(key);\n }\n }\n }\n for (const seriesArray of seriesMap.values()) {\n for (const [outputSeries, outputIdx] of seriesArray) {\n changes.push({\n series: outputSeries,\n idx: outputIdx,\n status: \"remove\"\n });\n }\n }\n return {\n status: \"overlap\",\n changes\n };\n}\n\n// packages/ag-charts-community/src/chart/modulesManager.ts\nvar ModulesManager = class extends ModuleMap {\n applyOptions(options) {\n for (const m of this.moduleMap.values()) {\n if (m.module.optionsKey in options && isProperties(m.moduleInstance)) {\n m.moduleInstance.set(options[m.module.optionsKey]);\n }\n }\n }\n *legends() {\n for (const {\n module,\n moduleInstance\n } of this.moduleMap.values()) {\n if (module.type !== \"legend\") continue;\n yield {\n legendType: module.identifier,\n legend: moduleInstance\n };\n }\n }\n};\n\n// packages/ag-charts-community/src/chart/overlay/overlay.ts\nvar DEFAULT_OVERLAY_CLASS = \"ag-chart-overlay\";\nvar DEFAULT_OVERLAY_DARK_CLASS = \"ag-chart-dark-overlay\";\nvar Overlay = class extends BaseProperties {\n constructor(className, defaultText) {\n super();\n this.className = className;\n this.defaultText = defaultText;\n this.darkTheme = false;\n }\n getText() {\n var _a;\n return (_a = this.text) != null ? _a : this.defaultText;\n }\n getElement(animationManager, rect) {\n var _a;\n (_a = this.element) != null ? _a : this.element = createElement(\"div\", DEFAULT_OVERLAY_CLASS, {\n position: \"absolute\"\n });\n this.element.classList.toggle(DEFAULT_OVERLAY_DARK_CLASS, this.darkTheme);\n this.focusBox = rect;\n const element2 = this.element;\n element2.style.left = `${rect.x}px`;\n element2.style.top = `${rect.y}px`;\n element2.style.width = `${rect.width}px`;\n element2.style.height = `${rect.height}px`;\n if (this.renderer) {\n const htmlContent = this.renderer();\n if (htmlContent instanceof HTMLElement) {\n element2.replaceChildren(htmlContent);\n } else {\n element2.innerHTML = htmlContent;\n }\n } else {\n const content = createElement(\"div\", {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSizing: \"border-box\",\n height: \"100%\",\n margin: \"8px\",\n font: \"12px Verdana, sans-serif\"\n });\n content.innerText = this.getText();\n element2.replaceChildren(content);\n animationManager == null ? void 0 : animationManager.animate({\n from: 0,\n to: 1,\n id: \"overlay\",\n phase: \"add\",\n groupId: \"opacity\",\n onUpdate(value) {\n element2.style.opacity = String(value);\n },\n onStop() {\n element2.style.opacity = \"1\";\n }\n });\n }\n return this.element;\n }\n removeElement(animationManager) {\n if (!this.element) return;\n if (animationManager) {\n const {\n element: element2\n } = this;\n animationManager.animate({\n from: 1,\n to: 0,\n phase: \"remove\",\n id: \"overlay\",\n groupId: \"opacity\",\n onUpdate(value) {\n element2.style.opacity = String(value);\n },\n onStop() {\n element2.remove();\n }\n });\n } else {\n this.element.remove();\n }\n this.element = void 0;\n this.focusBox = void 0;\n }\n};\n__decorateClass([Validate(STRING, {\n optional: true\n})], Overlay.prototype, \"text\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], Overlay.prototype, \"renderer\", 2);\n__decorateClass([Validate(BOOLEAN)], Overlay.prototype, \"darkTheme\", 2);\n\n// packages/ag-charts-community/src/chart/overlay/chartOverlays.ts\nvar ChartOverlays = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.loading = new Overlay(\"ag-chart-loading-overlay\", \"Loading data...\");\n this.noData = new Overlay(\"ag-chart-no-data-overlay\", \"No data to display\");\n this.noVisibleSeries = new Overlay(\"ag-chart-no-visible-series\", \"No visible series\");\n }\n getFocusInfo() {\n for (const overlay of [this.loading, this.noData, this.noVisibleSeries]) {\n if (overlay.focusBox !== void 0) {\n return {\n text: overlay.getText(),\n rect: overlay.focusBox\n };\n }\n }\n return void 0;\n }\n destroy() {\n this.loading.removeElement();\n this.noData.removeElement();\n this.noVisibleSeries.removeElement();\n }\n};\n__decorateClass([Validate(OBJECT)], ChartOverlays.prototype, \"loading\", 2);\n__decorateClass([Validate(OBJECT)], ChartOverlays.prototype, \"noData\", 2);\n__decorateClass([Validate(OBJECT)], ChartOverlays.prototype, \"noVisibleSeries\", 2);\n\n// packages/ag-charts-community/src/chart/overlay/loadingSpinner.ts\nvar defaultOverlayCss = `\n.${DEFAULT_OVERLAY_CLASS} {\n color: #181d1f;\n}\n\n.${DEFAULT_OVERLAY_CLASS}.${DEFAULT_OVERLAY_DARK_CLASS} {\n color: #ffffff;\n}\n\n.${DEFAULT_OVERLAY_CLASS}--loading {\n color: rgb(140, 140, 140); /* DEFAULT_MUTED_LABEL_COLOUR */\n}\n\n.${DEFAULT_OVERLAY_CLASS}__loading-background {\n background: white; /* DEFAULT_BACKGROUND_FILL */\n}\n\n.${DEFAULT_OVERLAY_CLASS}.${DEFAULT_OVERLAY_DARK_CLASS} .${DEFAULT_OVERLAY_CLASS}__loading-background {\n background: #192232; /* DEFAULT_DARK_BACKGROUND_FILL */\n}\n`;\nfunction getLoadingSpinner(text, defaultDuration) {\n const {\n animationDuration\n } = PHASE_METADATA[\"add\"];\n const duration = animationDuration * defaultDuration;\n const container = createElement(\"div\", `${DEFAULT_OVERLAY_CLASS}--loading`, {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"column\",\n height: \"100%\",\n boxSizing: \"border-box\",\n font: \"13px Verdana, sans-serif\",\n // FONT_SIZE.MEDIUM\n userSelect: \"none\",\n animation: `ag-charts-loading ${duration}ms linear 50ms both`\n });\n const matrix = createElement(\"span\", {\n width: \"45px\",\n height: \"40px\",\n backgroundImage: [\"linear-gradient(#0000 calc(1 * 100% / 6), #ccc 0 calc(3 * 100% / 6), #0000 0), \", \"linear-gradient(#0000 calc(2 * 100% / 6), #ccc 0 calc(4 * 100% / 6), #0000 0), \", \"linear-gradient(#0000 calc(3 * 100% / 6), #ccc 0 calc(5 * 100% / 6), #0000 0)\"].join(\"\"),\n backgroundSize: \"10px 400%\",\n backgroundRepeat: \"no-repeat\",\n animation: \"ag-charts-loading-matrix 1s infinite linear\"\n });\n const label = createElement(\"p\", {\n marginTop: \"1em\"\n });\n label.innerText = text;\n const background = createElement(\"div\", `${DEFAULT_OVERLAY_CLASS}__loading-background`, {\n position: \"absolute\",\n inset: \"0\",\n opacity: \"0.5\",\n zIndex: \"-1\"\n });\n const animationStyles = createElement(\"style\");\n animationStyles.innerText = [\"@keyframes ag-charts-loading { from { opacity: 0 } to { opacity: 1 } }\", \"@keyframes ag-charts-loading-matrix {\", \"0% { background-position: 0% 0%, 50% 0%, 100% 0%; }\", \"100% { background-position: 0% 100%, 50% 100%, 100% 100%; }\", \"}\"].join(\" \");\n container.replaceChildren(animationStyles, matrix, label, background);\n injectStyle(defaultOverlayCss, \"chartOverlays\");\n return container;\n}\n\n// packages/ag-charts-community/src/chart/data/aggregateFunctions.ts\nfunction sumValues(values, accumulator = [0, 0]) {\n for (const value of values) {\n if (typeof value !== \"number\") {\n continue;\n }\n if (value < 0) {\n accumulator[0] += value;\n }\n if (value > 0) {\n accumulator[1] += value;\n }\n }\n return accumulator;\n}\nfunction sum(id, matchGroupId) {\n const result = {\n id,\n matchGroupIds: [matchGroupId],\n type: \"aggregate\",\n aggregateFunction: values => sumValues(values)\n };\n return result;\n}\nfunction groupSum(id, matchGroupId) {\n return {\n id,\n type: \"aggregate\",\n matchGroupIds: matchGroupId ? [matchGroupId] : void 0,\n aggregateFunction: values => sumValues(values),\n groupAggregateFunction: (next, acc = [0, 0]) => {\n var _a, _b;\n acc[0] += (_a = next == null ? void 0 : next[0]) != null ? _a : 0;\n acc[1] += (_b = next == null ? void 0 : next[1]) != null ? _b : 0;\n return acc;\n }\n };\n}\nfunction range2(id, matchGroupId) {\n const result = {\n id,\n matchGroupIds: [matchGroupId],\n type: \"aggregate\",\n aggregateFunction: values => ContinuousDomain.extendDomain(values)\n };\n return result;\n}\nfunction groupCount(id) {\n return {\n id,\n type: \"aggregate\",\n aggregateFunction: () => [0, 1],\n groupAggregateFunction: (next, acc = [0, 0]) => {\n var _a, _b;\n acc[0] += (_a = next == null ? void 0 : next[0]) != null ? _a : 0;\n acc[1] += (_b = next == null ? void 0 : next[1]) != null ? _b : 0;\n return acc;\n }\n };\n}\nfunction groupAverage(id, matchGroupId) {\n const def = {\n id,\n matchGroupIds: matchGroupId ? [matchGroupId] : void 0,\n type: \"aggregate\",\n aggregateFunction: values => sumValues(values),\n groupAggregateFunction: (next, acc = [0, 0, -1]) => {\n var _a, _b;\n acc[0] += (_a = next == null ? void 0 : next[0]) != null ? _a : 0;\n acc[1] += (_b = next == null ? void 0 : next[1]) != null ? _b : 0;\n acc[2]++;\n return acc;\n },\n finalFunction: (acc = [0, 0, 0]) => {\n const result = acc[0] + acc[1];\n if (result >= 0) {\n return [0, result / acc[2]];\n }\n return [result / acc[2], 0];\n }\n };\n return def;\n}\nfunction area(id, aggFn, matchGroupId) {\n const result = {\n id,\n matchGroupIds: matchGroupId ? [matchGroupId] : void 0,\n type: \"aggregate\",\n aggregateFunction: (values, keyRange = []) => {\n const keyWidth = keyRange[1] - keyRange[0];\n return aggFn.aggregateFunction(values).map(v => v / keyWidth);\n }\n };\n if (aggFn.groupAggregateFunction) {\n result.groupAggregateFunction = aggFn.groupAggregateFunction;\n }\n return result;\n}\nfunction accumulatedValue(onlyPositive) {\n return () => {\n let value = 0;\n return datum => {\n if (!isFiniteNumber(datum)) {\n return datum;\n }\n value += onlyPositive ? Math.max(0, datum) : datum;\n return value;\n };\n };\n}\nfunction trailingAccumulatedValue() {\n return () => {\n let value = 0;\n return datum => {\n if (!isFiniteNumber(datum)) {\n return datum;\n }\n const trailingValue = value;\n value += datum;\n return trailingValue;\n };\n };\n}\n\n// packages/ag-charts-community/src/chart/data/processors.ts\nvar SMALLEST_KEY_INTERVAL = {\n type: \"reducer\",\n property: \"smallestKeyInterval\",\n initialValue: Infinity,\n reducer: () => {\n let prevX = NaN;\n return (smallestSoFar = Infinity, next) => {\n const nextX = next.keys[0];\n const interval = Math.abs(nextX - prevX);\n prevX = nextX;\n if (!isNaN(interval) && interval > 0 && interval < smallestSoFar) {\n return interval;\n }\n return smallestSoFar;\n };\n }\n};\nvar SORT_DOMAIN_GROUPS = {\n type: \"processor\",\n property: \"sortedGroupDomain\",\n calculate: ({\n domain: {\n groups\n }\n }) => groups == null ? void 0 : groups.slice().sort((a, b) => {\n for (let i = 0; i < a.length; i++) {\n const result = a[i] - b[i];\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n })\n};\nfunction normaliseFnBuilder({\n normaliseTo,\n mode\n}) {\n const normalise = (val, extent2) => {\n const result = val * normaliseTo / extent2;\n if (result >= 0) {\n return Math.min(normaliseTo, result);\n }\n return Math.max(-normaliseTo, result);\n };\n return () => () => (values, valueIndexes) => {\n const valuesExtent = [0, 0];\n for (const valueIdx of valueIndexes) {\n const value = values[valueIdx];\n const valIdx = value < 0 ? 0 : 1;\n if (mode === \"sum\") {\n valuesExtent[valIdx] += value;\n } else if (valIdx === 0) {\n valuesExtent[valIdx] = Math.min(valuesExtent[valIdx], value);\n } else {\n valuesExtent[valIdx] = Math.max(valuesExtent[valIdx], value);\n }\n }\n const extent2 = Math.max(Math.abs(valuesExtent[0]), valuesExtent[1]);\n for (const valueIdx of valueIndexes) {\n values[valueIdx] = normalise(values[valueIdx], extent2);\n }\n };\n}\nfunction normaliseGroupTo(matchGroupIds, normaliseTo, mode = \"sum\") {\n return {\n type: \"group-value-processor\",\n matchGroupIds,\n adjust: memo({\n normaliseTo,\n mode\n }, normaliseFnBuilder)\n };\n}\nfunction normalisePropertyFnBuilder({\n normaliseTo,\n zeroDomain,\n rangeMin,\n rangeMax\n}) {\n const normaliseSpan = normaliseTo[1] - normaliseTo[0];\n const normalise = (val, start, span) => {\n const result = normaliseTo[0] + (val - start) / span * normaliseSpan;\n if (span === 0) {\n return zeroDomain;\n } else if (result >= normaliseTo[1]) {\n return normaliseTo[1];\n } else if (result < normaliseTo[0]) {\n return normaliseTo[0];\n }\n return result;\n };\n return () => (pData, pIdx) => {\n let [start, end] = pData.domain.values[pIdx];\n if (rangeMin != null) start = rangeMin;\n if (rangeMax != null) end = rangeMax;\n const span = end - start;\n pData.domain.values[pIdx] = [normaliseTo[0], normaliseTo[1]];\n for (const group2 of pData.data) {\n let groupValues = group2.values;\n if (pData.type === \"ungrouped\") {\n groupValues = [groupValues];\n }\n for (const values of groupValues) {\n values[pIdx] = normalise(values[pIdx], start, span);\n }\n }\n };\n}\nfunction normalisePropertyTo(property, normaliseTo, zeroDomain, rangeMin, rangeMax) {\n return {\n type: \"property-value-processor\",\n property,\n adjust: memo({\n normaliseTo,\n rangeMin,\n rangeMax,\n zeroDomain\n }, normalisePropertyFnBuilder)\n };\n}\nfunction animationValidation(valueKeyIds) {\n return {\n type: \"processor\",\n property: \"animationValidation\",\n calculate(result) {\n const {\n keys,\n values\n } = result.defs;\n const {\n input,\n data\n } = result;\n let uniqueKeys = true;\n let orderedKeys = true;\n const valueKeys = [];\n for (let k = 0; k < values.length; k++) {\n if (!(valueKeyIds == null ? void 0 : valueKeyIds.includes(values[k].id))) continue;\n valueKeys.push([k, values[k]]);\n }\n const processKey = (idx, def, type) => {\n var _a;\n if (def.valueType === \"category\") {\n const keyValues = result.domain[type][idx];\n uniqueKeys && (uniqueKeys = keyValues.length === input.count);\n return;\n }\n let lastValue = (_a = data[0]) == null ? void 0 : _a[type][idx];\n for (let d = 1; (uniqueKeys || orderedKeys) && d < data.length; d++) {\n const keyValue = data[d][type][idx];\n orderedKeys && (orderedKeys = lastValue <= keyValue);\n uniqueKeys && (uniqueKeys = lastValue !== keyValue);\n lastValue = keyValue;\n }\n };\n for (let k = 0; (uniqueKeys || orderedKeys) && k < keys.length; k++) {\n processKey(k, keys[k], \"keys\");\n }\n for (let k = 0; (uniqueKeys || orderedKeys) && k < valueKeys.length; k++) {\n const [idx, key] = valueKeys[k];\n processKey(idx, key, \"values\");\n }\n return {\n uniqueKeys,\n orderedKeys\n };\n }\n };\n}\nfunction buildGroupAccFn({\n mode,\n separateNegative\n}) {\n return () => () => (values, valueIndexes) => {\n const acc = [0, 0];\n for (const valueIdx of valueIndexes) {\n const currentVal = values[valueIdx];\n const accIndex = isNegative(currentVal) && separateNegative ? 0 : 1;\n if (!isFiniteNumber(currentVal)) continue;\n if (mode === \"normal\") acc[accIndex] += currentVal;\n values[valueIdx] = acc[accIndex];\n if (mode === \"trailing\") acc[accIndex] += currentVal;\n }\n };\n}\nfunction buildGroupWindowAccFn({\n mode,\n sum: sum2\n}) {\n return () => {\n const lastValues = [];\n let firstRow = true;\n return () => {\n return (values, valueIndexes) => {\n let acc = 0;\n for (const valueIdx of valueIndexes) {\n const currentVal = values[valueIdx];\n const lastValue = firstRow && sum2 === \"current\" ? 0 : lastValues[valueIdx];\n lastValues[valueIdx] = currentVal;\n const sumValue = sum2 === \"current\" ? currentVal : lastValue;\n if (!isFiniteNumber(currentVal) || !isFiniteNumber(lastValue)) {\n values[valueIdx] = acc;\n continue;\n }\n if (mode === \"normal\") {\n acc += sumValue;\n }\n values[valueIdx] = acc;\n if (mode === \"trailing\") {\n acc += sumValue;\n }\n }\n firstRow = false;\n };\n };\n };\n}\nfunction accumulateGroup(matchGroupId, mode, sum2, separateNegative = false) {\n let adjust;\n if (mode.startsWith(\"window\")) {\n const modeParam = mode.endsWith(\"-trailing\") ? \"trailing\" : \"normal\";\n adjust = memo({\n mode: modeParam,\n sum: sum2\n }, buildGroupWindowAccFn);\n } else {\n adjust = memo({\n mode,\n separateNegative\n }, buildGroupAccFn);\n }\n return {\n type: \"group-value-processor\",\n matchGroupIds: [matchGroupId],\n adjust\n };\n}\nfunction diff(previousData, updateMovedData = true) {\n return {\n type: \"processor\",\n property: \"diff\",\n calculate: processedData => {\n const moved = /* @__PURE__ */new Map();\n const added = /* @__PURE__ */new Map();\n const updated = /* @__PURE__ */new Map();\n const removed = /* @__PURE__ */new Map();\n const length = Math.max(previousData.data.length, processedData.data.length);\n for (let i = 0; i < length; i++) {\n const prev = previousData.data[i];\n const datum = processedData.data[i];\n const prevId = prev ? createDatumId(prev.keys) : \"\";\n const datumId = datum ? createDatumId(datum.keys) : \"\";\n if (datum && prev && prevId === datumId) {\n if (!arraysEqual(prev.values, datum.values)) {\n updated.set(datumId, datum);\n }\n continue;\n }\n if (removed.has(datumId)) {\n if (updateMovedData || !arraysEqual(removed.get(datumId).values, datum.values)) {\n updated.set(datumId, datum);\n moved.set(datumId, datum);\n }\n removed.delete(datumId);\n } else if (datum) {\n added.set(datumId, datum);\n }\n if (added.has(prevId)) {\n if (updateMovedData || !arraysEqual(added.get(prevId).values, prev.values)) {\n updated.set(prevId, prev);\n moved.set(prevId, prev);\n }\n added.delete(prevId);\n } else if (prev) {\n updated.delete(prevId);\n removed.set(prevId, prev);\n }\n }\n const changed = added.size > 0 || updated.size > 0 || removed.size > 0;\n return {\n changed,\n added,\n updated,\n removed,\n moved\n };\n }\n };\n}\nfunction createDatumId(keys, ...extraKeys) {\n let result;\n if (isArray(keys)) {\n result = keys.map(key => transformIntegratedCategoryValue(key)).join(\"___\");\n } else {\n result = transformIntegratedCategoryValue(keys);\n }\n const primitiveType = typeof result === \"string\" || typeof result === \"number\" || result instanceof Date;\n if (primitiveType && extraKeys.length > 0) {\n result += `___${extraKeys.join(\"___\")}`;\n }\n return result;\n}\n\n// packages/ag-charts-community/src/chart/series/series.ts\nvar SeriesNodePickMode = /* @__PURE__ */(SeriesNodePickMode2 => {\n SeriesNodePickMode2[SeriesNodePickMode2[\"EXACT_SHAPE_MATCH\"] = 0] = \"EXACT_SHAPE_MATCH\";\n SeriesNodePickMode2[SeriesNodePickMode2[\"NEAREST_BY_MAIN_AXIS_FIRST\"] = 1] = \"NEAREST_BY_MAIN_AXIS_FIRST\";\n SeriesNodePickMode2[SeriesNodePickMode2[\"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\"] = 2] = \"NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST\";\n SeriesNodePickMode2[SeriesNodePickMode2[\"NEAREST_NODE\"] = 3] = \"NEAREST_NODE\";\n return SeriesNodePickMode2;\n})(SeriesNodePickMode || {});\nfunction basicContinuousCheckDatumValidation(value) {\n return value != null && isContinuous(value);\n}\nfunction basicDiscreteCheckDatumValidation(value) {\n return value != null;\n}\nfunction getValidationFn(scaleType) {\n switch (scaleType) {\n case \"number\":\n case \"log\":\n case \"ordinal-time\":\n case \"time\":\n case \"color\":\n return basicContinuousCheckDatumValidation;\n default:\n return basicDiscreteCheckDatumValidation;\n }\n}\nfunction getValueType(scaleType) {\n switch (scaleType) {\n case \"number\":\n case \"log\":\n case \"time\":\n case \"color\":\n return \"range\";\n default:\n return \"category\";\n }\n}\nfunction keyProperty(propName, scaleType, opts = {}) {\n const result = __spreadValues({\n property: propName,\n type: \"key\",\n valueType: getValueType(scaleType),\n validation: getValidationFn(scaleType)\n }, opts);\n return result;\n}\nfunction valueProperty(propName, scaleType, opts = {}) {\n const result = __spreadValues({\n property: propName,\n type: \"value\",\n valueType: getValueType(scaleType),\n validation: getValidationFn(scaleType)\n }, opts);\n return result;\n}\nfunction rangedValueProperty(propName, opts = {}) {\n const _a = opts,\n {\n min = -Infinity,\n max = Infinity\n } = _a,\n defOpts = __objRest(_a, [\"min\", \"max\"]);\n return __spreadValues({\n type: \"value\",\n property: propName,\n valueType: \"range\",\n validation: basicContinuousCheckDatumValidation,\n processor: () => datum => isFiniteNumber(datum) ? clamp(min, datum, max) : datum\n }, defOpts);\n}\nfunction accumulativeValueProperty(propName, scaleType, opts = {}) {\n const _a = opts,\n {\n onlyPositive\n } = _a,\n defOpts = __objRest(_a, [\"onlyPositive\"]);\n const result = __spreadProps(__spreadValues({}, valueProperty(propName, scaleType, defOpts)), {\n processor: accumulatedValue(onlyPositive)\n });\n return result;\n}\nfunction trailingAccumulatedValueProperty(propName, scaleType, opts = {}) {\n const result = __spreadProps(__spreadValues({}, valueProperty(propName, scaleType, opts)), {\n processor: trailingAccumulatedValue()\n });\n return result;\n}\nfunction groupAccumulativeValueProperty(propName, mode, sum2 = \"current\", opts, scaleType) {\n return [valueProperty(propName, scaleType, opts), accumulateGroup(opts.groupId, mode, sum2, opts.separateNegative), ...(opts.rangeId != null ? [range2(opts.rangeId, opts.groupId)] : [])];\n}\nvar SeriesNodeEvent = class {\n constructor(type, event, {\n datum\n }, series) {\n this.type = type;\n this.event = event;\n this.datum = datum;\n this.seriesId = series.id;\n }\n};\nvar SeriesGroupingChangedEvent = class {\n constructor(series, seriesGrouping, oldGrouping) {\n this.series = series;\n this.seriesGrouping = seriesGrouping;\n this.oldGrouping = oldGrouping;\n this.type = \"groupingChanged\";\n }\n};\nvar Series = class extends Observable {\n constructor(seriesOpts) {\n super();\n this.destroyFns = [];\n this.seriesGrouping = void 0;\n this.NodeEvent = SeriesNodeEvent;\n this.internalId = createId(this);\n // The group node that contains all the nodes used to render this series.\n this.rootGroup = new Group({\n name: \"seriesRoot\",\n isVirtual: true\n });\n this.axes = {\n [\"x\" /* X */]: void 0,\n [\"y\" /* Y */]: void 0\n };\n this.directions = [\"x\" /* X */, \"y\" /* Y */];\n // Flag to determine if we should recalculate node data.\n this.nodeDataRefresh = true;\n this.moduleMap = new ModuleMap();\n this._declarationOrder = -1;\n this.seriesListeners = new Listeners();\n const {\n moduleCtx,\n pickModes = [1 /* NEAREST_BY_MAIN_AXIS_FIRST */],\n directionKeys = {},\n directionNames = {},\n contentGroupVirtual = true,\n canHaveAxes = false\n } = seriesOpts;\n this.ctx = moduleCtx;\n this.directionKeys = directionKeys;\n this.directionNames = directionNames;\n this.canHaveAxes = canHaveAxes;\n this.contentGroup = this.rootGroup.appendChild(new Group({\n name: `${this.internalId}-content`,\n isVirtual: contentGroupVirtual,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: this.getGroupZIndexSubOrder(\"data\")\n }));\n this.highlightGroup = new Group({\n name: `${this.internalId}-highlight`,\n isVirtual: contentGroupVirtual,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: this.getGroupZIndexSubOrder(\"highlight\")\n });\n this.highlightNode = this.highlightGroup.appendChild(new Group({\n name: \"highlightNode\",\n zIndex: 0\n }));\n this.highlightLabel = this.highlightGroup.appendChild(new Group({\n name: \"highlightLabel\",\n zIndex: 10\n }));\n this.pickModes = pickModes;\n this.labelGroup = this.rootGroup.appendChild(new Group({\n name: `${this.internalId}-series-labels`,\n zIndex: 8 /* SERIES_LABEL_ZINDEX */\n }));\n this.annotationGroup = new Group({\n name: `${this.id}-annotation`,\n isVirtual: contentGroupVirtual,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: this.getGroupZIndexSubOrder(\"annotation\")\n });\n }\n get id() {\n var _a, _b;\n return (_b = (_a = this.properties) == null ? void 0 : _a.id) != null ? _b : this.internalId;\n }\n get type() {\n var _a;\n return (_a = this.constructor.type) != null ? _a : \"\";\n }\n get data() {\n var _a;\n return (_a = this._data) != null ? _a : this._chartData;\n }\n set visible(value) {\n this.properties.visible = value;\n this.visibleChanged();\n }\n get visible() {\n return this.properties.visible;\n }\n get hasData() {\n return this.data != null && this.data.length > 0;\n }\n get tooltipEnabled() {\n var _a, _b;\n return (_b = (_a = this.properties.tooltip) == null ? void 0 : _a.enabled) != null ? _b : false;\n }\n onDataChange() {\n this.nodeDataRefresh = true;\n }\n setOptionsData(input) {\n this._data = input;\n this.onDataChange();\n }\n setChartData(input) {\n this._chartData = input;\n if (this.data === input) {\n this.onDataChange();\n }\n }\n onSeriesGroupingChange(prev, next) {\n const {\n internalId,\n type,\n visible\n } = this;\n if (prev) {\n this.ctx.seriesStateManager.deregisterSeries({\n id: internalId,\n type\n });\n }\n if (next) {\n this.ctx.seriesStateManager.registerSeries({\n id: internalId,\n type,\n visible,\n seriesGrouping: next\n });\n }\n this.fireEvent(new SeriesGroupingChangedEvent(this, next, prev));\n }\n getBandScalePadding() {\n return {\n inner: 1,\n outer: 0\n };\n }\n getGroupZIndexSubOrder(type, subIndex = 0) {\n let mainAdjust = 0;\n switch (type) {\n case \"data\":\n case \"paths\":\n break;\n case \"labels\":\n mainAdjust += 2e4;\n break;\n case \"marker\":\n mainAdjust += 1e4;\n break;\n case \"highlight\":\n subIndex += 15e3;\n break;\n case \"annotation\":\n mainAdjust += 15e3;\n break;\n }\n const main = () => this._declarationOrder + mainAdjust;\n return [main, subIndex];\n }\n addListener(type, listener) {\n return this.seriesListeners.addListener(type, listener);\n }\n dispatch(type, event) {\n this.seriesListeners.dispatch(type, event);\n }\n addChartEventListeners() {\n return;\n }\n destroy() {\n this.destroyFns.forEach(f => f());\n this.destroyFns = [];\n this.ctx.seriesStateManager.deregisterSeries(this);\n }\n getDirectionValues(direction, properties) {\n const resolvedDirection = this.resolveKeyDirection(direction);\n const keys = properties == null ? void 0 : properties[resolvedDirection];\n const values = [];\n if (!keys) {\n return values;\n }\n const addValues = (...items) => {\n for (const value of items) {\n if (Array.isArray(value)) {\n addValues(...value);\n } else if (typeof value === \"object\") {\n addValues(...Object.values(value));\n } else {\n values.push(value);\n }\n }\n };\n addValues(...keys.map(key => this.properties[key]));\n return values;\n }\n getKeys(direction) {\n return this.getDirectionValues(direction, this.directionKeys);\n }\n getKeyProperties(direction) {\n var _a;\n return (_a = this.directionKeys[this.resolveKeyDirection(direction)]) != null ? _a : [];\n }\n getNames(direction) {\n return this.getDirectionValues(direction, this.directionNames);\n }\n resolveKeyDirection(direction) {\n return direction;\n }\n // The union of the series domain ('community') and series-option domains ('enterprise').\n getDomain(direction) {\n const seriesDomain = this.getSeriesDomain(direction);\n const moduleDomains = this.moduleMap.mapModules(module => module.getDomain(direction));\n return seriesDomain.concat(moduleDomains.flat());\n }\n // Indicate that something external changed and we should recalculate nodeData.\n markNodeDataDirty() {\n this.nodeDataRefresh = true;\n }\n visibleChanged() {\n this.ctx.seriesStateManager.registerSeries(this);\n }\n getOpacity() {\n const defaultOpacity = 1;\n const {\n dimOpacity = 1,\n enabled = true\n } = this.properties.highlightStyle.series;\n if (!enabled || dimOpacity === defaultOpacity) {\n return defaultOpacity;\n }\n switch (this.isItemIdHighlighted()) {\n case 0 /* None */:\n case 1 /* This */:\n return defaultOpacity;\n case 2 /* Other */:\n default:\n return dimOpacity;\n }\n }\n getStrokeWidth(defaultStrokeWidth) {\n const {\n strokeWidth,\n enabled = true\n } = this.properties.highlightStyle.series;\n if (!enabled || strokeWidth === void 0) {\n return defaultStrokeWidth;\n }\n switch (this.isItemIdHighlighted()) {\n case 1 /* This */:\n return strokeWidth;\n case 0 /* None */:\n case 2 /* Other */:\n return defaultStrokeWidth;\n }\n }\n isItemIdHighlighted() {\n var _a, _b;\n const series = (_b = (_a = this.ctx.highlightManager) == null ? void 0 : _a.getActiveHighlight()) == null ? void 0 : _b.series;\n if (series == null) {\n return 0 /* None */;\n }\n if (series !== this) {\n return 2 /* Other */;\n }\n return 1 /* This */;\n }\n getModuleTooltipParams() {\n return this.moduleMap.mapModules(module => module.getTooltipParams()).reduce((total, current) => Object.assign(total, current), {});\n }\n pickNode(point, limitPickModes) {\n const {\n pickModes,\n visible,\n rootGroup\n } = this;\n if (!visible || !rootGroup.visible) {\n return;\n }\n for (const pickMode of pickModes) {\n if (limitPickModes && !limitPickModes.includes(pickMode)) {\n continue;\n }\n let match;\n switch (pickMode) {\n case 0 /* EXACT_SHAPE_MATCH */:\n match = this.pickNodeExactShape(point);\n break;\n case 1 /* NEAREST_BY_MAIN_AXIS_FIRST */:\n case 2 /* NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST */:\n match = this.pickNodeMainAxisFirst(point, pickMode === 2 /* NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST */);\n break;\n case 3 /* NEAREST_NODE */:\n match = this.pickNodeClosestDatum(point);\n break;\n }\n if (match) {\n return {\n pickMode,\n match: match.datum,\n distance: match.distance\n };\n }\n }\n }\n pickNodeExactShape(point) {\n const match = this.contentGroup.pickNode(point.x, point.y);\n if (match && match.datum.missing !== true) {\n return {\n datum: match.datum,\n distance: 0\n };\n }\n return void 0;\n }\n pickNodeClosestDatum(_point) {\n throw new Error(\"AG Charts - Series.pickNodeClosestDatum() not implemented\");\n }\n pickNodeNearestDistantObject(point, items) {\n const match = nearestSquared(point.x, point.y, items);\n if (match.nearest !== void 0 && match.nearest.datum.missing !== true) {\n return {\n datum: match.nearest.datum,\n distance: Math.sqrt(match.distanceSquared)\n };\n }\n return void 0;\n }\n pickNodeMainAxisFirst(_point, _requireCategoryAxis) {\n throw new Error(\"AG Charts - Series.pickNodeMainAxisFirst() not implemented\");\n }\n fireNodeClickEvent(event, datum) {\n this.fireEvent(new this.NodeEvent(\"nodeClick\", event, datum, this));\n }\n fireNodeDoubleClickEvent(event, datum) {\n this.fireEvent(new this.NodeEvent(\"nodeDoubleClick\", event, datum, this));\n }\n createNodeContextMenuActionEvent(event, datum) {\n return new this.NodeEvent(\"nodeContextMenuAction\", event, datum, this);\n }\n toggleSeriesItem(itemId, enabled) {\n this.visible = enabled;\n this.nodeDataRefresh = true;\n this.dispatch(\"visibility-changed\", {\n itemId,\n enabled\n });\n }\n isEnabled() {\n return this.visible;\n }\n getModuleMap() {\n return this.moduleMap;\n }\n createModuleContext() {\n return __spreadProps(__spreadValues({}, this.ctx), {\n series: this\n });\n }\n getLabelText(label, params, defaultFormatter = String) {\n var _a;\n if (label.formatter) {\n return (_a = this.ctx.callbackCache.call(label.formatter, __spreadValues({\n seriesId: this.id\n }, params))) != null ? _a : defaultFormatter(params.value);\n }\n return defaultFormatter(params.value);\n }\n getMarkerStyle(marker, params, defaultStyle = marker.getStyle()) {\n var _a, _b;\n const defaultSize = {\n size: (_b = (_a = params.datum.point) == null ? void 0 : _a.size) != null ? _b : 0\n };\n const markerStyle = mergeDefaults(defaultSize, defaultStyle);\n if (marker.formatter) {\n const style = this.ctx.callbackCache.call(marker.formatter, __spreadProps(__spreadValues(__spreadValues({\n seriesId: this.id\n }, markerStyle), params), {\n datum: params.datum.datum\n }));\n return mergeDefaults(style, markerStyle);\n }\n return markerStyle;\n }\n updateMarkerStyle(markerNode, marker, params, defaultStyle = marker.getStyle(), {\n applyTranslation = true\n } = {}) {\n const {\n point\n } = params.datum;\n const activeStyle = this.getMarkerStyle(marker, params, defaultStyle);\n const visible = this.visible && activeStyle.size > 0 && point && !isNaN(point.x) && !isNaN(point.y);\n if (applyTranslation) {\n markerNode.setProperties(__spreadProps(__spreadValues({\n visible\n }, activeStyle), {\n translationX: point == null ? void 0 : point.x,\n translationY: point == null ? void 0 : point.y\n }));\n } else {\n markerNode.setProperties(__spreadValues({\n visible\n }, activeStyle));\n }\n if (typeof marker.shape === \"function\" && !markerNode.dirtyPath) {\n markerNode.path.clear(true);\n markerNode.updatePath();\n markerNode.checkPathDirty();\n }\n }\n getMinRects(_width, _height) {\n return;\n }\n get nodeDataDependencies() {\n var _a;\n return (_a = this._nodeDataDependencies) != null ? _a : {\n seriesRectWidth: NaN,\n seriesRectHeight: NaN\n };\n }\n checkResize(newSeriesRect) {\n const {\n width: seriesRectWidth,\n height: seriesRectHeight\n } = newSeriesRect != null ? newSeriesRect : {\n width: NaN,\n height: NaN\n };\n const newNodeDataDependencies = newSeriesRect ? {\n seriesRectWidth,\n seriesRectHeight\n } : void 0;\n const resize = jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null;\n if (resize) {\n this._nodeDataDependencies = newNodeDataDependencies;\n this.markNodeDataDirty();\n }\n return resize;\n }\n pickFocus(_opts) {\n return void 0;\n }\n};\nSeries.highlightedZIndex = 1e12;\n__decorateClass([ActionOnSet({\n changeValue: function (newVal, oldVal) {\n this.onSeriesGroupingChange(oldVal, newVal);\n }\n})], Series.prototype, \"seriesGrouping\", 2);\n\n// packages/ag-charts-community/src/chart/series/seriesLayerManager.ts\nvar SERIES_THRESHOLD_FOR_AGGRESSIVE_LAYER_REDUCTION = 30;\nvar SeriesLayerManager = class {\n constructor(seriesRoot, highlightRoot, annotationRoot) {\n this.seriesRoot = seriesRoot;\n this.highlightRoot = highlightRoot;\n this.annotationRoot = annotationRoot;\n this.groups = {};\n this.series = {};\n this.expectedSeriesCount = 1;\n this.mode = \"normal\";\n }\n setSeriesCount(count) {\n this.expectedSeriesCount = count;\n }\n requestGroup(seriesConfig) {\n var _a, _b, _c, _d;\n const {\n internalId,\n type,\n rootGroup: seriesRootGroup,\n highlightGroup: seriesHighlightGroup,\n annotationGroup: seriesAnnotationGroup,\n seriesGrouping\n } = seriesConfig;\n const {\n groupIndex = internalId\n } = seriesGrouping != null ? seriesGrouping : {};\n if (this.series[internalId] != null) {\n throw new Error(`AG Charts - series already has an allocated layer: ${this.series[internalId]}`);\n }\n if (Object.keys(this.series).length === 0) {\n this.mode = this.expectedSeriesCount >= SERIES_THRESHOLD_FOR_AGGRESSIVE_LAYER_REDUCTION ? \"aggressive-grouping\" : \"normal\";\n }\n (_b = (_a = this.groups)[type]) != null ? _b : _a[type] = {};\n const lookupIndex = this.lookupIdx(groupIndex);\n let groupInfo = this.groups[type][lookupIndex];\n if (!groupInfo) {\n groupInfo = (_d = (_c = this.groups[type])[lookupIndex]) != null ? _d : _c[lookupIndex] = {\n seriesIds: [],\n group: this.seriesRoot.appendChild(new Group({\n name: `${type}-content`,\n layer: true,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: seriesConfig.getGroupZIndexSubOrder(\"data\")\n })),\n highlight: this.highlightRoot.appendChild(new Group({\n name: `${type}-highlight`,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: seriesConfig.getGroupZIndexSubOrder(\"highlight\")\n })),\n annotation: this.annotationRoot.appendChild(new Group({\n name: `${type}-annotation`,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: seriesConfig.getGroupZIndexSubOrder(\"annotation\")\n }))\n };\n }\n this.series[internalId] = {\n layerState: groupInfo,\n seriesConfig\n };\n groupInfo.seriesIds.push(internalId);\n groupInfo.group.appendChild(seriesRootGroup);\n groupInfo.highlight.appendChild(seriesHighlightGroup);\n groupInfo.annotation.appendChild(seriesAnnotationGroup);\n return groupInfo.group;\n }\n changeGroup(seriesConfig) {\n var _a, _b;\n const {\n internalId,\n seriesGrouping,\n type,\n rootGroup,\n highlightGroup,\n annotationGroup,\n oldGrouping\n } = seriesConfig;\n const {\n groupIndex = internalId\n } = seriesGrouping != null ? seriesGrouping : {};\n if ((_b = (_a = this.groups[type]) == null ? void 0 : _a[groupIndex]) == null ? void 0 : _b.seriesIds.includes(internalId)) {\n return;\n }\n if (this.series[internalId] != null) {\n this.releaseGroup({\n internalId,\n seriesGrouping: oldGrouping,\n type,\n rootGroup,\n highlightGroup,\n annotationGroup\n });\n }\n this.requestGroup(seriesConfig);\n }\n releaseGroup(seriesConfig) {\n var _a, _b, _c, _d, _e;\n const {\n internalId,\n seriesGrouping,\n rootGroup,\n highlightGroup,\n annotationGroup,\n type\n } = seriesConfig;\n const {\n groupIndex = internalId\n } = seriesGrouping != null ? seriesGrouping : {};\n if (this.series[internalId] == null) {\n throw new Error(`AG Charts - series doesn't have an allocated layer: ${internalId}`);\n }\n const lookupIndex = this.lookupIdx(groupIndex);\n const groupInfo = (_c = (_a = this.groups[type]) == null ? void 0 : _a[lookupIndex]) != null ? _c : (_b = this.series[internalId]) == null ? void 0 : _b.layerState;\n if (groupInfo) {\n groupInfo.seriesIds = groupInfo.seriesIds.filter(v => v !== internalId);\n groupInfo.group.removeChild(rootGroup);\n groupInfo.highlight.removeChild(highlightGroup);\n groupInfo.annotation.removeChild(annotationGroup);\n }\n if ((groupInfo == null ? void 0 : groupInfo.seriesIds.length) === 0) {\n this.seriesRoot.removeChild(groupInfo.group);\n this.highlightRoot.removeChild(groupInfo.highlight);\n this.annotationRoot.removeChild(groupInfo.annotation);\n delete this.groups[type][lookupIndex];\n delete this.groups[type][internalId];\n } else if ((groupInfo == null ? void 0 : groupInfo.seriesIds.length) > 0) {\n const leadSeriesConfig = (_e = this.series[(_d = groupInfo == null ? void 0 : groupInfo.seriesIds) == null ? void 0 : _d[0]]) == null ? void 0 : _e.seriesConfig;\n groupInfo.group.zIndexSubOrder = leadSeriesConfig == null ? void 0 : leadSeriesConfig.getGroupZIndexSubOrder(\"data\");\n groupInfo.highlight.zIndexSubOrder = leadSeriesConfig == null ? void 0 : leadSeriesConfig.getGroupZIndexSubOrder(\"highlight\");\n groupInfo.annotation.zIndexSubOrder = leadSeriesConfig == null ? void 0 : leadSeriesConfig.getGroupZIndexSubOrder(\"annotation\");\n }\n delete this.series[internalId];\n }\n lookupIdx(groupIndex) {\n if (this.mode === \"normal\") {\n return groupIndex;\n }\n if (typeof groupIndex === \"string\") {\n groupIndex = Number(groupIndex.split(\"-\").slice(-1)[0]);\n if (!groupIndex) {\n return 0;\n }\n }\n return Math.floor(clamp(0, groupIndex / this.expectedSeriesCount, 1) * SERIES_THRESHOLD_FOR_AGGRESSIVE_LAYER_REDUCTION);\n }\n destroy() {\n for (const groups of Object.values(this.groups)) {\n for (const groupInfo of Object.values(groups)) {\n this.seriesRoot.removeChild(groupInfo.group);\n this.highlightRoot.removeChild(groupInfo.highlight);\n this.annotationRoot.removeChild(groupInfo.annotation);\n }\n }\n this.groups = {};\n this.series = {};\n }\n};\n\n// packages/ag-charts-community/src/chart/update/baseLayoutProcessor.ts\nvar BaseLayoutProcessor = class {\n constructor(chartLike, layoutService) {\n this.chartLike = chartLike;\n this.layoutService = layoutService;\n this.destroyFns = [];\n this.destroyFns.push(\n // eslint-disable-next-line sonarjs/no-duplicate-string\n this.layoutService.addListener(\"start-layout\", e => this.positionPadding(e.shrinkRect)), this.layoutService.addListener(\"start-layout\", e => this.positionCaptions(e.shrinkRect)));\n }\n destroy() {\n this.destroyFns.forEach(cb => cb());\n }\n positionPadding(shrinkRect) {\n const {\n padding\n } = this.chartLike;\n shrinkRect.shrink(padding.left, \"left\");\n shrinkRect.shrink(padding.top, \"top\");\n shrinkRect.shrink(padding.right, \"right\");\n shrinkRect.shrink(padding.bottom, \"bottom\");\n return {\n shrinkRect\n };\n }\n positionCaptions(shrinkRect) {\n var _a, _b;\n const {\n title,\n subtitle,\n footnote\n } = this.chartLike;\n const newShrinkRect = shrinkRect.clone();\n const updateCaption = caption => {\n var _a2;\n const defaultCaptionHeight = shrinkRect.height / 10;\n const captionLineHeight = (_a2 = caption.lineHeight) != null ? _a2 : caption.fontSize * Text.defaultLineHeightRatio;\n const maxWidth = shrinkRect.width;\n const maxHeight = Math.max(captionLineHeight, defaultCaptionHeight);\n caption.computeTextWrap(maxWidth, maxHeight);\n };\n const computeX = align => {\n if (align === \"left\") {\n return newShrinkRect.x;\n } else if (align === \"right\") {\n return newShrinkRect.x + newShrinkRect.width;\n } else if (align !== \"center\") {\n Logger.error(`invalid textAlign value: ${align}`);\n }\n return newShrinkRect.x + newShrinkRect.width / 2;\n };\n const positionTopAndShrinkBBox = (caption, spacing) => {\n const baseY = newShrinkRect.y;\n caption.node.x = computeX(caption.textAlign);\n caption.node.y = baseY;\n caption.node.textBaseline = \"top\";\n updateCaption(caption);\n const bbox = caption.node.computeBBox();\n const bboxHeight = Math.ceil(bbox.y - baseY + bbox.height + spacing);\n newShrinkRect.shrink(bboxHeight, \"top\");\n };\n const positionBottomAndShrinkBBox = (caption, spacing) => {\n const baseY = newShrinkRect.y + newShrinkRect.height;\n caption.node.x = computeX(caption.textAlign);\n caption.node.y = baseY;\n caption.node.textBaseline = \"bottom\";\n updateCaption(caption);\n const bbox = caption.node.computeBBox();\n const bboxHeight = Math.ceil(baseY - bbox.y + spacing);\n newShrinkRect.shrink(bboxHeight, \"bottom\");\n };\n title.node.visible = title.enabled;\n subtitle.node.visible = subtitle.enabled;\n footnote.node.visible = footnote.enabled;\n if (title.enabled) {\n const {\n spacing = subtitle.enabled ? Caption.SMALL_PADDING : Caption.LARGE_PADDING\n } = title;\n positionTopAndShrinkBBox(title, spacing);\n }\n if (subtitle.enabled) {\n positionTopAndShrinkBBox(subtitle, (_a = subtitle.spacing) != null ? _a : 0);\n }\n if (footnote.enabled) {\n positionBottomAndShrinkBBox(footnote, (_b = footnote.spacing) != null ? _b : 0);\n }\n return {\n shrinkRect: newShrinkRect\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/update/dataWindowProcessor.ts\nvar DataWindowProcessor = class {\n constructor(chart, dataService, updateService, zoomManager) {\n this.chart = chart;\n this.dataService = dataService;\n this.updateService = updateService;\n this.zoomManager = zoomManager;\n this.dirtyZoom = false;\n this.dirtyDataSource = false;\n this.lastAxisZooms = /* @__PURE__ */new Map();\n this.destroyFns = [];\n this.destroyFns.push(this.dataService.addListener(\"data-source-change\", () => this.onDataSourceChange()), this.dataService.addListener(\"data-load\", () => this.onDataLoad()), this.dataService.addListener(\"data-error\", () => this.onDataError()), this.updateService.addListener(\"update-complete\", () => this.onUpdateComplete()), this.zoomManager.addListener(\"zoom-change\", () => this.onZoomChange()));\n }\n destroy() {\n this.destroyFns.forEach(cb => cb());\n }\n onDataLoad() {\n this.updateService.update(1 /* UPDATE_DATA */);\n }\n onDataError() {\n this.updateService.update(3 /* PERFORM_LAYOUT */);\n }\n onDataSourceChange() {\n this.dirtyDataSource = true;\n }\n onUpdateComplete() {\n if (!this.dirtyZoom && !this.dirtyDataSource) return;\n this.updateWindow().catch(e => Logger.errorOnce(e));\n }\n onZoomChange() {\n this.dirtyZoom = true;\n }\n updateWindow() {\n return __async(this, null, function* () {\n if (!this.dataService.isLazy()) return;\n const axis = this.getValidAxis();\n let window2;\n let shouldRefresh = true;\n if (axis) {\n const zoom2 = this.zoomManager.getAxisZoom(axis.id);\n window2 = this.getAxisWindow(axis, zoom2);\n shouldRefresh = this.shouldRefresh(axis, zoom2);\n }\n this.dirtyZoom = false;\n this.dirtyDataSource = false;\n if (!shouldRefresh) return;\n this.dataService.load({\n windowStart: window2 == null ? void 0 : window2.min,\n windowEnd: window2 == null ? void 0 : window2.max\n });\n });\n }\n getValidAxis() {\n return this.chart.axes.find(axis => axis.type === \"time\");\n }\n shouldRefresh(axis, zoom2) {\n if (this.dirtyDataSource) return true;\n if (!this.dirtyZoom) return false;\n const lastZoom = this.lastAxisZooms.get(axis.id);\n if (lastZoom && zoom2.min === lastZoom.min && zoom2.max === lastZoom.max) {\n return false;\n }\n this.lastAxisZooms.set(axis.id, zoom2);\n return true;\n }\n getAxisWindow(axis, zoom2) {\n var _a, _b;\n const domain = (_b = (_a = axis.scale).getDomain) == null ? void 0 : _b.call(_a);\n if (!zoom2 || !domain || domain.length === 0 || isNaN(Number(domain[0]))) return;\n const diff2 = Number(domain[1]) - Number(domain[0]);\n const min = new Date(Number(domain[0]) + diff2 * zoom2.min);\n const max = new Date(Number(domain[0]) + diff2 * zoom2.max);\n return {\n min,\n max\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/update/overlaysProcessor.ts\nvar OverlaysProcessor = class {\n constructor(chartLike, overlays, dataService, layoutService, animationManager) {\n this.chartLike = chartLike;\n this.overlays = overlays;\n this.dataService = dataService;\n this.layoutService = layoutService;\n this.animationManager = animationManager;\n this.destroyFns = [];\n this.destroyFns.push(this.layoutService.addListener(\"layout-complete\", e => this.onLayoutComplete(e)));\n }\n destroy() {\n this.destroyFns.forEach(cb => cb());\n }\n onLayoutComplete({\n series: {\n rect\n }\n }) {\n const isLoading = this.dataService.isLoading();\n const hasData = this.chartLike.series.some(s => s.hasData);\n const anySeriesVisible = this.chartLike.series.some(s => s.visible);\n this.toggleOverlay(this.overlays.loading, rect, isLoading);\n this.toggleOverlay(this.overlays.noData, rect, !isLoading && !hasData);\n this.toggleOverlay(this.overlays.noVisibleSeries, rect, hasData && !anySeriesVisible);\n }\n toggleOverlay(overlay, seriesRect, visible) {\n if (visible) {\n const element2 = overlay.getElement(this.animationManager, seriesRect);\n this.chartLike.element.append(element2);\n } else {\n overlay.removeElement(this.animationManager);\n }\n }\n};\n\n// packages/ag-charts-community/src/chart/chart.ts\nvar debug = Debug.create(true, \"opts\");\nvar SeriesArea = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.padding = new Padding(0);\n }\n};\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], SeriesArea.prototype, \"clip\", 2);\n__decorateClass([Validate(OBJECT)], SeriesArea.prototype, \"padding\", 2);\nvar _Chart = class _Chart extends Observable {\n constructor(options, resources) {\n var _a, _b, _c;\n super();\n this.id = createId(this);\n this.seriesRoot = new Group({\n name: `${this.id}-series-root`\n });\n this.highlightRoot = new Group({\n name: `${this.id}-highlight-root`,\n layer: true,\n zIndex: 5 /* SERIES_HIGHLIGHT_ZINDEX */,\n nonEmptyChildDerivedZIndex: true\n });\n this.annotationRoot = new Group({\n name: `${this.id}-annotation-root`,\n layer: true,\n zIndex: 10 /* SERIES_ANNOTATION_ZINDEX */\n });\n this.debug = Debug.create();\n this.extraDebugStats = {};\n this.data = [];\n this._firstAutoSize = true;\n this.padding = new Padding(20);\n this.seriesArea = new SeriesArea();\n this.title = new Caption();\n this.subtitle = new Caption();\n this.footnote = new Caption();\n this.keyboard = new Keyboard();\n this.mode = \"standalone\";\n this.destroyed = false;\n this._skipSync = false;\n this._destroyFns = [];\n this.chartAnimationPhase = \"initial\";\n this.modulesManager = new ModulesManager();\n // FIXME: zoomManager should be owned by ctx, but it can't because it is used by CartesianChart.onAxisChange before ctx is initialised\n this.zoomManager = new ZoomManager();\n this.processors = [];\n this.processedOptions = {};\n this.userOptions = {};\n this.queuedUserOptions = [];\n this._pendingFactoryUpdatesCount = 0;\n this._performUpdateNoRenderCount = 0;\n this._performUpdateSkipAnimations = false;\n this.performUpdateType = 7 /* NONE */;\n this.updateShortcutCount = 0;\n this.seriesToUpdate = /* @__PURE__ */new Set();\n this.updateMutex = new Mutex();\n this.updateRequestors = {};\n this.performUpdateTrigger = debouncedCallback(_0 => __async(this, [_0], function* ({\n count\n }) {\n if (this.destroyed) return;\n this.updateMutex.acquire(() => __async(this, null, function* () {\n try {\n yield this.performUpdate(count);\n } catch (error) {\n Logger.error(\"update error\", error);\n }\n })).catch(e => Logger.errorOnce(e));\n }));\n this._performUpdateSplits = {};\n this.axes = [];\n this.series = [];\n this.focus = {\n hasFocus: false,\n series: void 0,\n seriesIndex: 0,\n datumIndex: 0,\n datum: void 0\n };\n this.pointerScheduler = debouncedAnimationFrame(() => {\n if (!this.lastInteractionEvent) return;\n if (this.performUpdateType <= 4 /* SERIES_UPDATE */) {\n this.pointerScheduler.schedule();\n return;\n }\n this.handlePointer(this.lastInteractionEvent, false);\n this.lastInteractionEvent = void 0;\n });\n this.onSeriesNodeClick = event => {\n const seriesNodeClickEvent = __spreadProps(__spreadValues({}, event), {\n type: \"seriesNodeClick\"\n });\n Object.defineProperty(seriesNodeClickEvent, \"series\", {\n enumerable: false,\n // Should display the deprecation warning\n get: () => event.series\n });\n this.fireEvent(seriesNodeClickEvent);\n };\n this.onSeriesNodeDoubleClick = event => {\n const seriesNodeDoubleClick = __spreadProps(__spreadValues({}, event), {\n type: \"seriesNodeDoubleClick\"\n });\n this.fireEvent(seriesNodeDoubleClick);\n };\n this.seriesGroupingChanged = event => {\n if (!(event instanceof SeriesGroupingChangedEvent)) return;\n const {\n series,\n seriesGrouping,\n oldGrouping\n } = event;\n if (series.rootGroup.parent == null) return;\n this.seriesLayerManager.changeGroup({\n internalId: series.internalId,\n type: series.type,\n rootGroup: series.rootGroup,\n highlightGroup: series.highlightGroup,\n annotationGroup: series.annotationGroup,\n getGroupZIndexSubOrder: type => series.getGroupZIndexSubOrder(type),\n seriesGrouping,\n oldGrouping\n });\n };\n this.dataProcessListeners = /* @__PURE__ */new Set();\n this.chartOptions = options;\n let scene = resources == null ? void 0 : resources.scene;\n const element2 = (_a = resources == null ? void 0 : resources.element) != null ? _a : createElement(\"div\", \"ag-chart-wrapper\", {\n position: \"relative\",\n userSelect: \"none\"\n });\n const container = resources == null ? void 0 : resources.container;\n this.element = element2;\n const root = new Group({\n name: \"root\"\n });\n root.visible = false;\n root.append(this.seriesRoot);\n root.append(this.highlightRoot);\n root.append(this.annotationRoot);\n this.axisGridGroup = new Group({\n name: \"Axes-Grids\",\n layer: true,\n zIndex: 1 /* AXIS_GRID_ZINDEX */\n });\n root.appendChild(this.axisGridGroup);\n this.axisGroup = new Group({\n name: \"Axes\",\n layer: true,\n zIndex: 2 /* AXIS_ZINDEX */\n });\n root.appendChild(this.axisGroup);\n this.sizeMonitor = new SizeMonitor();\n this.sizeMonitor.observe(this.element, size => this.rawResize(size));\n const {\n overrideDevicePixelRatio\n } = options.specialOverrides;\n scene != null ? scene : scene = new Scene({\n pixelRatio: overrideDevicePixelRatio,\n canvasPosition: \"absolute\"\n });\n scene.setRoot(root).setContainer(element2);\n this.autoSize = true;\n this.tooltip = new Tooltip();\n this.seriesLayerManager = new SeriesLayerManager(this.seriesRoot, this.highlightRoot, this.annotationRoot);\n const ctx = this.ctx = new ChartContext(this, {\n scene,\n syncManager: new SyncManager(this),\n element: element2,\n updateCallback: (type = 0 /* FULL */, opts) => this.update(type, opts),\n updateMutex: this.updateMutex\n });\n this.overlays = new ChartOverlays();\n (_c = (_b = this.overlays.loading).renderer) != null ? _c : _b.renderer = () => getLoadingSpinner(this.overlays.loading.getText(), ctx.animationManager.defaultDuration);\n this.processors = [new BaseLayoutProcessor(this, ctx.layoutService), new DataWindowProcessor(this, ctx.dataService, ctx.updateService, ctx.zoomManager), new OverlaysProcessor(this, this.overlays, ctx.dataService, ctx.layoutService, ctx.animationManager)];\n this.highlight = new ChartHighlight();\n this.container = container;\n const {\n All\n } = InteractionState;\n const moduleContext = this.getModuleContext();\n const seriesRegion = ctx.regionManager.addRegion(\"series\", this.seriesRoot, this.axisGroup);\n ctx.regionManager.addRegion(\"root\", root);\n this._destroyFns.push(ctx.dataService.addListener(\"data-load\", event => {\n this.data = event.data;\n }), ctx.scene.attachNode(this.title.node), ctx.scene.attachNode(this.subtitle.node), ctx.scene.attachNode(this.footnote.node), this.title.registerInteraction(moduleContext, \"title\"), this.subtitle.registerInteraction(moduleContext, \"subtitle\"), this.footnote.registerInteraction(moduleContext, \"footnote\"), ctx.interactionManager.addListener(\"click\", event => this.onClick(event)), ctx.interactionManager.addListener(\"dblclick\", event => this.onDoubleClick(event)), seriesRegion.addListener(\"hover\", event => this.onMouseMove(event)), seriesRegion.addListener(\"leave\", event => this.onLeave(event)), seriesRegion.addListener(\"blur\", () => this.onBlur()), seriesRegion.addListener(\"tab\", event => this.onTab(event)), seriesRegion.addListener(\"nav-vert\", event => this.onNavVert(event)), seriesRegion.addListener(\"nav-hori\", event => this.onNavHori(event)), seriesRegion.addListener(\"submit\", event => this.onSubmit(event)), ctx.keyNavManager.addListener(\"browserfocus\", event => this.onBrowserFocus(event)), ctx.interactionManager.addListener(\"page-left\", () => this.destroy()), ctx.interactionManager.addListener(\"contextmenu\", event => this.onContextMenu(event), All), ctx.animationManager.addListener(\"animation-start\", () => this.onAnimationStart()), ctx.animationManager.addListener(\"animation-frame\", () => {\n this.update(6 /* SCENE_RENDER */);\n }), ctx.highlightManager.addListener(\"highlight-change\", event => this.changeHighlightDatum(event)), ctx.zoomManager.addListener(\"zoom-pan-start\", () => this.resetPointer()), ctx.zoomManager.addListener(\"zoom-change\", () => {\n this.resetPointer();\n this.series.map(s => {\n var _a2;\n return (_a2 = s.animationState) == null ? void 0 : _a2.transition(\"updateData\");\n });\n const skipAnimations = this.chartAnimationPhase !== \"initial\";\n this.update(3 /* PERFORM_LAYOUT */, {\n forceNodeDataRefresh: true,\n skipAnimations\n });\n }));\n }\n static getInstance(element2) {\n return _Chart.chartsInstances.get(element2);\n }\n /** NOTE: This is exposed for use by Integrated charts only. */\n get canvasElement() {\n return this.ctx.scene.canvas.element;\n }\n /** NOTE: This is exposed for use by Integrated charts only. */\n getCanvasDataURL(fileFormat) {\n return this.ctx.scene.getDataURL(fileFormat);\n }\n onAutoSizeChange(value) {\n const {\n style\n } = this.element;\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(void 0, void 0, \"autoSize option\");\n } else {\n style.display = \"inline-block\";\n style.width = \"auto\";\n style.height = \"auto\";\n }\n }\n download(fileName, fileFormat) {\n this.ctx.scene.download(fileName, fileFormat);\n }\n getOptions() {\n var _a;\n return (_a = this.queuedUserOptions.at(-1)) != null ? _a : this.userOptions;\n }\n getModuleContext() {\n return this.ctx;\n }\n getAriaLabel() {\n var _a;\n const captionText = [this.title, this.subtitle, this.footnote].filter(caption => caption.enabled && caption.text).map(caption => caption.text).join(\". \");\n const nSeries = (_a = this.series.length) != null ? _a : 0;\n return `chart, ${nSeries} series, ${captionText}`;\n }\n resetAnimations() {\n this.chartAnimationPhase = \"initial\";\n for (const series of this.series) {\n series.resetAnimation(this.chartAnimationPhase);\n }\n for (const axis of this.axes) {\n axis.resetAnimation(this.chartAnimationPhase);\n }\n this.animationRect = void 0;\n this.ctx.animationManager.reset();\n }\n skipAnimations() {\n this.ctx.animationManager.skipCurrentBatch();\n this._performUpdateSkipAnimations = true;\n }\n destroy(opts) {\n if (this.destroyed) {\n return;\n }\n const keepTransferableResources = opts == null ? void 0 : opts.keepTransferableResources;\n let result;\n this.performUpdateType = 7 /* NONE */;\n this._destroyFns.forEach(fn => fn());\n this.processors.forEach(p => p.destroy());\n this.tooltip.destroy();\n this.overlays.destroy();\n this.sizeMonitor.unobserve(this.element);\n this.modulesManager.destroy();\n if (keepTransferableResources) {\n this.ctx.scene.strip();\n result = {\n container: this.container,\n scene: this.ctx.scene,\n element: this.element\n };\n } else {\n this.ctx.scene.destroy();\n this.container = void 0;\n }\n this.destroySeries(this.series);\n this.seriesLayerManager.destroy();\n this.axes.forEach(a => a.destroy());\n this.axes = [];\n this.animationRect = void 0;\n this.ctx.destroy();\n this.zoomManager.destroy();\n this.destroyed = true;\n Object.freeze(this);\n return result;\n }\n resetPointer(highlightOnly = false) {\n if (!highlightOnly) {\n this.ctx.tooltipManager.removeTooltip(this.id);\n }\n this.ctx.highlightManager.updateHighlight(this.id);\n this.lastInteractionEvent = void 0;\n }\n requestFactoryUpdate(cb) {\n if (this.destroyed) return;\n this._pendingFactoryUpdatesCount++;\n this.updateMutex.acquire(() => __async(this, null, function* () {\n if (this.destroyed) return;\n yield cb(this);\n if (this.destroyed) return;\n this._pendingFactoryUpdatesCount--;\n })).catch(e => Logger.errorOnce(e));\n }\n update(type = 0 /* FULL */, opts) {\n var _a, _b;\n const {\n forceNodeDataRefresh = false,\n skipAnimations,\n seriesToUpdate = this.series,\n newAnimationBatch\n } = opts != null ? opts : {};\n if (forceNodeDataRefresh) {\n this.series.forEach(series => series.markNodeDataDirty());\n }\n for (const series of seriesToUpdate) {\n this.seriesToUpdate.add(series);\n }\n if (skipAnimations) {\n this.ctx.animationManager.skipCurrentBatch();\n this._performUpdateSkipAnimations = true;\n }\n if (newAnimationBatch && this.ctx.animationManager.isActive()) {\n this._performUpdateSkipAnimations = true;\n }\n this._skipSync = (_a = opts == null ? void 0 : opts.skipSync) != null ? _a : false;\n if (this.debug.check()) {\n let stack = (_b = new Error().stack) != null ? _b : \"\";\n stack = stack.replace(/\\([^)]*/g, \"\");\n this.updateRequestors[stack] = type;\n }\n if (type < this.performUpdateType) {\n this.performUpdateType = type;\n this.performUpdateTrigger.schedule(opts == null ? void 0 : opts.backOffMs);\n }\n }\n performUpdate(count) {\n return __async(this, null, function* () {\n var _a;\n const {\n performUpdateType,\n extraDebugStats,\n _performUpdateSplits: splits,\n ctx\n } = this;\n const seriesToUpdate = [...this.seriesToUpdate];\n this.performUpdateType = 7 /* NONE */;\n this.seriesToUpdate.clear();\n if (this.updateShortcutCount === 0 && performUpdateType < 6 /* SCENE_RENDER */) {\n ctx.animationManager.startBatch(this._performUpdateSkipAnimations);\n ctx.animationManager.onBatchStop(() => this.chartAnimationPhase = \"ready\");\n }\n this.debug(\"Chart.performUpdate() - start\", ChartUpdateType[performUpdateType]);\n let previousSplit = performance.now();\n (_a = splits.start) != null ? _a : splits.start = previousSplit;\n const updateSplits = splitName => {\n var _a2;\n (_a2 = splits[splitName]) != null ? _a2 : splits[splitName] = 0;\n splits[splitName] += performance.now() - previousSplit;\n previousSplit = performance.now();\n };\n let updateDeferred = false;\n switch (performUpdateType) {\n case 0 /* FULL */:\n this.updateDOM();\n case 1 /* UPDATE_DATA */:\n yield this.updateData();\n updateSplits(\"\\u2B07\\uFE0F\");\n case 2 /* PROCESS_DATA */:\n yield this.processData();\n this.resetPointer(true);\n updateSplits(\"\\u{1F3ED}\");\n case 3 /* PERFORM_LAYOUT */:\n if (this.checkUpdateShortcut(3 /* PERFORM_LAYOUT */)) break;\n if (!this.checkFirstAutoSize(seriesToUpdate)) {\n updateDeferred = true;\n break;\n }\n yield this.processLayout();\n updateSplits(\"\\u2316\");\n case 4 /* SERIES_UPDATE */:\n if (this.checkUpdateShortcut(4 /* SERIES_UPDATE */)) break;\n const {\n seriesRect\n } = this;\n yield Promise.all(seriesToUpdate.map(series => series.update({\n seriesRect\n })));\n updateSplits(\"\\u{1F914}\");\n case 5 /* TOOLTIP_RECALCULATION */:\n if (this.checkUpdateShortcut(5 /* TOOLTIP_RECALCULATION */)) break;\n const tooltipMeta = ctx.tooltipManager.getTooltipMeta(this.id);\n if (performUpdateType <= 4 /* SERIES_UPDATE */ && (tooltipMeta == null ? void 0 : tooltipMeta.lastPointerEvent) != null) {\n this.handlePointer(tooltipMeta.lastPointerEvent, true);\n }\n updateSplits(\"\\u2196\");\n case 6 /* SCENE_RENDER */:\n if (this.checkUpdateShortcut(6 /* SCENE_RENDER */)) break;\n ctx.animationManager.endBatch();\n extraDebugStats[\"updateShortcutCount\"] = this.updateShortcutCount;\n yield ctx.scene.render({\n debugSplitTimes: splits,\n extraDebugStats\n });\n this.ctx.regionManager.updateFocusWrapperRect();\n this.extraDebugStats = {};\n for (const key in splits) {\n delete splits[key];\n }\n case 7 /* NONE */:\n this.updateShortcutCount = 0;\n this.updateRequestors = {};\n this._performUpdateSkipAnimations = false;\n ctx.animationManager.endBatch();\n }\n if (!updateDeferred) {\n ctx.updateService.dispatchUpdateComplete(this.getMinRects());\n }\n const end = performance.now();\n this.debug(\"Chart.performUpdate() - end\", {\n chart: this,\n durationMs: Math.round((end - splits[\"start\"]) * 100) / 100,\n count,\n performUpdateType: ChartUpdateType[performUpdateType]\n });\n });\n }\n updateThemeClassName() {\n const {\n element: element2,\n processedOptions: {\n theme\n }\n } = this;\n const themeClassNamePrefix = \"ag-charts-theme-\";\n const validThemeClassNames = [`${themeClassNamePrefix}default`, `${themeClassNamePrefix}default-dark`];\n let themeClassName = validThemeClassNames[0];\n let isDark = false;\n if (typeof theme === \"string\") {\n themeClassName = theme.replace(\"ag-\", themeClassNamePrefix);\n isDark = theme.includes(\"-dark\");\n } else if (typeof (theme == null ? void 0 : theme.baseTheme) === \"string\") {\n themeClassName = theme.baseTheme.replace(\"ag-\", themeClassNamePrefix);\n isDark = theme.baseTheme.includes(\"-dark\");\n }\n if (!validThemeClassNames.includes(themeClassName)) {\n themeClassName = isDark ? validThemeClassNames[1] : validThemeClassNames[0];\n }\n element2.classList.forEach(className => {\n if (className.startsWith(themeClassNamePrefix) && className !== themeClassName) {\n element2.classList.remove(className);\n }\n });\n element2.classList.add(themeClassName);\n }\n updateDOM() {\n this.updateThemeClassName();\n const {\n enabled,\n tabIndex\n } = this.keyboard;\n this.element.tabIndex = enabled ? tabIndex != null ? tabIndex : 0 : -1;\n setAttribute(this.ctx.scene.canvas.element, \"role\", \"figure\");\n setAttribute(this.ctx.scene.canvas.element, \"aria-label\", this.getAriaLabel());\n }\n checkUpdateShortcut(checkUpdateType) {\n const maxShortcuts = 3;\n if (this.updateShortcutCount > maxShortcuts) {\n Logger.warn(`exceeded the maximum number of simultaneous updates (${maxShortcuts + 1}), discarding changes and rendering`, this.updateRequestors);\n return false;\n }\n if (this.performUpdateType <= checkUpdateType) {\n this.updateShortcutCount++;\n return true;\n }\n return false;\n }\n checkFirstAutoSize(seriesToUpdate) {\n if (this.autoSize && !this._lastAutoSize) {\n const count = this._performUpdateNoRenderCount++;\n const backOffMs = __pow(count + 1, 2) * 40;\n if (count < 8) {\n this.update(3 /* PERFORM_LAYOUT */, {\n seriesToUpdate,\n backOffMs\n });\n this.debug(\"Chart.checkFirstAutoSize() - backing off until first size update\", backOffMs);\n return false;\n }\n this.debug(\"Chart.checkFirstAutoSize() - timeout for first size update.\");\n }\n this._performUpdateNoRenderCount = 0;\n return true;\n }\n onAxisChange(newValue, oldValue = []) {\n for (const axis of oldValue) {\n if (newValue.includes(axis)) continue;\n axis.detachAxis(this.axisGroup, this.axisGridGroup);\n axis.destroy();\n }\n for (const axis of newValue) {\n if (oldValue == null ? void 0 : oldValue.includes(axis)) continue;\n axis.attachAxis(this.axisGroup, this.axisGridGroup);\n }\n }\n onSeriesChange(newValue, oldValue) {\n var _a, _b;\n const seriesToDestroy = (_a = oldValue == null ? void 0 : oldValue.filter(series => !newValue.includes(series))) != null ? _a : [];\n this.destroySeries(seriesToDestroy);\n (_b = this.seriesLayerManager) == null ? void 0 : _b.setSeriesCount(newValue.length);\n for (const series of newValue) {\n if (oldValue == null ? void 0 : oldValue.includes(series)) continue;\n if (series.rootGroup.parent == null) {\n this.seriesLayerManager.requestGroup(series);\n }\n const chart = this;\n series.chart = {\n get mode() {\n return chart.mode;\n },\n get isMiniChart() {\n return false;\n },\n get seriesRect() {\n return chart.seriesRect;\n },\n placeLabels() {\n return chart.placeLabels();\n }\n };\n series.resetAnimation(this.chartAnimationPhase);\n this.addSeriesListeners(series);\n series.addChartEventListeners();\n }\n }\n destroySeries(allSeries) {\n allSeries == null ? void 0 : allSeries.forEach(series => {\n series.removeEventListener(\"nodeClick\", this.onSeriesNodeClick);\n series.removeEventListener(\"nodeDoubleClick\", this.onSeriesNodeDoubleClick);\n series.removeEventListener(\"groupingChanged\", this.seriesGroupingChanged);\n series.destroy();\n this.seriesLayerManager.releaseGroup(series);\n series.chart = void 0;\n });\n }\n addSeriesListeners(series) {\n if (this.hasEventListener(\"seriesNodeClick\")) {\n series.addEventListener(\"nodeClick\", this.onSeriesNodeClick);\n }\n if (this.hasEventListener(\"seriesNodeDoubleClick\")) {\n series.addEventListener(\"nodeDoubleClick\", this.onSeriesNodeDoubleClick);\n }\n series.addEventListener(\"groupingChanged\", this.seriesGroupingChanged);\n }\n updateAllSeriesListeners() {\n this.series.forEach(series => {\n series.removeEventListener(\"nodeClick\", this.onSeriesNodeClick);\n series.removeEventListener(\"nodeDoubleClick\", this.onSeriesNodeDoubleClick);\n this.addSeriesListeners(series);\n });\n }\n assignSeriesToAxes() {\n this.axes.forEach(axis => {\n axis.boundSeries = this.series.filter(s => {\n const seriesAxis = s.axes[axis.direction];\n return seriesAxis === axis;\n });\n });\n }\n assignAxesToSeries() {\n const directionToAxesMap = groupBy(this.axes, axis => axis.direction);\n this.series.forEach(series => {\n series.directions.forEach(direction => {\n const directionAxes = directionToAxesMap[direction];\n if (!directionAxes) {\n Logger.warnOnce(`no available axis for direction [${direction}]; check series and axes configuration.`);\n return;\n }\n const seriesKeys = series.getKeys(direction);\n const newAxis = directionAxes.find(axis => !axis.keys.length || seriesKeys.some(key => axis.keys.includes(key)));\n if (!newAxis) {\n Logger.warnOnce(`no matching axis for direction [${direction}] and keys [${seriesKeys}]; check series and axes configuration.`);\n return;\n }\n series.axes[direction] = newAxis;\n });\n });\n }\n rawResize({\n width,\n height\n }) {\n var _a;\n if (!this.autoSize) return;\n width = Math.floor(width);\n height = Math.floor(height);\n if (width === 0 && height === 0) return;\n const [autoWidth = 0, authHeight = 0] = (_a = this._lastAutoSize) != null ? _a : [];\n if (autoWidth === width && authHeight === height) return;\n this._lastAutoSize = [width, height];\n this.resize(void 0, void 0, \"SizeMonitor\");\n }\n resize(width, height, source) {\n var _a, _b, _c, _d;\n const {\n scene,\n animationManager\n } = this.ctx;\n width != null ? width : width = (_b = this.width) != null ? _b : this.autoSize ? (_a = this._lastAutoSize) == null ? void 0 : _a[0] : scene.canvas.width;\n height != null ? height : height = (_d = this.height) != null ? _d : this.autoSize ? (_c = this._lastAutoSize) == null ? void 0 : _c[1] : scene.canvas.height;\n this.debug(`Chart.resize() from ${source}`, {\n width,\n height,\n stack: new Error().stack\n });\n if (!width || !height || !isFiniteNumber(width) || !isFiniteNumber(height)) return;\n if (scene.resize(width, height)) {\n this.resetPointer();\n animationManager.reset();\n let skipAnimations = true;\n if (this.autoSize && this._firstAutoSize) {\n skipAnimations = false;\n this._firstAutoSize = false;\n }\n this.update(3 /* PERFORM_LAYOUT */, {\n forceNodeDataRefresh: true,\n skipAnimations\n });\n }\n }\n updateData() {\n return __async(this, null, function* () {\n this.series.forEach(s => s.setChartData(this.data));\n const modulePromises = this.modulesManager.mapModules(m => {\n var _a;\n return (_a = m.updateData) == null ? void 0 : _a.call(m, {\n data: this.data\n });\n });\n yield Promise.all(modulePromises);\n });\n }\n processData() {\n return __async(this, null, function* () {\n if (this.series.some(s => s.canHaveAxes)) {\n this.assignAxesToSeries();\n const syncModule = this.modulesManager.getModule(\"sync\");\n if (syncModule == null ? void 0 : syncModule.enabled) {\n syncModule.syncAxes(this._skipSync);\n } else {\n this.assignSeriesToAxes();\n }\n }\n const dataController = new DataController(this.mode);\n const seriesPromises = this.series.map(s => s.processData(dataController));\n const modulePromises = this.modulesManager.mapModules(m => {\n var _a;\n return (_a = m.processData) == null ? void 0 : _a.call(m, {\n dataController\n });\n });\n dataController.execute();\n yield Promise.all([...seriesPromises, ...modulePromises]);\n for (const {\n legendType,\n legend\n } of this.modulesManager.legends()) {\n legend.data = this.getLegendData(legendType, this.mode !== \"integrated\");\n }\n this.dataProcessListeners.forEach(resolve => resolve());\n this.dataProcessListeners.clear();\n });\n }\n placeLabels() {\n const visibleSeries = [];\n const data = [];\n for (const series of this.series) {\n if (!series.visible) continue;\n const labelData = series.getLabelData();\n if (isPointLabelDatum(labelData == null ? void 0 : labelData[0])) {\n data.push(labelData);\n visibleSeries.push(series);\n }\n }\n const {\n seriesRect\n } = this;\n const {\n top,\n right,\n bottom,\n left\n } = this.seriesArea.padding;\n const labels = seriesRect && data.length > 0 ? placeLabels(data, {\n x: -left,\n y: -top,\n width: seriesRect.width + left + right,\n height: seriesRect.height + top + bottom\n }) : [];\n return new Map(labels.map((l, i) => [visibleSeries[i], l]));\n }\n getLegendData(legendType, warnConflicts) {\n var _a, _b, _c;\n const legendData = this.series.filter(s => s.properties.showInLegend).flatMap(s => s.getLegendData(legendType));\n const isCategoryLegendData = data => data.every(d => d.legendType === \"category\");\n if (warnConflicts && isCategoryLegendData(legendData)) {\n const seriesMarkerFills = {};\n const seriesTypeMap = new Map(this.series.map(s => [s.id, s.type]));\n for (const {\n seriesId,\n marker,\n label\n } of legendData) {\n if (marker.fill == null) continue;\n const seriesType = seriesTypeMap.get(seriesId);\n const markerFill = (_a = seriesMarkerFills[seriesType]) != null ? _a : seriesMarkerFills[seriesType] = {};\n (_c = markerFill[_b = label.text]) != null ? _c : markerFill[_b] = marker.fill;\n if (markerFill[label.text] !== marker.fill) {\n Logger.warnOnce(`legend item '${label.text}' has multiple fill colors, this may cause unexpected behaviour.`);\n }\n }\n }\n return legendData;\n }\n processLayout() {\n return __async(this, null, function* () {\n var _a;\n const oldRect = this.animationRect;\n yield this.performLayout();\n if (oldRect && !((_a = this.animationRect) == null ? void 0 : _a.equals(oldRect))) {\n this.ctx.animationManager.skipCurrentBatch();\n }\n this.debug(\"Chart.performUpdate() - seriesRect\", this.seriesRect);\n });\n }\n performLayout() {\n return __async(this, null, function* () {\n const {\n width,\n height\n } = this.ctx.scene;\n let ctx = {\n shrinkRect: new BBox(0, 0, width, height)\n };\n ctx = this.ctx.layoutService.dispatchPerformLayout(\"start-layout\", ctx);\n ctx = this.ctx.layoutService.dispatchPerformLayout(\"before-series\", ctx);\n const modulePromises = this.modulesManager.mapModules(m => __async(this, null, function* () {\n if (m.performLayout != null) {\n ctx = yield m.performLayout(ctx);\n }\n }));\n yield Promise.all(modulePromises);\n return ctx.shrinkRect;\n });\n }\n // x/y are local canvas coordinates in CSS pixels, not actual pixels\n pickSeriesNode(point, exactMatchOnly, maxDistance) {\n var _a, _b;\n const start = performance.now();\n const pickModes = exactMatchOnly ? [0 /* EXACT_SHAPE_MATCH */] : void 0;\n const reverseSeries = [...this.series].reverse();\n let result;\n for (const series of reverseSeries) {\n if (!series.visible || !series.rootGroup.visible) {\n continue;\n }\n const {\n match,\n distance: distance2\n } = (_a = series.pickNode(point, pickModes)) != null ? _a : {};\n if (!match || distance2 == null) {\n continue;\n }\n if ((!result || result.distance > distance2) && distance2 <= (maxDistance != null ? maxDistance : Infinity)) {\n result = {\n series,\n distance: distance2,\n datum: match\n };\n }\n if (distance2 === 0) {\n break;\n }\n }\n this.extraDebugStats[\"pickSeriesNode\"] = Math.round(((_b = this.extraDebugStats[\"pickSeriesNode\"]) != null ? _b : 0) + (performance.now() - start));\n return result;\n }\n onMouseMove(event) {\n this.lastInteractionEvent = event;\n this.pointerScheduler.schedule();\n this.extraDebugStats[\"mouseX\"] = event.offsetX;\n this.extraDebugStats[\"mouseY\"] = event.offsetY;\n this.update(6 /* SCENE_RENDER */);\n }\n onLeave(event) {\n if (!this.tooltip.pointerLeftOntoTooltip(event)) {\n this.resetPointer();\n this.update(6 /* SCENE_RENDER */);\n this.ctx.cursorManager.updateCursor(\"chart\");\n }\n }\n onBrowserFocus(event) {\n if (event.delta > 0) {\n this.focus.datum = void 0;\n this.focus.series = void 0;\n this.focus.datumIndex = 0;\n this.focus.seriesIndex = 0;\n } else {\n this.focus.datum = void 0;\n this.focus.series = void 0;\n this.focus.datumIndex = Infinity;\n this.focus.seriesIndex = Infinity;\n }\n }\n onAnimationStart() {\n if (this.focus.hasFocus) {\n this.onBlur();\n }\n }\n onBlur() {\n this.ctx.regionManager.updateFocusIndicatorRect(void 0);\n this.resetPointer();\n this.focus.hasFocus = false;\n }\n onTab(event) {\n this.handleFocus();\n event.consume();\n this.focus.hasFocus = true;\n }\n onNavVert(event) {\n this.focus.seriesIndex += event.delta;\n this.handleFocus();\n event.consume();\n }\n onNavHori(event) {\n this.focus.datumIndex += event.delta;\n this.handleFocus(event.delta);\n event.consume();\n }\n onSubmit(event) {\n const {\n series,\n datum\n } = this.focus;\n const sourceEvent = event.sourceEvent.sourceEvent;\n if (series !== void 0 && datum !== void 0) {\n series.fireNodeClickEvent(sourceEvent, datum);\n } else {\n this.fireEvent({\n type: \"click\",\n event: sourceEvent\n });\n }\n }\n onContextMenu(event) {\n this.ctx.tooltipManager.removeTooltip(this.id);\n const {\n Default: Default2,\n ContextMenu\n } = InteractionState;\n if (this.ctx.interactionManager.getState() & (Default2 | ContextMenu)) {\n this.checkSeriesNodeRange(event, () => {\n this.ctx.highlightManager.updateHighlight(this.id);\n });\n }\n }\n handleFocus(datumIndexDelta) {\n this.focus.hasFocus = true;\n const overlayFocus = this.overlays.getFocusInfo();\n if (overlayFocus == null) {\n this.handleSeriesFocus(datumIndexDelta != null ? datumIndexDelta : 0);\n } else {\n this.ctx.regionManager.updateFocusIndicatorRect(overlayFocus.rect);\n this.ctx.ariaAnnouncementService.announceValue(overlayFocus.text);\n }\n }\n handleSeriesFocus(datumIndexDelta) {\n const {\n series,\n seriesRect,\n focus\n } = this;\n const visibleSeries = series.filter(s => s.visible);\n if (visibleSeries.length === 0) return;\n focus.seriesIndex = clamp(0, focus.seriesIndex, visibleSeries.length - 1);\n focus.series = visibleSeries[focus.seriesIndex];\n const pick = focus.series.pickFocus({\n datumIndex: focus.datumIndex,\n datumIndexDelta,\n seriesRect\n });\n if (pick === void 0) return;\n const {\n datum,\n datumIndex\n } = pick;\n focus.datumIndex = datumIndex;\n focus.datum = datum;\n const keyboardEvent = makeKeyboardPointerEvent(this.ctx.regionManager, pick);\n if (keyboardEvent !== void 0) {\n this.lastInteractionEvent = keyboardEvent;\n const html = focus.series.getTooltipHtml(datum);\n const meta = TooltipManager.makeTooltipMeta(this.lastInteractionEvent, datum);\n this.ctx.highlightManager.updateHighlight(this.id, datum);\n this.ctx.tooltipManager.updateTooltip(this.id, meta, html);\n this.ctx.ariaAnnouncementService.announceValue(html.ariaLabel);\n }\n }\n static isHoverEvent(event) {\n return event !== void 0 && event.type === \"hover\";\n }\n handlePointer(event, redisplay) {\n if (this.ctx.interactionManager.getState() !== 16 /* Default */ || !_Chart.isHoverEvent(event)) {\n return;\n }\n const {\n lastPick,\n hoverRect\n } = this;\n const {\n offsetX,\n offsetY\n } = event;\n const disablePointer = (highlightOnly = false) => {\n if (lastPick) {\n this.resetPointer(highlightOnly);\n }\n };\n if (redisplay ? this.ctx.animationManager.isActive() : !(hoverRect == null ? void 0 : hoverRect.containsPoint(offsetX, offsetY))) {\n disablePointer();\n return;\n }\n this.handlePointerTooltip(event, disablePointer);\n this.handlePointerNode(event);\n }\n handlePointerTooltip(event, disablePointer) {\n const {\n lastPick,\n tooltip\n } = this;\n const {\n range: range3\n } = tooltip;\n const {\n offsetX,\n offsetY\n } = event;\n let pixelRange;\n if (isFiniteNumber(range3)) {\n pixelRange = range3;\n }\n const pick = this.pickSeriesNode({\n x: offsetX,\n y: offsetY\n }, range3 === \"exact\", pixelRange);\n if (!pick) {\n this.ctx.tooltipManager.removeTooltip(this.id);\n if (this.highlight.range === \"tooltip\") {\n disablePointer(true);\n }\n return;\n }\n const isNewDatum = this.highlight.range === \"node\" || !lastPick || lastPick !== pick.datum;\n let html;\n if (isNewDatum) {\n html = pick.series.getTooltipHtml(pick.datum);\n if (this.highlight.range === \"tooltip\") {\n this.ctx.highlightManager.updateHighlight(this.id, pick.datum);\n }\n }\n const isPixelRange = pixelRange != null;\n const tooltipEnabled = this.tooltip.enabled && pick.series.tooltipEnabled;\n const exactlyMatched = range3 === \"exact\" && pick.distance === 0;\n const rangeMatched = range3 === \"nearest\" || isPixelRange || exactlyMatched;\n const shouldUpdateTooltip = tooltipEnabled && rangeMatched && (!isNewDatum || html !== void 0);\n const meta = TooltipManager.makeTooltipMeta(event, pick.datum);\n if (shouldUpdateTooltip) {\n this.ctx.tooltipManager.updateTooltip(this.id, meta, html);\n }\n }\n handlePointerNode(event) {\n const found = this.checkSeriesNodeRange(event, (series, datum) => {\n if (series.hasEventListener(\"nodeClick\") || series.hasEventListener(\"nodeDoubleClick\")) {\n this.ctx.cursorManager.updateCursor(\"chart\", \"pointer\");\n }\n if (this.highlight.range === \"node\") {\n this.ctx.highlightManager.updateHighlight(this.id, datum);\n }\n });\n if (!found) {\n this.ctx.cursorManager.updateCursor(\"chart\");\n if (this.highlight.range === \"node\") {\n this.ctx.highlightManager.updateHighlight(this.id);\n }\n }\n }\n onClick(event) {\n if (this.checkSeriesNodeClick(event)) {\n this.update(4 /* SERIES_UPDATE */);\n return;\n }\n this.fireEvent({\n type: \"click\",\n event: event.sourceEvent\n });\n }\n onDoubleClick(event) {\n if (this.checkSeriesNodeDoubleClick(event)) {\n this.update(4 /* SERIES_UPDATE */);\n return;\n }\n this.fireEvent({\n type: \"doubleClick\",\n event: event.sourceEvent\n });\n }\n checkSeriesNodeClick(event) {\n return this.checkSeriesNodeRange(event, (series, datum) => series.fireNodeClickEvent(event.sourceEvent, datum));\n }\n checkSeriesNodeDoubleClick(event) {\n return this.checkSeriesNodeRange(event, (series, datum) => series.fireNodeDoubleClickEvent(event.sourceEvent, datum));\n }\n checkSeriesNodeRange(event, callback) {\n var _a;\n const nearestNode = this.pickSeriesNode({\n x: event.offsetX,\n y: event.offsetY\n }, false);\n const datum = nearestNode == null ? void 0 : nearestNode.datum;\n const nodeClickRange = datum == null ? void 0 : datum.series.properties.nodeClickRange;\n let pixelRange;\n if (isFiniteNumber(nodeClickRange)) {\n pixelRange = nodeClickRange;\n }\n let pickedNode = this.pickSeriesNode({\n x: event.offsetX,\n y: event.offsetY\n }, true);\n if (pickedNode) {\n this.ctx.highlightManager.updatePicked(this.id, pickedNode.datum);\n } else {\n this.ctx.highlightManager.updatePicked(this.id);\n }\n if (datum && nodeClickRange === \"nearest\") {\n callback(datum.series, datum);\n return true;\n }\n if (nodeClickRange !== \"exact\") {\n pickedNode = this.pickSeriesNode({\n x: event.offsetX,\n y: event.offsetY\n }, false, pixelRange);\n }\n if (!pickedNode) return false;\n const isPixelRange = pixelRange != null;\n const exactlyMatched = nodeClickRange === \"exact\" && pickedNode.distance === 0;\n if (isPixelRange || exactlyMatched) {\n const allMatch = event.pointerHistory === void 0 || ((_a = event.pointerHistory) == null ? void 0 : _a.every(pastEvent => {\n const historyPoint = {\n x: pastEvent.offsetX,\n y: pastEvent.offsetY\n };\n const historyNode = this.pickSeriesNode(historyPoint, false, pixelRange);\n return (historyNode == null ? void 0 : historyNode.datum) === (pickedNode == null ? void 0 : pickedNode.datum);\n }));\n if (allMatch) {\n callback(pickedNode.series, pickedNode.datum);\n return true;\n }\n }\n return false;\n }\n changeHighlightDatum(event) {\n var _a, _b;\n const seriesToUpdate = /* @__PURE__ */new Set();\n const {\n series: newSeries = void 0,\n datum: newDatum\n } = (_a = event.currentHighlight) != null ? _a : {};\n const {\n series: lastSeries = void 0,\n datum: lastDatum\n } = (_b = event.previousHighlight) != null ? _b : {};\n if (lastSeries) {\n seriesToUpdate.add(lastSeries);\n }\n if (newSeries) {\n seriesToUpdate.add(newSeries);\n }\n if ((lastSeries == null ? void 0 : lastSeries.properties.cursor) && lastDatum) {\n this.ctx.cursorManager.updateCursor(lastSeries.id);\n }\n if ((newSeries == null ? void 0 : newSeries.properties.cursor) && newDatum) {\n this.ctx.cursorManager.updateCursor(newSeries.id, newSeries.properties.cursor);\n }\n this.lastPick = event.currentHighlight;\n const updateAll = newSeries == null || lastSeries == null;\n if (updateAll) {\n this.update(4 /* SERIES_UPDATE */);\n } else {\n this.update(4 /* SERIES_UPDATE */, {\n seriesToUpdate\n });\n }\n }\n waitForUpdate(timeoutMs = 1e4, failOnTimeout = false) {\n return __async(this, null, function* () {\n const start = performance.now();\n if (this._pendingFactoryUpdatesCount > 0) {\n yield this.updateMutex.waitForClearAcquireQueue();\n }\n while (this.performUpdateType !== 7 /* NONE */) {\n if (performance.now() - start > timeoutMs) {\n const message = `Chart.waitForUpdate() timeout of ${timeoutMs} reached - first chart update taking too long.`;\n if (failOnTimeout) {\n throw new Error(message);\n } else {\n Logger.warnOnce(message);\n }\n }\n yield sleep(50);\n }\n yield this.updateMutex.waitForClearAcquireQueue();\n });\n }\n waitForDataProcess(timeout) {\n return new Promise(resolve => {\n this.dataProcessListeners.add(resolve);\n if (isNumber(timeout)) {\n setTimeout(() => {\n if (this.dataProcessListeners.has(resolve)) {\n this.dataProcessListeners.delete(resolve);\n resolve();\n }\n }, timeout);\n }\n });\n }\n getMinRects() {\n const {\n width,\n height\n } = this.ctx.scene;\n const minRects = this.series.map(series => series.getMinRects(width, height)).filter(isDefined);\n if (minRects.length === 0) return;\n let maxWidth = 0;\n let maxHeight = 0;\n let maxVisibleWidth = 0;\n let maxVisibleHeight = 0;\n for (const {\n minRect: minRect2,\n minVisibleRect: minVisibleRect2\n } of minRects) {\n maxWidth = Math.max(maxWidth, minRect2.width);\n maxHeight = Math.max(maxHeight, minRect2.height);\n maxVisibleWidth = Math.max(maxVisibleWidth, minVisibleRect2.width);\n maxVisibleHeight = Math.max(maxVisibleHeight, minVisibleRect2.height);\n }\n const minRect = new BBox(0, 0, maxWidth, maxHeight);\n let minVisibleRect = minRect.clone();\n if (maxVisibleWidth > 0 && maxVisibleHeight > 0) {\n minVisibleRect = new BBox(0, 0, maxVisibleWidth, maxVisibleHeight);\n }\n return {\n minRect,\n minVisibleRect\n };\n }\n filterMiniChartSeries(series) {\n return series == null ? void 0 : series.filter(s => s.showInMiniChart !== false);\n }\n applyOptions(chartOptions) {\n var _a, _b, _c, _d, _e;\n const oldOpts = this.processedOptions;\n const deltaOptions = chartOptions.diffOptions(oldOpts);\n const userOptions = chartOptions.userOptions;\n if (deltaOptions == null) return;\n debug(\"AgChartV2.updateDelta() - applying delta\", deltaOptions);\n const completeOptions = mergeDefaults(deltaOptions, oldOpts);\n const modulesChanged = this.applyModules(completeOptions);\n const skip = [\"type\", \"data\", \"series\", \"listeners\", \"theme\", \"legend.listeners\", \"navigator.miniChart.series\", \"navigator.miniChart.label\", \"axes\", \"topology\"];\n if (deltaOptions.listeners) {\n this.registerListeners(this, deltaOptions.listeners);\n }\n jsonApply(this, deltaOptions, {\n skip\n });\n let forceNodeDataRefresh = false;\n let seriesStatus = \"no-op\";\n if ((_a = deltaOptions.series) == null ? void 0 : _a.length) {\n seriesStatus = this.applySeries(this, deltaOptions.series, oldOpts == null ? void 0 : oldOpts.series);\n forceNodeDataRefresh = true;\n }\n if (seriesStatus === \"replaced\") {\n this.resetAnimations();\n }\n if (this.applyAxes(this, completeOptions, oldOpts, seriesStatus)) {\n forceNodeDataRefresh = true;\n }\n if (deltaOptions.data) {\n this.data = deltaOptions.data;\n }\n if (((_b = deltaOptions.legend) == null ? void 0 : _b.listeners) && this.modulesManager.isEnabled(\"legend\")) {\n Object.assign(this.legend.listeners, deltaOptions.legend.listeners);\n }\n if (deltaOptions.listeners) {\n this.updateAllSeriesListeners();\n }\n this.chartOptions = chartOptions;\n this.processedOptions = completeOptions;\n this.userOptions = mergeDefaults(userOptions, this.userOptions);\n const navigatorModule = this.modulesManager.getModule(\"navigator\");\n const zoomModule = this.modulesManager.getModule(\"zoom\");\n if (!(navigatorModule == null ? void 0 : navigatorModule.enabled) && !(zoomModule == null ? void 0 : zoomModule.enabled)) {\n this.ctx.zoomManager.updateZoom(\"chart\");\n }\n const miniChart = navigatorModule == null ? void 0 : navigatorModule.miniChart;\n const miniChartSeries = (_e = (_d = (_c = completeOptions.navigator) == null ? void 0 : _c.miniChart) == null ? void 0 : _d.series) != null ? _e : completeOptions.series;\n if ((miniChart == null ? void 0 : miniChart.enabled) === true && miniChartSeries != null) {\n this.applyMiniChartOptions(miniChart, miniChartSeries, completeOptions, oldOpts);\n } else if ((miniChart == null ? void 0 : miniChart.enabled) === false) {\n miniChart.series = [];\n miniChart.axes = [];\n }\n injectStyle(styles_default, \"chart\");\n this.ctx.annotationManager.setAnnotationStyles(chartOptions.annotationThemes);\n forceNodeDataRefresh || (forceNodeDataRefresh = this.shouldForceNodeDataRefresh(deltaOptions, seriesStatus));\n const majorChange = forceNodeDataRefresh || modulesChanged;\n const updateType = majorChange ? 0 /* FULL */ : 3 /* PERFORM_LAYOUT */;\n this.maybeResetAnimations(seriesStatus);\n debug(\"AgChartV2.applyChartOptions() - update type\", ChartUpdateType[updateType], {\n seriesStatus,\n forceNodeDataRefresh\n });\n this.update(updateType, {\n forceNodeDataRefresh,\n newAnimationBatch: true\n });\n }\n maybeResetAnimations(seriesStatus) {\n if (this.mode !== \"standalone\") return;\n switch (seriesStatus) {\n case \"series-grouping-change\":\n case \"replaced\":\n this.resetAnimations();\n break;\n default:\n }\n }\n shouldForceNodeDataRefresh(deltaOptions, seriesStatus) {\n const seriesDataUpdate = !!deltaOptions.data || seriesStatus === \"data-change\" || seriesStatus === \"replaced\";\n const legendKeys = legendRegistry.getKeys();\n const optionsHaveLegend = Object.values(legendKeys).some(legendKey => deltaOptions[legendKey] != null);\n const otherRefreshUpdate = deltaOptions.title != null && deltaOptions.subtitle != null;\n return seriesDataUpdate || optionsHaveLegend || otherRefreshUpdate;\n }\n applyMiniChartOptions(miniChart, miniChartSeries, completeOptions, oldOpts) {\n var _a, _b, _c, _d, _e;\n const oldSeries = (_c = (_b = (_a = oldOpts == null ? void 0 : oldOpts.navigator) == null ? void 0 : _a.miniChart) == null ? void 0 : _b.series) != null ? _c : oldOpts == null ? void 0 : oldOpts.series;\n const miniChartSeriesStatus = this.applySeries(miniChart, this.filterMiniChartSeries(miniChartSeries), this.filterMiniChartSeries(oldSeries));\n this.applyAxes(miniChart, completeOptions, oldOpts, miniChartSeriesStatus, [\"axes[].tick\", \"axes[].thickness\", \"axes[].title\", \"axes[].crosshair\", \"axes[].gridLine\", \"axes[].label\"]);\n const axes = miniChart.axes;\n const horizontalAxis = axes.find(axis => axis.direction === \"x\" /* X */);\n for (const axis of axes) {\n axis.gridLine.enabled = false;\n axis.label.enabled = axis === horizontalAxis;\n axis.tick.enabled = false;\n axis.interactionEnabled = false;\n }\n if (horizontalAxis != null) {\n const miniChartOpts = (_d = completeOptions.navigator) == null ? void 0 : _d.miniChart;\n const labelOptions = miniChartOpts == null ? void 0 : miniChartOpts.label;\n const intervalOptions = (_e = miniChartOpts == null ? void 0 : miniChartOpts.label) == null ? void 0 : _e.interval;\n horizontalAxis.line.enabled = false;\n horizontalAxis.label.set(without(labelOptions, [\"interval\", \"rotation\", \"minSpacing\", \"autoRotate\", \"autoRotateAngle\"]));\n horizontalAxis.tick.set(without(intervalOptions, [\"enabled\", \"width\", \"size\", \"color\", \"interval\", \"step\"]));\n const step = intervalOptions == null ? void 0 : intervalOptions.step;\n if (step != null) {\n horizontalAxis.tick.interval = step;\n }\n }\n }\n applyModules(options) {\n var _a;\n const {\n type: chartType2\n } = this.constructor;\n let modulesChanged = false;\n for (const module of moduleRegistry.byType(\"root\", \"legend\")) {\n const isConfigured = options[module.optionsKey] != null;\n const shouldBeEnabled = isConfigured && module.chartTypes.includes(chartType2);\n if (shouldBeEnabled === this.modulesManager.isEnabled(module)) continue;\n if (shouldBeEnabled) {\n this.modulesManager.addModule(module, m => new m.instanceConstructor(this.getModuleContext()));\n if (module.type === \"legend\") {\n (_a = this.modulesManager.getModule(module)) == null ? void 0 : _a.attachLegend(this.ctx.scene);\n }\n this[module.optionsKey] = this.modulesManager.getModule(module);\n } else {\n this.modulesManager.removeModule(module);\n delete this[module.optionsKey];\n }\n modulesChanged = true;\n }\n return modulesChanged;\n }\n applySeries(chart, optSeries, oldOptSeries) {\n var _a;\n if (!optSeries) {\n return \"no-change\";\n }\n const matchResult = matchSeriesOptions(chart.series, optSeries, oldOptSeries);\n if (matchResult.status === \"no-overlap\") {\n debug(`AgChartV2.applySeries() - creating new series instances, status: ${matchResult.status}`, matchResult);\n chart.series = optSeries.map(opts => this.createSeries(opts));\n return \"replaced\";\n }\n debug(`AgChartV2.applySeries() - matchResult`, matchResult);\n const seriesInstances = [];\n let dataChanged = false;\n let groupingChanged = false;\n let isUpdated = false;\n for (const change of matchResult.changes) {\n groupingChanged || (groupingChanged = change.status === \"series-grouping\");\n dataChanged || (dataChanged = ((_a = change.diff) == null ? void 0 : _a.data) != null);\n isUpdated || (isUpdated = change.status !== \"no-op\");\n switch (change.status) {\n case \"add\":\n const newSeries = this.createSeries(change.opts);\n seriesInstances.push(newSeries);\n debug(`AgChartV2.applySeries() - created new series`, newSeries);\n break;\n case \"remove\":\n debug(`AgChartV2.applySeries() - removing series at previous idx ${change.idx}`, change.series);\n break;\n case \"no-op\":\n seriesInstances.push(change.series);\n debug(`AgChartV2.applySeries() - no change to series at previous idx ${change.idx}`, change.series);\n break;\n case \"series-grouping\":\n case \"update\":\n default:\n const {\n series,\n diff: diff2,\n idx\n } = change;\n debug(`AgChartV2.applySeries() - applying series diff previous idx ${idx}`, diff2, series);\n this.applySeriesValues(series, diff2);\n series.markNodeDataDirty();\n seriesInstances.push(series);\n }\n }\n for (let idx = 0; idx < seriesInstances.length; idx++) {\n seriesInstances[idx]._declarationOrder = idx;\n }\n debug(`AgChartV2.applySeries() - final series instances`, seriesInstances);\n chart.series = seriesInstances;\n if (groupingChanged) {\n return \"series-grouping-change\";\n }\n if (dataChanged) {\n return \"data-change\";\n }\n return isUpdated ? \"updated\" : \"no-op\";\n }\n applyAxes(chart, options, oldOpts, seriesStatus, skip = []) {\n if (!(\"axes\" in options) || !options.axes) {\n return false;\n }\n skip = [\"axes[].type\", ...skip];\n const {\n axes\n } = options;\n const forceRecreate = seriesStatus === \"replaced\";\n const matchingTypes = !forceRecreate && chart.axes.length === axes.length && chart.axes.every((a, i) => a.type === axes[i].type);\n if (matchingTypes && isAgCartesianChartOptions(oldOpts)) {\n chart.axes.forEach((axis, index) => {\n var _a, _b;\n const previousOpts = (_b = (_a = oldOpts.axes) == null ? void 0 : _a[index]) != null ? _b : {};\n const axisDiff = jsonDiff(previousOpts, axes[index]);\n debug(`AgChartV2.applyAxes() - applying axis diff idx ${index}`, axisDiff);\n const path = `axes[${index}]`;\n jsonApply(axis, axisDiff, __spreadProps(__spreadValues({}, JSON_APPLY_PLUGINS), {\n path,\n skip\n }));\n });\n return true;\n }\n debug(`AgChartV2.applyAxes() - creating new axes instances; seriesStatus: ${seriesStatus}`);\n chart.axes = this.createAxis(axes, skip);\n return true;\n }\n createSeries(seriesOptions) {\n const seriesInstance = seriesRegistry.create(seriesOptions.type, this.getModuleContext());\n this.applySeriesOptionModules(seriesInstance, seriesOptions);\n this.applySeriesValues(seriesInstance, seriesOptions);\n return seriesInstance;\n }\n applySeriesOptionModules(series, options) {\n const moduleContext = series.createModuleContext();\n const moduleMap = series.getModuleMap();\n for (const module of moduleRegistry.byType(\"series-option\")) {\n if (module.optionsKey in options && module.seriesTypes.includes(series.type)) {\n moduleMap.addModule(module, m => new m.instanceConstructor(moduleContext));\n }\n }\n }\n applySeriesValues(target, options) {\n const moduleMap = target.getModuleMap();\n const _a = options,\n {\n type: _,\n data,\n listeners,\n seriesGrouping,\n showInMiniChart: __\n } = _a,\n seriesOptions = __objRest(_a, [\"type\", \"data\", \"listeners\", \"seriesGrouping\", \"showInMiniChart\"]);\n for (const moduleDef of EXPECTED_ENTERPRISE_MODULES) {\n if (moduleDef.type !== \"series-option\") continue;\n if (moduleDef.optionsKey in seriesOptions) {\n const module = moduleMap.getModule(moduleDef.optionsKey);\n const moduleOptions = seriesOptions[moduleDef.optionsKey];\n delete seriesOptions[moduleDef.optionsKey];\n module.properties.set(moduleOptions);\n }\n }\n target.properties.set(seriesOptions);\n if (\"data\" in options) {\n target.setOptionsData(data);\n }\n if (listeners) {\n this.registerListeners(target, listeners);\n }\n if (\"seriesGrouping\" in options) {\n if (seriesGrouping == null) {\n target.seriesGrouping = void 0;\n } else {\n target.seriesGrouping = __spreadValues(__spreadValues({}, target.seriesGrouping), seriesGrouping);\n }\n }\n }\n createAxis(options, skip) {\n const guesser = new AxisPositionGuesser();\n const moduleContext = this.getModuleContext();\n for (let index = 0; index < options.length; index++) {\n const axisOptions = options[index];\n const axis = axisRegistry.create(axisOptions.type, moduleContext);\n this.applyAxisModules(axis, axisOptions);\n jsonApply(axis, axisOptions, __spreadProps(__spreadValues({}, JSON_APPLY_PLUGINS), {\n path: `axes[${index}]`,\n skip\n }));\n guesser.push(axis, axisOptions);\n }\n return guesser.guessInvalidPositions();\n }\n applyAxisModules(axis, options) {\n const moduleContext = axis.createModuleContext();\n const moduleMap = axis.getModuleMap();\n for (const module of moduleRegistry.byType(\"axis-option\")) {\n const shouldBeEnabled = options[module.optionsKey] != null;\n if (shouldBeEnabled === moduleMap.isEnabled(module)) continue;\n if (shouldBeEnabled) {\n moduleMap.addModule(module, m => new m.instanceConstructor(moduleContext));\n axis[module.optionsKey] = moduleMap.getModule(module);\n } else {\n moduleMap.removeModule(module);\n delete axis[module.optionsKey];\n }\n }\n }\n registerListeners(source, listeners) {\n source.clearEventListeners();\n for (const [property, listener] of Object.entries(listeners)) {\n if (isFunction(listener)) {\n source.addEventListener(property, listener);\n }\n }\n }\n};\n_Chart.chartsInstances = /* @__PURE__ */new WeakMap();\n__decorateClass([ActionOnSet({\n newValue(value) {\n if (this.destroyed) return;\n value.setAttribute(\"data-ag-charts\", \"\");\n value.appendChild(this.element);\n _Chart.chartsInstances.set(value, this);\n },\n oldValue(value) {\n value.removeAttribute(\"data-ag-charts\");\n value.removeChild(this.element);\n _Chart.chartsInstances.delete(value);\n }\n})], _Chart.prototype, \"container\", 2);\n__decorateClass([ActionOnSet({\n newValue(value) {\n this.resize(value, void 0, \"width option\");\n }\n})], _Chart.prototype, \"width\", 2);\n__decorateClass([ActionOnSet({\n newValue(value) {\n this.resize(void 0, value, \"height option\");\n }\n})], _Chart.prototype, \"height\", 2);\n__decorateClass([ActionOnSet({\n newValue(value) {\n this.onAutoSizeChange(value);\n }\n}), Validate(BOOLEAN)], _Chart.prototype, \"autoSize\", 2);\n__decorateClass([Validate(OBJECT)], _Chart.prototype, \"padding\", 2);\n__decorateClass([Validate(OBJECT)], _Chart.prototype, \"seriesArea\", 2);\n__decorateClass([Validate(OBJECT)], _Chart.prototype, \"title\", 2);\n__decorateClass([Validate(OBJECT)], _Chart.prototype, \"subtitle\", 2);\n__decorateClass([Validate(OBJECT)], _Chart.prototype, \"footnote\", 2);\n__decorateClass([Validate(OBJECT)], _Chart.prototype, \"keyboard\", 2);\n__decorateClass([Validate(UNION([\"standalone\", \"integrated\"], \"a chart mode\"))], _Chart.prototype, \"mode\", 2);\n__decorateClass([ActionOnSet({\n changeValue(newValue, oldValue) {\n this.onAxisChange(newValue, oldValue);\n }\n})], _Chart.prototype, \"axes\", 2);\n__decorateClass([ActionOnSet({\n changeValue(newValue, oldValue) {\n this.onSeriesChange(newValue, oldValue);\n }\n})], _Chart.prototype, \"series\", 2);\nvar Chart = _Chart;\n\n// packages/ag-charts-community/src/scene/polyRoots.ts\nfunction linearRoot(a, b) {\n const t = -b / a;\n return a !== 0 && t >= 0 && t <= 1 ? [t] : [];\n}\nfunction quadraticRoots(a, b, c) {\n if (a === 0) {\n return linearRoot(b, c);\n }\n const D = b * b - 4 * a * c;\n const roots = [];\n if (D === 0) {\n const t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n } else if (D > 0) {\n const rD = Math.sqrt(D);\n const t1 = (-b - rD) / (2 * a);\n const 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 return roots;\n}\nfunction cubicRoots(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots(b, c, d);\n }\n const A = b / a;\n const B = c / a;\n const C = d / a;\n const Q = (3 * B - A * A) / 9;\n const R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n const D = Q * Q * Q + R * R;\n const third = 1 / 3;\n const roots = [];\n if (D >= 0) {\n const rD = Math.sqrt(D);\n const S = Math.sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n const T = Math.sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n const Im = Math.abs(Math.sqrt(3) * (S - T) / 2);\n const t = -third * A + (S + T);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n const t2 = -third * A - (S + T) / 2;\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n } else {\n const theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n const thirdA = third * A;\n const twoSqrtQ = 2 * Math.sqrt(-Q);\n const t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n const t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n const 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// packages/ag-charts-community/src/scene/intersection.ts\nfunction segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n const d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) {\n return 0;\n }\n const ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n const ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return 1;\n }\n return 0;\n}\nfunction cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n let intersections = 0;\n const A = y1 - y2;\n const B = x2 - x1;\n const C = x1 * (y2 - y1) - y1 * (x2 - x1);\n const bx = bezierCoefficients(px1, px2, px3, px4);\n const by = bezierCoefficients(py1, py2, py3, py4);\n const a = A * bx[0] + B * by[0];\n const b = A * bx[1] + B * by[1];\n const c = A * bx[2] + B * by[2];\n const d = A * bx[3] + B * by[3] + C;\n const roots = cubicRoots(a, b, c, d);\n for (const t of roots) {\n const tt = t * t;\n const ttt = t * tt;\n const x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n const y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n let s;\n if (x1 === x2) {\n s = (y - y1) / (y2 - y1);\n } else {\n s = (x - x1) / (x2 - x1);\n }\n if (s >= 0 && s <= 1) {\n intersections++;\n }\n }\n return intersections;\n}\nfunction bezierCoefficients(P1, P2, P3, P4) {\n return [\n // Bézier expressed as matrix operations:\n -P1 + 3 * P2 - 3 * P3 + P4,\n // |-1 3 -3 1| |P1|\n 3 * P1 - 6 * P2 + 3 * P3,\n // [t^3 t^2 t 1] | 3 -6 3 0| |P2|\n -3 * P1 + 3 * P2,\n // |-3 3 0 0| |P3|\n P1\n // | 1 0 0 0| |P4|\n ];\n}\nfunction arcIntersections(cx, cy, r, startAngle, endAngle, counterClockwise, x1, y1, x2, y2) {\n if (isNaN(cx) || isNaN(cy)) {\n return 0;\n }\n if (counterClockwise) {\n [endAngle, startAngle] = [startAngle, endAngle];\n }\n const k = (y2 - y1) / (x2 - x1);\n const y0 = y1 - k * x1;\n const a = Math.pow(k, 2) + 1;\n const b = 2 * (k * (y0 - cy) - cx);\n const c = Math.pow(cx, 2) + Math.pow(y0 - cy, 2) - Math.pow(r, 2);\n const d = Math.pow(b, 2) - 4 * a * c;\n if (d < 0) {\n return 0;\n }\n const i1x = (-b + Math.sqrt(d)) / 2 / a;\n const i2x = (-b - Math.sqrt(d)) / 2 / a;\n let intersections = 0;\n [i1x, i2x].forEach(x => {\n const isXInsideLine = x >= Math.min(x1, x2) && x <= Math.max(x1, x2);\n if (!isXInsideLine) {\n return;\n }\n const y = k * x + y0;\n const adjacent = x - cx;\n const opposite = y - cy;\n const angle = Math.atan2(opposite, adjacent);\n if (isBetweenAngles(angle, startAngle, endAngle)) {\n intersections++;\n }\n });\n return intersections;\n}\n\n// packages/ag-charts-community/src/scene/extendedPath2D.ts\nvar ExtendedPath2D = class {\n constructor() {\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.path2d = new Path2D();\n this.previousCommands = [];\n this.previousParams = [];\n this.previousClosedPath = false;\n this.commands = [];\n this.params = [];\n this.openedPath = false;\n this.closedPath = false;\n }\n isDirty() {\n return this.closedPath !== this.previousClosedPath || this.previousCommands.length !== this.commands.length || this.previousParams.length !== this.params.length || this.previousCommands.toString() !== this.commands.toString() || this.previousParams.toString() !== this.params.toString();\n }\n getPath2D() {\n return this.path2d;\n }\n moveTo(x, y) {\n this.openedPath = true;\n this.path2d.moveTo(x, y);\n this.commands.push(0 /* Move */);\n this.params.push(x, y);\n }\n lineTo(x, y) {\n if (this.openedPath) {\n this.path2d.lineTo(x, y);\n this.commands.push(1 /* Line */);\n this.params.push(x, y);\n } else {\n this.moveTo(x, y);\n }\n }\n rect(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 roundRect(x, y, width, height, radii) {\n radii = Math.min(radii, width / 2, height / 2);\n this.moveTo(x, y + radii);\n this.arc(x + radii, y + radii, radii, Math.PI, 1.5 * Math.PI);\n this.lineTo(x + radii, y);\n this.lineTo(x + width - radii, y);\n this.arc(x + width - radii, y + radii, radii, 1.5 * Math.PI, 2 * Math.PI);\n this.lineTo(x + width, y + radii);\n this.lineTo(x + width, y + height - radii);\n this.arc(x + width - radii, y + height - radii, radii, 0, Math.PI / 2);\n this.lineTo(x + width - radii, y + height);\n this.lineTo(x + radii, y + height);\n this.arc(x + +radii, y + height - radii, radii, Math.PI / 2, Math.PI);\n this.lineTo(x, y + height - radii);\n this.closePath();\n }\n arc(x, y, r, sAngle, eAngle, counterClockwise) {\n this.openedPath = true;\n this.path2d.arc(x, y, r, sAngle, eAngle, counterClockwise);\n this.commands.push(2 /* Arc */);\n this.params.push(x, y, r, sAngle, eAngle, counterClockwise ? 1 : 0);\n }\n cubicCurveTo(cx1, cy1, cx2, cy2, x, y) {\n if (!this.openedPath) {\n this.moveTo(cx1, cy1);\n }\n this.path2d.bezierCurveTo(cx1, cy1, cx2, cy2, x, y);\n this.commands.push(3 /* Curve */);\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n }\n closePath() {\n if (this.openedPath) {\n this.path2d.closePath();\n this.commands.push(4 /* ClosePath */);\n this.openedPath = false;\n this.closedPath = true;\n }\n }\n clear(trackChanges) {\n if (trackChanges) {\n this.previousCommands = this.commands;\n this.previousParams = this.params;\n this.previousClosedPath = this.closedPath;\n }\n this.path2d = new Path2D();\n this.openedPath = false;\n this.closedPath = false;\n this.commands = [];\n this.params = [];\n }\n isPointInPath(x, y) {\n const commands = this.commands;\n const params = this.params;\n const cn = commands.length;\n const ox = -1e4;\n const oy = -1e4;\n let sx = NaN;\n let sy = NaN;\n let px = 0;\n let py = 0;\n let intersectionCount = 0;\n for (let ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 0 /* Move */:\n intersectionCount += segmentIntersection(sx, sy, px, py, ox, oy, x, y);\n px = params[pi++];\n sx = px;\n py = params[pi++];\n sy = py;\n break;\n case 1 /* Line */:\n intersectionCount += segmentIntersection(px, py, params[pi++], params[pi++], ox, oy, x, y);\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case 3 /* Curve */:\n intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], params[pi++], ox, oy, x, y);\n px = params[pi - 2];\n py = params[pi - 1];\n break;\n case 2 /* Arc */:\n const cx = params[pi++];\n const cy = params[pi++];\n const r = params[pi++];\n const startAngle = params[pi++];\n const endAngle = params[pi++];\n const counterClockwise = Boolean(params[pi++]);\n intersectionCount += arcIntersections(cx, cy, r, startAngle, endAngle, counterClockwise, ox, oy, x, y);\n if (!isNaN(sx)) {\n const startX = cx + Math.cos(startAngle) * r;\n const startY = cy + Math.sin(startAngle) * r;\n intersectionCount += segmentIntersection(px, py, startX, startY, ox, oy, x, y);\n }\n px = cx + Math.cos(endAngle) * r;\n py = cy + Math.sin(endAngle) * r;\n break;\n case 4 /* ClosePath */:\n intersectionCount += segmentIntersection(sx, sy, px, py, ox, oy, x, y);\n break;\n }\n }\n return intersectionCount % 2 === 1;\n }\n distanceSquared(x, y) {\n let best = Infinity;\n const commands = this.commands;\n const params = this.params;\n const cn = commands.length;\n let sx = NaN;\n let sy = NaN;\n let px = 0;\n let py = 0;\n for (let ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 0 /* Move */:\n px = sx = params[pi++];\n py = sy = params[pi++];\n break;\n case 1 /* Line */:\n {\n const nx = params[pi++];\n const ny = params[pi++];\n best = lineDistanceSquared(x, y, px, py, nx, ny, best);\n break;\n }\n case 3 /* Curve */:\n Logger.error(\"Command.Curve distanceSquare not implemented\");\n break;\n case 2 /* Arc */:\n {\n const cx = params[pi++];\n const cy = params[pi++];\n const r = params[pi++];\n const startAngle = params[pi++];\n const endAngle = params[pi++];\n const startX = cx + Math.cos(startAngle) * r;\n const startY = cy + Math.sin(startAngle) * r;\n const counterClockwise = Boolean(params[pi++]);\n best = lineDistanceSquared(x, y, px, py, startX, startY, best);\n best = arcDistanceSquared(x, y, cx, cy, r, startAngle, endAngle, counterClockwise, best);\n px = cx + Math.cos(endAngle) * r;\n py = cy + Math.sin(endAngle) * r;\n break;\n }\n case 4 /* ClosePath */:\n best = lineDistanceSquared(x, y, px, py, sx, sy, best);\n break;\n }\n }\n return best;\n }\n getPoints() {\n const {\n commands,\n params\n } = this;\n const coords = [];\n let pi = 0;\n for (let ci = 0; ci < commands.length; ci++) {\n switch (commands[ci]) {\n case 0 /* Move */:\n case 1 /* Line */:\n coords.push({\n x: params[pi++],\n y: params[pi++]\n });\n break;\n case 3 /* Curve */:\n pi += 4;\n coords.push({\n x: params[pi++],\n y: params[pi++]\n });\n break;\n case 2 /* Arc */:\n coords.push({\n x: params[pi++],\n y: params[pi++]\n });\n pi += 4;\n break;\n case 4 /* ClosePath */:\n break;\n }\n }\n return coords;\n }\n};\n\n// packages/ag-charts-community/src/scene/shape/path.ts\nfunction ScenePathChangeDetection(opts) {\n const {\n redraw = 3 /* MAJOR */,\n changeCb,\n convertor\n } = opts != null ? opts : {};\n return SceneChangeDetection({\n redraw,\n type: \"path\",\n convertor,\n changeCb\n });\n}\nvar Path = class extends Shape {\n constructor() {\n super(...arguments);\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 ExtendedPath2D();\n this._clipX = NaN;\n this._clipY = NaN;\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 set clipX(value) {\n this._clipX = value;\n this.dirtyPath = true;\n }\n set clipY(value) {\n this._clipY = value;\n this.dirtyPath = true;\n }\n set dirtyPath(value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.markDirty(this, 3 /* MAJOR */);\n }\n }\n }\n get dirtyPath() {\n return this._dirtyPath;\n }\n checkPathDirty() {\n var _a, _b, _c, _d;\n if (this._dirtyPath) {\n return;\n }\n this.dirtyPath = this.path.isDirty() || ((_b = (_a = this.fillShadow) == null ? void 0 : _a.isDirty()) != null ? _b : false) || ((_d = (_c = this._clipPath) == null ? void 0 : _c.isDirty()) != null ? _d : false);\n }\n isPointInPath(x, y) {\n const point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n }\n distanceSquared(x, y) {\n const point = this.transformPoint(x, y);\n return this.path.distanceSquared(point.x, point.y);\n }\n isDirtyPath() {\n return false;\n }\n updatePath() {}\n render(renderCtx) {\n var _a, _b, _c, _d, _e;\n const {\n ctx,\n forceRender,\n stats\n } = renderCtx;\n if (this.dirty === 0 /* 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 (!isNaN(this._clipX) && !isNaN(this._clipY) && this.clipMode != null) {\n ctx.save();\n const margin = this.strokeWidth / 2;\n (_a = this._clipPath) != null ? _a : this._clipPath = new ExtendedPath2D();\n this._clipPath.clear();\n this._clipPath.rect(-margin, -margin, this._clipX + margin, this._clipY + margin + margin);\n if (this.clipMode === \"normal\") {\n ctx.clip((_b = this._clipPath) == null ? void 0 : _b.getPath2D());\n }\n if (this._clipX > 0 && this._clipY > 0) {\n this.drawPath(ctx);\n }\n if (this.clipMode === \"punch-out\") {\n ctx.clip((_c = this._clipPath) == null ? void 0 : _c.getPath2D());\n const {\n x = -1e4,\n y = -1e4,\n width = 2e4,\n height = 2e4\n } = (_d = this.computeBBox()) != null ? _d : {};\n ctx.clearRect(x, y, width, height);\n }\n ctx.restore();\n } else {\n this.drawPath(ctx);\n }\n (_e = this.fillShadow) == null ? void 0 : _e.markClean();\n super.render(renderCtx);\n }\n drawPath(ctx) {\n this.fillStroke(ctx, this.path.getPath2D());\n }\n};\nPath.className = \"Path\";\n__decorateClass([ScenePathChangeDetection()], Path.prototype, \"clipMode\", 2);\n__decorateClass([ScenePathChangeDetection()], Path.prototype, \"clipX\", 1);\n__decorateClass([ScenePathChangeDetection()], Path.prototype, \"clipY\", 1);\n\n// packages/ag-charts-community/src/scene/util/quadtree.ts\nvar QuadtreeNearest = class {\n constructor(capacity, maxdepth, boundary) {\n this.root = new QuadtreeNodeNearest(capacity, maxdepth, boundary);\n }\n clear(boundary) {\n this.root.clear(boundary);\n }\n addValue(hitTester, value) {\n const elem = {\n hitTester,\n value,\n distanceSquared: (x, y) => {\n return hitTester.distanceSquared(x, y);\n }\n };\n this.root.addElem(elem);\n }\n find(x, y) {\n const arg = {\n best: {\n nearest: void 0,\n distanceSquared: Infinity\n }\n };\n this.root.find(x, y, arg);\n return arg.best;\n }\n};\nvar QuadtreeSubdivisions = class {\n constructor(nw, ne, sw, se) {\n this.nw = nw;\n this.ne = ne;\n this.sw = sw;\n this.se = se;\n }\n addElem(elem) {\n this.nw.addElem(elem);\n this.ne.addElem(elem);\n this.sw.addElem(elem);\n this.se.addElem(elem);\n }\n find(x, y, arg) {\n this.nw.find(x, y, arg);\n this.ne.find(x, y, arg);\n this.sw.find(x, y, arg);\n this.se.find(x, y, arg);\n }\n};\nvar QuadtreeNode = class {\n constructor(capacity, maxdepth, boundary) {\n this.capacity = capacity;\n this.maxdepth = maxdepth;\n this.boundary = boundary != null ? boundary : BBox.NaN;\n this.elems = [];\n this.subdivisions = void 0;\n }\n clear(boundary) {\n this.elems.length = 0;\n this.boundary = boundary;\n this.subdivisions = void 0;\n }\n addElem(e) {\n if (this.addCondition(e)) {\n if (this.subdivisions === void 0) {\n if (this.maxdepth === 0 || this.elems.length < this.capacity) {\n this.elems.push(e);\n } else {\n this.subdivide(e);\n }\n } else {\n this.subdivisions.addElem(e);\n }\n }\n }\n find(x, y, arg) {\n if (this.findCondition(x, y, arg)) {\n if (this.subdivisions === void 0) {\n this.findAction(x, y, arg);\n } else {\n this.subdivisions.find(x, y, arg);\n }\n }\n }\n subdivide(newElem) {\n this.subdivisions = this.makeSubdivisions();\n for (const e of this.elems) {\n this.subdivisions.addElem(e);\n }\n this.subdivisions.addElem(newElem);\n this.elems.length = 0;\n }\n makeSubdivisions() {\n const {\n x,\n y,\n width,\n height\n } = this.boundary;\n const {\n capacity\n } = this;\n const depth = this.maxdepth - 1;\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const nwBoundary = new BBox(x, y, halfWidth, halfHeight);\n const neBoundary = new BBox(x + halfWidth, y, halfWidth, halfHeight);\n const swBoundary = new BBox(x, y + halfHeight, halfWidth, halfHeight);\n const seBoundary = new BBox(x + halfWidth, y + halfHeight, halfWidth, halfHeight);\n return new QuadtreeSubdivisions(this.child(capacity, depth, nwBoundary), this.child(capacity, depth, neBoundary), this.child(capacity, depth, swBoundary), this.child(capacity, depth, seBoundary));\n }\n};\nvar QuadtreeNodeNearest = class _QuadtreeNodeNearest extends QuadtreeNode {\n addCondition(e) {\n const {\n x,\n y\n } = e.hitTester.midPoint;\n return this.boundary.containsPoint(x, y);\n }\n findCondition(x, y, arg) {\n const {\n best\n } = arg;\n return best.distanceSquared !== 0 && this.boundary.distanceSquared(x, y) < best.distanceSquared;\n }\n findAction(x, y, arg) {\n const other = nearestSquared(x, y, this.elems, arg.best.distanceSquared);\n if (other.nearest !== void 0 && other.distanceSquared < arg.best.distanceSquared) {\n arg.best = other;\n }\n }\n child(capacity, depth, boundary) {\n return new _QuadtreeNodeNearest(capacity, depth, boundary);\n }\n};\n\n// packages/ag-charts-community/src/chart/marker/marker.ts\nvar Marker = class extends Path {\n constructor() {\n super(...arguments);\n this.x = 0;\n this.y = 0;\n this.size = 12;\n }\n computeBBox() {\n const {\n x,\n y,\n size\n } = this;\n const {\n center\n } = this.constructor;\n return new BBox(x - size * center.x, y - size * center.y, size, size);\n }\n applyPath(s, moves) {\n const {\n path\n } = this;\n let {\n x,\n y\n } = this;\n if (this.repeat != null) {\n x = 0;\n y = 0;\n }\n path.clear();\n for (const {\n x: mx,\n y: my,\n t\n } of moves) {\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 path.closePath();\n }\n executeFill(ctx, path) {\n if (!path) return;\n if (this.repeat == null) {\n return super.executeFill(ctx, path);\n }\n ctx.save();\n let x = this.translationX;\n let y = this.translationY;\n for (const translation of this.repeat) {\n ctx.translate(translation.x - x, translation.y - y);\n ctx.fill(path);\n x = translation.x;\n y = translation.y;\n }\n ctx.restore();\n }\n executeStroke(ctx, path) {\n if (!path) return;\n if (this.repeat == null) {\n return super.executeStroke(ctx, path);\n }\n ctx.save();\n let x = this.translationX;\n let y = this.translationY;\n for (const translation of this.repeat) {\n ctx.translate(translation.x - x, translation.y - y);\n ctx.stroke(path);\n x = translation.x;\n y = translation.y;\n }\n ctx.restore();\n }\n};\nMarker.center = {\n x: 0.5,\n y: 0.5\n};\n__decorateClass([ScenePathChangeDetection()], Marker.prototype, \"x\", 2);\n__decorateClass([ScenePathChangeDetection()], Marker.prototype, \"y\", 2);\n__decorateClass([ScenePathChangeDetection({\n convertor: Math.abs\n})], Marker.prototype, \"size\", 2);\n__decorateClass([ScenePathChangeDetection()], Marker.prototype, \"repeat\", 2);\n\n// packages/ag-charts-community/src/chart/marker/circle.ts\nvar Circle = class extends Marker {\n updatePath() {\n const {\n x,\n y,\n path,\n size\n } = this;\n const r = size / 2;\n path.clear();\n path.arc(x, y, r, 0, Math.PI * 2);\n path.closePath();\n }\n};\nCircle.className = \"Circle\";\n\n// packages/ag-charts-community/src/chart/marker/cross.ts\nvar _Cross = class _Cross extends Marker {\n updatePath() {\n const s = this.size / 4.2;\n super.applyPath(s, _Cross.moves);\n }\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}];\nvar Cross = _Cross;\n\n// packages/ag-charts-community/src/chart/marker/diamond.ts\nvar _Diamond = class _Diamond extends Marker {\n updatePath() {\n const s = this.size / 2;\n super.applyPath(s, _Diamond.moves);\n }\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}];\nvar Diamond = _Diamond;\n\n// packages/ag-charts-community/src/chart/marker/heart.ts\nvar Heart = class extends Marker {\n rad(degree) {\n return degree / 180 * Math.PI;\n }\n updatePath() {\n const {\n x,\n path,\n size,\n rad\n } = this;\n const r = size / 4;\n const y = this.y + r / 2;\n path.clear();\n path.arc(x - r, y - r, r, rad(130), rad(330));\n path.arc(x + r, y - r, r, rad(220), rad(50));\n path.lineTo(x, y + r);\n path.closePath();\n }\n};\nHeart.className = \"Heart\";\n\n// packages/ag-charts-community/src/chart/marker/pin.ts\nvar Pin = class extends Marker {\n updatePath() {\n const {\n path,\n x,\n y\n } = this;\n const s = this.size;\n const cx = 0.5;\n const cy = 1;\n path.clear();\n path.moveTo(x + (0.15625 - cx) * s, y + (0.34375 - cy) * s);\n path.cubicCurveTo(x + (0.15625 - cx) * s, y + (0.151491 - cy) * s, x + (0.307741 - cx) * s, y + (0 - cy) * s, x + (0.5 - cx) * s, y + (0 - cy) * s);\n path.cubicCurveTo(x + (0.692259 - cx) * s, y + (0 - cy) * s, x + (0.84375 - cx) * s, y + (0.151491 - cy) * s, x + (0.84375 - cx) * s, y + (0.34375 - cy) * s);\n path.cubicCurveTo(x + (0.84375 - cx) * s, y + (0.493824 - cy) * s, x + (0.784625 - cx) * s, y + (0.600181 - cy) * s, x + (0.716461 - cx) * s, y + (0.695393 - cy) * s);\n path.cubicCurveTo(x + (0.699009 - cx) * s, y + (0.719769 - cy) * s, x + (0.681271 - cx) * s, y + (0.743104 - cy) * s, x + (0.663785 - cx) * s, y + (0.766105 - cy) * s);\n path.cubicCurveTo(x + (0.611893 - cx) * s, y + (0.834367 - cy) * s, x + (0.562228 - cx) * s, y + (0.899699 - cy) * s, x + (0.528896 - cx) * s, y + (0.980648 - cy) * s);\n path.cubicCurveTo(x + (0.524075 - cx) * s, y + (0.992358 - cy) * s, x + (0.512663 - cx) * s, y + (1 - cy) * s, x + (0.5 - cx) * s, y + (1 - cy) * s);\n path.cubicCurveTo(x + (0.487337 - cx) * s, y + (1 - cy) * s, x + (0.475925 - cx) * s, y + (0.992358 - cy) * s, x + (0.471104 - cx) * s, y + (0.980648 - cy) * s);\n path.cubicCurveTo(x + (0.487337 - cx) * s, y + (1 - cy) * s, x + (0.475925 - cx) * s, y + (0.992358 - cy) * s, x + (0.471104 - cx) * s, y + (0.980648 - cy) * s);\n path.cubicCurveTo(x + (0.437772 - cx) * s, y + (0.899699 - cy) * s, x + (0.388107 - cx) * s, y + (0.834367 - cy) * s, x + (0.336215 - cx) * s, y + (0.766105 - cy) * s);\n path.cubicCurveTo(x + (0.318729 - cx) * s, y + (0.743104 - cy) * s, x + (0.300991 - cx) * s, y + (0.719769 - cy) * s, x + (0.283539 - cx) * s, y + (0.695393 - cy) * s);\n path.cubicCurveTo(x + (0.215375 - cx) * s, y + (0.600181 - cy) * s, x + (0.15625 - cx) * s, y + (0.493824 - cy) * s, x + (0.15625 - cx) * s, y + (0.34375 - cy) * s);\n path.closePath();\n }\n};\nPin.className = \"MapPin\";\nPin.center = {\n x: 0.5,\n y: 1\n};\n\n// packages/ag-charts-community/src/chart/marker/plus.ts\nvar _Plus = class _Plus extends Marker {\n updatePath() {\n const s = this.size / 3;\n super.applyPath(s, _Plus.moves);\n }\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}];\nvar Plus = _Plus;\n\n// packages/ag-charts-community/src/chart/marker/square.ts\nvar Square = class extends Marker {\n updatePath() {\n const {\n path,\n x,\n y\n } = this;\n const 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};\nSquare.className = \"Square\";\n\n// packages/ag-charts-community/src/chart/marker/star.ts\nvar Star = class extends Marker {\n updatePath() {\n const {\n x,\n y,\n path,\n size\n } = this;\n const spikes = 5;\n const innerRadius = size / 2;\n const rotation = Math.PI / 2;\n path.clear();\n for (let i = 0; i < spikes * 2; i++) {\n const radius = i % 2 === 0 ? size : innerRadius;\n const angle = i * Math.PI / spikes - rotation;\n const xCoordinate = x + Math.cos(angle) * radius;\n const yCoordinate = y + Math.sin(angle) * radius;\n path.lineTo(xCoordinate, yCoordinate);\n }\n path.closePath();\n }\n};\nStar.className = \"Star\";\n\n// packages/ag-charts-community/src/chart/marker/triangle.ts\nvar _Triangle = class _Triangle extends Marker {\n updatePath() {\n const s = this.size * 1.1;\n super.applyPath(s, _Triangle.moves);\n }\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}];\nvar Triangle = _Triangle;\n\n// packages/ag-charts-community/src/chart/marker/util.ts\nvar MARKER_SHAPES = {\n circle: Circle,\n cross: Cross,\n diamond: Diamond,\n heart: Heart,\n pin: Pin,\n plus: Plus,\n square: Square,\n star: Star,\n triangle: Triangle\n};\nvar MARKER_SUPPORTED_SHAPES = Object.keys(MARKER_SHAPES);\nfunction isMarkerShape(shape) {\n return typeof shape === \"string\" && MARKER_SUPPORTED_SHAPES.includes(shape);\n}\nfunction getMarker(shape = Square) {\n if (isMarkerShape(shape)) {\n return MARKER_SHAPES[shape];\n }\n if (typeof shape === \"function\") {\n return shape;\n }\n return Square;\n}\n\n// packages/ag-charts-community/src/chart/series/dataModelSeries.ts\nvar DataModelSeries = class extends Series {\n constructor() {\n super(...arguments);\n this.showFocusBox = true;\n }\n getScaleInformation({\n xScale,\n yScale\n }) {\n const isContinuousX = ContinuousScale.is(xScale);\n const isContinuousY = ContinuousScale.is(yScale);\n return {\n isContinuousX,\n isContinuousY,\n xScaleType: xScale == null ? void 0 : xScale.type,\n yScaleType: yScale == null ? void 0 : yScale.type\n };\n }\n getModulePropertyDefinitions() {\n var _a, _b;\n const xScale = (_a = this.axes[\"x\" /* X */]) == null ? void 0 : _a.scale;\n const yScale = (_b = this.axes[\"y\" /* Y */]) == null ? void 0 : _b.scale;\n return this.moduleMap.mapModules(mod2 => mod2.getPropertyDefinitions(this.getScaleInformation({\n xScale,\n yScale\n }))).flat();\n }\n // Request data, but with message dispatching to series-options (modules).\n requestDataModel(dataController, data, opts) {\n return __async(this, null, function* () {\n opts.props.push(...this.getModulePropertyDefinitions());\n const {\n dataModel,\n processedData\n } = yield dataController.request(this.id, data != null ? data : [], opts);\n this.dataModel = dataModel;\n this.processedData = processedData;\n this.dispatch(\"data-processed\", {\n dataModel,\n processedData\n });\n return {\n dataModel,\n processedData\n };\n });\n }\n isProcessedDataAnimatable() {\n var _a, _b;\n const validationResults = (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.animationValidation;\n if (!validationResults) {\n return true;\n }\n const {\n orderedKeys,\n uniqueKeys\n } = validationResults;\n return orderedKeys && uniqueKeys;\n }\n checkProcessedDataAnimatable() {\n if (!this.isProcessedDataAnimatable()) {\n this.ctx.animationManager.skipCurrentBatch();\n }\n }\n pickFocus(opts) {\n return this.doPickFocus(opts, this);\n }\n // The legend behaves differently for Pie and Donut series. We need to use a seriesItemEnabled\n // array to determine whether a datum has been toggled on/off using the legend.\n doPickFocus(opts, derivedSeries) {\n const nodeData = this.getNodeData();\n if (nodeData === void 0 || nodeData.length === 0) {\n return void 0;\n }\n const {\n datumIndexDelta,\n seriesRect\n } = opts;\n const datumIndex = this.computeFocusDatumIndex(opts, nodeData, derivedSeries.seriesItemEnabled);\n if (datumIndex === void 0) {\n return void 0;\n }\n const {\n showFocusBox\n } = this;\n const datum = nodeData[datumIndex];\n const bbox = this.computeFocusBounds({\n datumIndex,\n datumIndexDelta,\n seriesRect\n });\n if (bbox !== void 0) {\n return {\n bbox,\n showFocusBox,\n datum,\n datumIndex\n };\n }\n }\n computeFocusDatumIndex(opts, nodeData, seriesItemEnabled) {\n if (seriesItemEnabled && nodeData.length !== seriesItemEnabled.length) {\n Logger.error(`invalid state: nodeData.length (${nodeData.length} !== seriesItemEnabled.length (${seriesItemEnabled == null ? void 0 : seriesItemEnabled.length})`);\n }\n const isDatumEnabled = datumIndex2 => {\n const nodeDatum = nodeData[datumIndex2];\n return (nodeDatum.missing === void 0 || nodeDatum.missing === false) && (seriesItemEnabled === void 0 || seriesItemEnabled[datumIndex2]);\n };\n const searchBackward = datumIndex2 => {\n while (datumIndex2 >= 0 && !isDatumEnabled(datumIndex2)) {\n datumIndex2--;\n }\n return datumIndex2 === -1 ? void 0 : datumIndex2;\n };\n const searchForward = datumIndex2 => {\n while (datumIndex2 < nodeData.length && !isDatumEnabled(datumIndex2)) {\n datumIndex2++;\n }\n return datumIndex2 === nodeData.length ? void 0 : datumIndex2;\n };\n let datumIndex;\n const clampedIndex = clamp(0, opts.datumIndex, nodeData.length - 1);\n if (opts.datumIndexDelta < 0) {\n datumIndex = searchBackward(clampedIndex);\n } else if (opts.datumIndexDelta > 0) {\n datumIndex = searchForward(clampedIndex);\n } else {\n datumIndex != null ? datumIndex : datumIndex = searchForward(clampedIndex);\n datumIndex != null ? datumIndex : datumIndex = searchBackward(clampedIndex);\n }\n if (datumIndex === void 0) {\n if (opts.datumIndexDelta === 0) {\n return void 0;\n } else {\n return opts.datumIndex - opts.datumIndexDelta;\n }\n } else {\n return datumIndex;\n }\n }\n};\n\n// packages/ag-charts-community/src/chart/series/seriesProperties.ts\nvar SeriesItemHighlightStyle = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.fill = \"rgba(255,255,255, 0.33)\";\n this.stroke = `rgba(0, 0, 0, 0.4)`;\n this.strokeWidth = 2;\n }\n};\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], SeriesItemHighlightStyle.prototype, \"lineDashOffset\", 2);\nvar SeriesHighlightStyle = class extends BaseProperties {};\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], SeriesHighlightStyle.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], SeriesHighlightStyle.prototype, \"dimOpacity\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], SeriesHighlightStyle.prototype, \"enabled\", 2);\nvar TextHighlightStyle = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.color = \"black\";\n }\n};\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], TextHighlightStyle.prototype, \"color\", 2);\nvar HighlightStyle = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.item = new SeriesItemHighlightStyle();\n this.series = new SeriesHighlightStyle();\n this.text = new TextHighlightStyle();\n }\n};\n__decorateClass([Validate(OBJECT)], HighlightStyle.prototype, \"item\", 2);\n__decorateClass([Validate(OBJECT)], HighlightStyle.prototype, \"series\", 2);\n__decorateClass([Validate(OBJECT)], HighlightStyle.prototype, \"text\", 2);\nvar SeriesProperties = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.visible = true;\n this.showInLegend = true;\n this.cursor = \"default\";\n this.nodeClickRange = \"exact\";\n this.highlightStyle = new HighlightStyle();\n }\n};\n__decorateClass([Validate(STRING, {\n optional: true\n})], SeriesProperties.prototype, \"id\", 2);\n__decorateClass([Validate(BOOLEAN)], SeriesProperties.prototype, \"visible\", 2);\n__decorateClass([Validate(BOOLEAN)], SeriesProperties.prototype, \"showInLegend\", 2);\n__decorateClass([Validate(STRING)], SeriesProperties.prototype, \"cursor\", 2);\n__decorateClass([Validate(INTERACTION_RANGE)], SeriesProperties.prototype, \"nodeClickRange\", 2);\n__decorateClass([Validate(OBJECT)], SeriesProperties.prototype, \"highlightStyle\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/cartesianSeries.ts\nvar DEFAULT_CARTESIAN_DIRECTION_KEYS = {\n [\"x\" /* X */]: [\"xKey\"],\n [\"y\" /* Y */]: [\"yKey\"]\n};\nvar DEFAULT_CARTESIAN_DIRECTION_NAMES = {\n [\"x\" /* X */]: [\"xName\"],\n [\"y\" /* Y */]: [\"yName\"]\n};\nvar CartesianSeriesNodeEvent = class extends SeriesNodeEvent {\n constructor(type, nativeEvent, datum, series) {\n super(type, nativeEvent, datum, series);\n this.xKey = series.properties.xKey;\n this.yKey = series.properties.yKey;\n }\n};\nvar CartesianSeriesProperties = class extends SeriesProperties {};\n__decorateClass([Validate(STRING, {\n optional: true\n})], CartesianSeriesProperties.prototype, \"legendItemName\", 2);\nvar CartesianSeries = class extends DataModelSeries {\n constructor(_a) {\n var _b = _a,\n {\n pathsPerSeries = 1,\n hasMarkers = false,\n hasHighlightedLabels = false,\n pathsZIndexSubOrderOffset = [],\n datumSelectionGarbageCollection = true,\n markerSelectionGarbageCollection = true,\n animationAlwaysUpdateSelections = false,\n animationResetFns,\n directionKeys,\n directionNames\n } = _b,\n otherOpts = __objRest(_b, [\"pathsPerSeries\", \"hasMarkers\", \"hasHighlightedLabels\", \"pathsZIndexSubOrderOffset\", \"datumSelectionGarbageCollection\", \"markerSelectionGarbageCollection\", \"animationAlwaysUpdateSelections\", \"animationResetFns\", \"directionKeys\", \"directionNames\"]);\n super(__spreadValues({\n directionKeys,\n directionNames,\n canHaveAxes: true\n }, otherOpts));\n this.NodeEvent = CartesianSeriesNodeEvent;\n this.dataNodeGroup = this.contentGroup.appendChild(new Group({\n name: `${this.id}-series-dataNodes`,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: this.getGroupZIndexSubOrder(\"data\")\n }));\n this.markerGroup = this.contentGroup.appendChild(new Group({\n name: `${this.id}-series-markers`,\n zIndex: 4 /* SERIES_LAYER_ZINDEX */,\n zIndexSubOrder: this.getGroupZIndexSubOrder(\"marker\")\n }));\n this.labelGroup = this.contentGroup.appendChild(new Group({\n name: `${this.id}-series-labels`,\n zIndex: 8 /* SERIES_LABEL_ZINDEX */,\n zIndexSubOrder: this.getGroupZIndexSubOrder(\"labels\")\n }));\n this.labelSelection = Selection.select(this.labelGroup, Text);\n this.highlightSelection = Selection.select(this.highlightNode, () => this.opts.hasMarkers ? this.markerFactory() : this.nodeFactory());\n this.highlightLabelSelection = Selection.select(this.highlightLabel, Text);\n this.annotationSelections = /* @__PURE__ */new Set();\n this.minRectsCache = {\n dirtyNodeData: true\n };\n this.debug = Debug.create();\n if (!directionKeys || !directionNames) throw new Error(`Unable to initialise series type ${this.type}`);\n this.opts = {\n pathsPerSeries,\n hasMarkers,\n hasHighlightedLabels,\n pathsZIndexSubOrderOffset,\n directionKeys,\n directionNames,\n animationResetFns,\n animationAlwaysUpdateSelections,\n datumSelectionGarbageCollection,\n markerSelectionGarbageCollection\n };\n this.paths = [];\n for (let index = 0; index < pathsPerSeries; index++) {\n this.paths[index] = new Path();\n this.paths[index].zIndex = 4 /* SERIES_LAYER_ZINDEX */;\n this.paths[index].zIndexSubOrder = this.getGroupZIndexSubOrder(\"paths\", index);\n this.contentGroup.appendChild(this.paths[index]);\n }\n this.datumSelection = Selection.select(this.dataNodeGroup, () => this.nodeFactory(), datumSelectionGarbageCollection);\n this.markerSelection = Selection.select(this.markerGroup, () => this.markerFactory(), markerSelectionGarbageCollection);\n this.animationState = new StateMachine(\"empty\", {\n empty: {\n update: {\n target: \"ready\",\n action: data => this.animateEmptyUpdateReady(data)\n },\n reset: \"empty\",\n skip: \"ready\",\n disable: \"disabled\"\n },\n ready: {\n updateData: \"waiting\",\n clear: \"clearing\",\n highlight: data => this.animateReadyHighlight(data),\n highlightMarkers: data => this.animateReadyHighlightMarkers(data),\n resize: data => this.animateReadyResize(data),\n reset: \"empty\",\n skip: \"ready\",\n disable: \"disabled\"\n },\n waiting: {\n update: {\n target: \"ready\",\n action: data => this.animateWaitingUpdateReady(data)\n },\n reset: \"empty\",\n skip: \"ready\",\n disable: \"disabled\"\n },\n disabled: {\n update: data => this.resetAllAnimation(data),\n reset: \"empty\"\n },\n clearing: {\n update: {\n target: \"empty\",\n action: data => this.animateClearingUpdateEmpty(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n }\n }, () => this.checkProcessedDataAnimatable());\n }\n get contextNodeData() {\n return this._contextNodeData;\n }\n getNodeData() {\n var _a;\n return (_a = this.contextNodeData) == null ? void 0 : _a.nodeData;\n }\n resetAnimation(phase) {\n if (phase === \"initial\") {\n this.animationState.transition(\"reset\");\n } else if (phase === \"ready\") {\n this.animationState.transition(\"skip\");\n } else if (phase === \"disabled\") {\n this.animationState.transition(\"disable\");\n }\n }\n addChartEventListeners() {\n this.destroyFns.push(this.ctx.chartEventManager.addListener(\"legend-item-click\", event => this.onLegendItemClick(event)), this.ctx.chartEventManager.addListener(\"legend-item-double-click\", event => this.onLegendItemDoubleClick(event)));\n }\n destroy() {\n super.destroy();\n this._contextNodeData = void 0;\n }\n update(_0) {\n return __async(this, arguments, function* ({\n seriesRect\n }) {\n var _a, _b;\n const {\n visible,\n _contextNodeData: previousContextData\n } = this;\n const series = (_b = (_a = this.ctx.highlightManager) == null ? void 0 : _a.getActiveHighlight()) == null ? void 0 : _b.series;\n const seriesHighlighted = series === this;\n const resize = this.checkResize(seriesRect);\n const highlightItems = yield this.updateHighlightSelection(seriesHighlighted);\n yield this.updateSelections(visible);\n yield this.updateNodes(highlightItems, seriesHighlighted, visible);\n const animationData = this.getAnimationData(seriesRect, previousContextData);\n if (!animationData) return;\n if (resize) {\n this.animationState.transition(\"resize\", animationData);\n }\n this.animationState.transition(\"update\", animationData);\n });\n }\n updateSelections(anySeriesItemEnabled) {\n return __async(this, null, function* () {\n var _a, _b;\n const animationSkipUpdate = !this.opts.animationAlwaysUpdateSelections && this.ctx.animationManager.isSkipped();\n if (!anySeriesItemEnabled && animationSkipUpdate) {\n return;\n }\n if (!this.nodeDataRefresh && !this.isPathOrSelectionDirty()) {\n return;\n }\n if (this.nodeDataRefresh) {\n this.nodeDataRefresh = false;\n this.debug(`CartesianSeries.updateSelections() - calling createNodeData() for`, this.id);\n this.markQuadtreeDirty();\n this._contextNodeData = yield this.createNodeData();\n const animationValid = this.isProcessedDataAnimatable();\n if (this._contextNodeData) {\n (_b = (_a = this._contextNodeData).animationValid) != null ? _b : _a.animationValid = animationValid;\n }\n this.minRectsCache.dirtyNodeData = true;\n const {\n dataModel,\n processedData\n } = this;\n if (dataModel !== void 0 && processedData !== void 0) {\n this.dispatch(\"data-update\", {\n dataModel,\n processedData\n });\n }\n }\n yield this.updateSeriesSelections();\n });\n }\n updateSeriesSelections(seriesHighlighted) {\n return __async(this, null, function* () {\n const {\n datumSelection,\n labelSelection,\n markerSelection,\n paths\n } = this;\n const contextData = this._contextNodeData;\n if (!contextData) return;\n const {\n nodeData,\n labelData,\n itemId\n } = contextData;\n yield this.updatePaths({\n seriesHighlighted,\n itemId,\n contextData,\n paths\n });\n this.datumSelection = yield this.updateDatumSelection({\n nodeData,\n datumSelection\n });\n this.labelSelection = yield this.updateLabelSelection({\n labelData,\n labelSelection\n });\n if (this.opts.hasMarkers) {\n this.markerSelection = yield this.updateMarkerSelection({\n nodeData,\n markerSelection\n });\n }\n });\n }\n markerFactory() {\n const MarkerShape = getMarker();\n return new MarkerShape();\n }\n getGroupZIndexSubOrder(type, subIndex = 0) {\n var _a;\n const result = super.getGroupZIndexSubOrder(type, subIndex);\n if (type === \"paths\") {\n const [superFn] = result;\n const pathOffset = (_a = this.opts.pathsZIndexSubOrderOffset[subIndex]) != null ? _a : 0;\n result[0] = isFunction(superFn) ? () => Number(superFn()) + pathOffset : Number(superFn) + pathOffset;\n }\n return result;\n }\n updateNodes(highlightedItems, seriesHighlighted, anySeriesItemEnabled) {\n return __async(this, null, function* () {\n var _a;\n const {\n highlightSelection,\n highlightLabelSelection,\n opts: {\n hasMarkers,\n hasHighlightedLabels\n }\n } = this;\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const visible = this.visible && this._contextNodeData != null && anySeriesItemEnabled;\n this.rootGroup.visible = animationEnabled || visible;\n this.contentGroup.visible = animationEnabled || visible;\n this.highlightGroup.visible = (animationEnabled || visible) && seriesHighlighted;\n const opacity = this.getOpacity();\n if (hasMarkers) {\n yield this.updateMarkerNodes({\n markerSelection: highlightSelection,\n isHighlight: true\n });\n this.animationState.transition(\"highlightMarkers\", highlightSelection);\n } else {\n yield this.updateDatumNodes({\n datumSelection: highlightSelection,\n isHighlight: true\n });\n this.animationState.transition(\"highlight\", highlightSelection);\n }\n if (hasHighlightedLabels) {\n yield this.updateLabelNodes({\n labelSelection: highlightLabelSelection\n });\n }\n const {\n dataNodeGroup,\n markerGroup,\n datumSelection,\n labelSelection,\n markerSelection,\n paths,\n labelGroup\n } = this;\n const {\n itemId\n } = (_a = this.contextNodeData) != null ? _a : {};\n dataNodeGroup.opacity = opacity;\n dataNodeGroup.visible = animationEnabled || visible;\n labelGroup.visible = visible;\n if (hasMarkers) {\n markerGroup.opacity = opacity;\n markerGroup.zIndex = dataNodeGroup.zIndex >= 4 /* SERIES_LAYER_ZINDEX */ ? dataNodeGroup.zIndex : dataNodeGroup.zIndex + 1;\n markerGroup.visible = visible;\n }\n if (labelGroup) {\n labelGroup.opacity = opacity;\n }\n yield this.updatePathNodes({\n seriesHighlighted,\n itemId,\n paths,\n opacity,\n visible,\n animationEnabled\n });\n if (!dataNodeGroup.visible) {\n return;\n }\n yield this.updateDatumNodes({\n datumSelection,\n highlightedItems,\n isHighlight: false\n });\n yield this.updateLabelNodes({\n labelSelection\n });\n if (hasMarkers) {\n yield this.updateMarkerNodes({\n markerSelection,\n isHighlight: false\n });\n }\n });\n }\n getHighlightLabelData(labelData, highlightedItem) {\n const labelItems = labelData.filter(ld => ld.datum === highlightedItem.datum && ld.itemId === highlightedItem.itemId);\n return labelItems.length === 0 ? void 0 : labelItems;\n }\n getHighlightData(_nodeData, highlightedItem) {\n return highlightedItem ? [highlightedItem] : void 0;\n }\n updateHighlightSelection(seriesHighlighted) {\n return __async(this, null, function* () {\n var _a;\n const {\n highlightSelection,\n highlightLabelSelection,\n _contextNodeData: contextNodeData\n } = this;\n if (!contextNodeData) return;\n const highlightedDatum = (_a = this.ctx.highlightManager) == null ? void 0 : _a.getActiveHighlight();\n const item = seriesHighlighted && (highlightedDatum == null ? void 0 : highlightedDatum.datum) ? highlightedDatum : void 0;\n let labelItems;\n let highlightItems;\n if (item != null) {\n const labelsEnabled = this.isLabelEnabled();\n const {\n labelData,\n nodeData\n } = contextNodeData;\n highlightItems = this.getHighlightData(nodeData, item);\n labelItems = labelsEnabled ? this.getHighlightLabelData(labelData, item) : void 0;\n }\n this.highlightSelection = yield this.updateHighlightSelectionItem({\n items: highlightItems,\n highlightSelection\n });\n this.highlightLabelSelection = yield this.updateHighlightSelectionLabel({\n items: labelItems,\n highlightLabelSelection\n });\n return highlightItems;\n });\n }\n markQuadtreeDirty() {\n this.quadtree = void 0;\n }\n *datumNodesIter() {\n for (const {\n node\n } of this.datumSelection) {\n if (node.datum.missing === true) continue;\n yield node;\n }\n }\n getQuadTree() {\n if (this.quadtree === void 0) {\n const {\n width,\n height\n } = this.ctx.scene.canvas;\n const canvasRect = new BBox(0, 0, width, height);\n this.quadtree = new QuadtreeNearest(100, 10, canvasRect);\n this.initQuadTree(this.quadtree);\n }\n return this.quadtree;\n }\n initQuadTree(_quadtree) {}\n pickNodeExactShape(point) {\n var _a;\n const result = super.pickNodeExactShape(point);\n if (result) {\n return result;\n }\n const {\n x,\n y\n } = point;\n const {\n opts: {\n hasMarkers\n }\n } = this;\n let match;\n const {\n dataNodeGroup,\n markerGroup\n } = this;\n match = dataNodeGroup.pickNode(x, y);\n if (!match && hasMarkers) {\n match = markerGroup == null ? void 0 : markerGroup.pickNode(x, y);\n }\n if (match && match.datum.missing !== true) {\n return {\n datum: match.datum,\n distance: 0\n };\n }\n for (const mod2 of this.moduleMap.modules()) {\n const {\n datum\n } = (_a = mod2.pickNodeExact(point)) != null ? _a : {};\n if (datum == null) continue;\n if ((datum == null ? void 0 : datum.missing) === true) continue;\n return {\n datum,\n distance: 0\n };\n }\n }\n pickNodeClosestDatum(point) {\n var _a, _b;\n const {\n x,\n y\n } = point;\n const {\n axes,\n rootGroup,\n _contextNodeData: contextNodeData\n } = this;\n if (!contextNodeData) return;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n const hitPoint = rootGroup.transformPoint(x, y);\n let minDistance = Infinity;\n let closestDatum;\n for (const datum of contextNodeData.nodeData) {\n const {\n point: {\n x: datumX = NaN,\n y: datumY = NaN\n } = {}\n } = datum;\n if (isNaN(datumX) || isNaN(datumY)) {\n continue;\n }\n const isInRange = (xAxis == null ? void 0 : xAxis.inRange(datumX)) && (yAxis == null ? void 0 : yAxis.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n const distance2 = Math.max(__pow(hitPoint.x - datumX, 2) + __pow(hitPoint.y - datumY, 2), 0);\n if (distance2 < minDistance) {\n minDistance = distance2;\n closestDatum = datum;\n }\n }\n for (const mod2 of this.moduleMap.modules()) {\n const modPick = mod2.pickNodeNearest(point);\n if (modPick !== void 0 && modPick.distanceSquared < minDistance) {\n minDistance = modPick.distanceSquared;\n closestDatum = modPick.datum;\n break;\n }\n }\n if (closestDatum) {\n const distance2 = Math.max(Math.sqrt(minDistance) - ((_b = (_a = closestDatum.point) == null ? void 0 : _a.size) != null ? _b : 0), 0);\n return {\n datum: closestDatum,\n distance: distance2\n };\n }\n }\n pickNodeMainAxisFirst(point, requireCategoryAxis) {\n var _a, _b, _c, _d;\n const {\n x,\n y\n } = point;\n const {\n axes,\n rootGroup,\n _contextNodeData: contextNodeData\n } = this;\n if (!contextNodeData) return;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n const directions2 = [xAxis, yAxis].filter(a => a instanceof CategoryAxis).map(a => a.direction);\n if (requireCategoryAxis && directions2.length === 0) {\n return;\n }\n const [primaryDirection = \"x\" /* X */] = directions2;\n const hitPoint = rootGroup.transformPoint(x, y);\n const hitPointCoords = primaryDirection === \"x\" /* X */ ? [hitPoint.x, hitPoint.y] : [hitPoint.y, hitPoint.x];\n const minDistance = [Infinity, Infinity];\n let closestDatum;\n for (const datum of contextNodeData.nodeData) {\n const {\n x: datumX = NaN,\n y: datumY = NaN\n } = (_b = (_a = datum.point) != null ? _a : datum.midPoint) != null ? _b : {};\n if (isNaN(datumX) || isNaN(datumY) || datum.missing === true) {\n continue;\n }\n const isInRange = (xAxis == null ? void 0 : xAxis.inRange(datumX)) && (yAxis == null ? void 0 : yAxis.inRange(datumY));\n if (!isInRange) {\n continue;\n }\n const datumPoint = primaryDirection === \"x\" /* X */ ? [datumX, datumY] : [datumY, datumX];\n let newMinDistance = true;\n for (let i = 0; i < datumPoint.length; i++) {\n const dist = Math.abs(datumPoint[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 if (closestDatum) {\n let closestDistanceSquared = Math.max(__pow(minDistance[0], 2) + __pow(minDistance[1], 2) - ((_d = (_c = closestDatum.point) == null ? void 0 : _c.size) != null ? _d : 0), 0);\n for (const mod2 of this.moduleMap.modules()) {\n const modPick = mod2.pickNodeMainAxisFirst(point);\n if (modPick !== void 0 && modPick.distanceSquared < closestDistanceSquared) {\n closestDatum = modPick.datum;\n closestDistanceSquared = modPick.distanceSquared;\n break;\n }\n }\n return {\n datum: closestDatum,\n distance: Math.sqrt(closestDistanceSquared)\n };\n }\n }\n onLegendItemClick(event) {\n const {\n legendItemName\n } = this.properties;\n const {\n enabled,\n itemId,\n series\n } = event;\n const matchedLegendItemName = legendItemName != null && legendItemName === event.legendItemName;\n if (series.id === this.id || matchedLegendItemName) {\n this.toggleSeriesItem(itemId, enabled);\n }\n }\n onLegendItemDoubleClick(event) {\n const {\n enabled,\n itemId,\n series,\n numVisibleItems\n } = event;\n const {\n legendItemName\n } = this.properties;\n const matchedLegendItemName = legendItemName != null && legendItemName === event.legendItemName;\n if (series.id === this.id || matchedLegendItemName) {\n this.toggleSeriesItem(itemId, true);\n } else if (enabled && numVisibleItems === 1) {\n this.toggleSeriesItem(itemId, true);\n } else {\n this.toggleSeriesItem(itemId, false);\n }\n }\n isPathOrSelectionDirty() {\n return false;\n }\n getLabelData() {\n return [];\n }\n shouldFlipXY() {\n return false;\n }\n /**\n * Get the minimum bounding box that contains any adjacent two nodes. The axes are treated independently, so this\n * may not represent the same two points for both directions. The dimensions represent the greatest distance\n * between any two adjacent nodes.\n */\n getMinRects(width, height) {\n const {\n dirtyNodeData,\n sizeCache,\n minRect,\n minVisibleRect\n } = this.minRectsCache;\n const newSizeCache = JSON.stringify({\n width,\n height\n });\n const dirtySize = newSizeCache !== sizeCache;\n if (!dirtySize && !dirtyNodeData && minRect && minVisibleRect) {\n return {\n minRect,\n minVisibleRect\n };\n }\n const rects = this.computeMinRects(width, height);\n this.minRectsCache = {\n dirtyNodeData: false,\n sizeCache: newSizeCache,\n minRect: rects == null ? void 0 : rects.minRect,\n minVisibleRect: rects == null ? void 0 : rects.minVisibleRect\n };\n return rects;\n }\n computeMinRects(width, height) {\n var _a, _b;\n const context = this._contextNodeData;\n if (!(context == null ? void 0 : context.nodeData.length)) {\n return;\n }\n const {\n nodeData\n } = context;\n const minRectXs = Array(nodeData.length);\n const minRectYs = Array(nodeData.length);\n for (const [i, {\n midPoint\n }] of nodeData.entries()) {\n minRectXs[i] = (_a = midPoint == null ? void 0 : midPoint.x) != null ? _a : 0;\n minRectYs[i] = (_b = midPoint == null ? void 0 : midPoint.y) != null ? _b : 0;\n }\n minRectXs.sort((a, b) => a - b);\n minRectYs.sort((a, b) => a - b);\n let zeroX, widthX, zeroY, heightY;\n let maxWidth = 0;\n let maxHeight = 0;\n for (let i = 1; i < nodeData.length; i++) {\n if (minRectXs[i] >= 0) zeroX != null ? zeroX : zeroX = i;\n if (minRectXs[i] > width) widthX != null ? widthX : widthX = i;\n if (minRectYs[i] >= 0) zeroY != null ? zeroY : zeroY = i;\n if (minRectYs[i] > height) heightY != null ? heightY : heightY = i;\n maxWidth = Math.max(maxWidth, minRectXs[i] - minRectXs[i - 1]);\n maxHeight = Math.max(maxHeight, minRectYs[i] - minRectYs[i - 1]);\n }\n widthX != null ? widthX : widthX = nodeData.length;\n heightY != null ? heightY : heightY = nodeData.length;\n const minVisibleRectXs = zeroX != null && widthX != null ? minRectXs.slice(zeroX, widthX) : [];\n const minVisibleRectYs = zeroY != null && heightY != null ? minRectYs.slice(zeroY, heightY) : [];\n let maxVisibleWidth = 0;\n let maxVisibleHeight = 0;\n for (let i = 1; i < Math.max(minVisibleRectXs.length, minVisibleRectYs.length); i++) {\n const x1 = minVisibleRectXs[i];\n const x2 = minVisibleRectXs[i - 1];\n const y1 = minVisibleRectYs[i];\n const y2 = minVisibleRectYs[i - 1];\n if (x1 != null && x2 != null) {\n maxVisibleWidth = Math.max(maxVisibleWidth, x1 - x2);\n }\n if (y1 != null && y2 != null) {\n maxVisibleHeight = Math.max(maxVisibleHeight, y1 - y2);\n }\n }\n const minRect = new BBox(0, 0, maxWidth, maxHeight);\n const minVisibleRect = new BBox(0, 0, maxVisibleWidth, maxVisibleHeight);\n return {\n minRect,\n minVisibleRect\n };\n }\n updateHighlightSelectionItem(opts) {\n const {\n opts: {\n hasMarkers\n }\n } = this;\n const {\n items,\n highlightSelection\n } = opts;\n const nodeData = items != null ? items : [];\n if (hasMarkers) {\n const markerSelection = highlightSelection;\n return this.updateMarkerSelection({\n nodeData,\n markerSelection\n });\n } else {\n return this.updateDatumSelection({\n nodeData,\n datumSelection: highlightSelection\n });\n }\n }\n updateHighlightSelectionLabel(opts) {\n var _a;\n return this.updateLabelSelection({\n labelData: (_a = opts.items) != null ? _a : [],\n labelSelection: opts.highlightLabelSelection\n });\n }\n updateDatumSelection(opts) {\n return __async(this, null, function* () {\n return opts.datumSelection;\n });\n }\n updateDatumNodes(_opts) {\n return __async(this, null, function* () {});\n }\n updateMarkerSelection(opts) {\n return __async(this, null, function* () {\n return opts.markerSelection;\n });\n }\n updateMarkerNodes(_opts) {\n return __async(this, null, function* () {});\n }\n updatePaths(opts) {\n return __async(this, null, function* () {\n opts.paths.forEach(p => p.visible = false);\n });\n }\n updatePathNodes(opts) {\n return __async(this, null, function* () {\n const {\n paths,\n opacity,\n visible\n } = opts;\n for (const path of paths) {\n path.opacity = opacity;\n path.visible = visible;\n }\n });\n }\n resetAllAnimation(data) {\n var _a, _b, _c;\n const {\n path,\n datum,\n label,\n marker\n } = (_b = (_a = this.opts) == null ? void 0 : _a.animationResetFns) != null ? _b : {};\n this.ctx.animationManager.stopByAnimationGroupId(this.id);\n if (path) {\n data.paths.forEach(paths => {\n resetMotion([paths], path);\n });\n }\n if (datum) {\n resetMotion([data.datumSelection], datum);\n }\n if (label) {\n resetMotion([data.labelSelection], label);\n }\n if (marker && this.opts.hasMarkers) {\n resetMotion([data.markerSelection], marker);\n }\n if (((_c = data.contextData) == null ? void 0 : _c.animationValid) === false) {\n this.ctx.animationManager.skipCurrentBatch();\n }\n }\n animateEmptyUpdateReady(data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation(data);\n }\n animateWaitingUpdateReady(data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation(data);\n }\n animateReadyHighlight(data) {\n var _a, _b;\n const {\n datum\n } = (_b = (_a = this.opts) == null ? void 0 : _a.animationResetFns) != null ? _b : {};\n if (datum) {\n resetMotion([data], datum);\n }\n }\n animateReadyHighlightMarkers(data) {\n var _a, _b;\n const {\n marker\n } = (_b = (_a = this.opts) == null ? void 0 : _a.animationResetFns) != null ? _b : {};\n if (marker) {\n resetMotion([data], marker);\n }\n }\n animateReadyResize(data) {\n this.resetAllAnimation(data);\n }\n animateClearingUpdateEmpty(data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation(data);\n }\n animationTransitionClear() {\n const animationData = this.getAnimationData();\n if (!animationData) return;\n this.animationState.transition(\"clear\", animationData);\n }\n getAnimationData(seriesRect, previousContextData) {\n const {\n _contextNodeData: contextData\n } = this;\n if (!contextData) return;\n const animationData = {\n datumSelection: this.datumSelection,\n markerSelection: this.markerSelection,\n labelSelection: this.labelSelection,\n annotationSelections: [...this.annotationSelections],\n contextData,\n previousContextData,\n paths: this.paths,\n seriesRect\n };\n return animationData;\n }\n calculateScaling() {\n const result = {};\n for (const direction of Object.values(ChartAxisDirection)) {\n const axis = this.axes[direction];\n if (!axis) continue;\n if (axis.scale instanceof LogScale) {\n const {\n range: range3,\n domain\n } = axis.scale;\n result[direction] = {\n type: \"log\",\n convert: d => axis.scale.convert(d),\n domain: [domain[0], domain[1]],\n range: [range3[0], range3[1]]\n };\n } else if (axis.scale instanceof ContinuousScale) {\n const {\n range: range3\n } = axis.scale;\n const domain = axis.scale.getDomain();\n result[direction] = {\n type: \"continuous\",\n domain: [domain[0], domain[1]],\n range: [range3[0], range3[1]]\n };\n } else if (axis.scale) {\n const {\n domain\n } = axis.scale;\n result[direction] = {\n type: \"category\",\n domain,\n range: domain.map(d => axis.scale.convert(d))\n };\n }\n }\n return result;\n }\n};\n\n// packages/ag-charts-community/src/chart/cartesianChart.ts\nvar directions = [\"top\", \"right\", \"bottom\", \"left\"];\nvar _CartesianChart = class _CartesianChart extends Chart {\n constructor(options, resources) {\n super(options, resources);\n /** Integrated Charts feature state - not used in Standalone Charts. */\n this.paired = true;\n this.firstSeriesTranslation = true;\n this._lastCrossLineIds = void 0;\n this._lastAxisWidths = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n this._lastClipSeries = false;\n this._lastVisibility = {\n crossLines: true,\n series: true\n };\n }\n onAxisChange(newValue, oldValue) {\n super.onAxisChange(newValue, oldValue);\n this.zoomManager.updateAxes(newValue);\n }\n destroySeries(series) {\n super.destroySeries(series);\n this.firstSeriesTranslation = true;\n }\n performLayout() {\n return __async(this, null, function* () {\n const shrinkRect = yield __superGet(_CartesianChart.prototype, this, \"performLayout\").call(this);\n const {\n firstSeriesTranslation,\n seriesRoot,\n annotationRoot,\n highlightRoot\n } = this;\n const {\n animationRect,\n seriesRect,\n visibility,\n clipSeries\n } = this.updateAxes(shrinkRect);\n this.seriesRoot.visible = visibility.series;\n this.seriesRect = seriesRect;\n this.animationRect = animationRect;\n const {\n x,\n y\n } = seriesRect;\n if (firstSeriesTranslation) {\n for (const group2 of [seriesRoot, annotationRoot, highlightRoot]) {\n group2.translationX = Math.floor(x);\n group2.translationY = Math.floor(y);\n }\n this.firstSeriesTranslation = false;\n } else {\n const {\n translationX,\n translationY\n } = seriesRoot;\n staticFromToMotion(this.id, \"seriesRect\", this.ctx.animationManager, [seriesRoot, highlightRoot, annotationRoot], {\n translationX,\n translationY\n }, {\n translationX: Math.floor(x),\n translationY: Math.floor(y)\n }, {\n phase: \"update\"\n });\n }\n const seriesPaddedRect = seriesRect.clone().grow(this.seriesArea.padding);\n this.hoverRect = seriesPaddedRect;\n const clipRect = this.seriesArea.clip || clipSeries ? seriesPaddedRect : void 0;\n seriesRoot.setClipRectInGroupCoordinateSpace(clipRect);\n highlightRoot.setClipRectInGroupCoordinateSpace(clipRect);\n annotationRoot.setClipRectInGroupCoordinateSpace(clipRect);\n this.ctx.layoutService.dispatchLayoutComplete({\n type: \"layout-complete\",\n chart: {\n width: this.ctx.scene.width,\n height: this.ctx.scene.height\n },\n clipSeries,\n series: {\n rect: seriesRect,\n paddedRect: seriesPaddedRect,\n visible: visibility.series,\n shouldFlipXY: this.shouldFlipXY()\n },\n axes: this.axes.map(axis => __spreadValues({\n id: axis.id\n }, axis.getLayoutState()))\n });\n const modulePromises = this.modulesManager.mapModules(m => {\n var _a;\n return (_a = m.performCartesianLayout) == null ? void 0 : _a.call(m, {\n seriesRect\n });\n });\n yield Promise.all(modulePromises);\n return shrinkRect;\n });\n }\n updateAxes(inputShrinkRect) {\n var _a;\n const crossLineIds = this.axes.flatMap(axis => {\n var _a2;\n return (_a2 = axis.crossLines) != null ? _a2 : [];\n }).map(crossLine => crossLine.id);\n const axesValid = this._lastCrossLineIds != null && this._lastCrossLineIds.length === crossLineIds.length && this._lastCrossLineIds.every((id, index) => crossLineIds[index] === id);\n let axisWidths;\n let clipSeries;\n let visibility;\n if (axesValid) {\n axisWidths = __spreadValues({}, this._lastAxisWidths);\n clipSeries = this._lastClipSeries;\n visibility = __spreadValues({}, this._lastVisibility);\n } else {\n axisWidths = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n clipSeries = false;\n visibility = {\n crossLines: true,\n series: true\n };\n this._lastCrossLineIds = crossLineIds;\n }\n const liveAxisWidths = new Set(this.axes.map(a => a.position));\n for (const position of Object.keys(axisWidths)) {\n if (!liveAxisWidths.has(position)) {\n delete axisWidths[position];\n }\n }\n const stableOutputs = (otherAxisWidths, otherClipSeries, otherVisibility) => {\n if (Object.keys(otherAxisWidths).some(k => axisWidths[k] == null)) {\n return false;\n }\n return visibility.crossLines === otherVisibility.crossLines && visibility.series === otherVisibility.series &&\n // Check for existing axis positions and equality.\n Object.entries(axisWidths).every(([p, w]) => {\n const otherW = otherAxisWidths[p];\n if (w != null || otherW != null) {\n return w === otherW;\n }\n return true;\n }) && clipSeries === otherClipSeries;\n };\n const ceilValues = records => mapValues(records, value => {\n if (value && Math.abs(value) === Infinity) {\n return 0;\n }\n return value != null ? Math.ceil(value) : value;\n });\n let lastPassAxisWidths = {};\n let lastPassVisibility = {};\n let lastPassClipSeries = false;\n let seriesRect = (_a = this.seriesRect) == null ? void 0 : _a.clone();\n let count = 0;\n let primaryTickCounts = {};\n do {\n Object.assign(axisWidths, lastPassAxisWidths);\n clipSeries = lastPassClipSeries;\n Object.assign(visibility, lastPassVisibility);\n const result = this.updateAxesPass(axisWidths, inputShrinkRect.clone(), seriesRect);\n lastPassAxisWidths = ceilValues(result.axisWidths);\n lastPassVisibility = result.visibility;\n lastPassClipSeries = result.clipSeries;\n seriesRect = result.seriesRect;\n primaryTickCounts = result.primaryTickCounts;\n if (count++ > 10) {\n Logger.warn(\"unable to find stable axis layout.\");\n break;\n }\n } while (!stableOutputs(lastPassAxisWidths, lastPassClipSeries, lastPassVisibility));\n this.axes.forEach(axis => {\n axis.update(primaryTickCounts[axis.direction]);\n });\n const clipRectPadding = 5;\n this.axes.forEach(axis => {\n axis.setCrossLinesVisible(visibility.crossLines);\n if (!seriesRect) {\n return;\n }\n axis.clipGrid(seriesRect.x, seriesRect.y, seriesRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n switch (axis.position) {\n case \"left\":\n case \"right\":\n axis.clipTickLines(inputShrinkRect.x, seriesRect.y, inputShrinkRect.width + clipRectPadding, seriesRect.height + clipRectPadding);\n break;\n case \"top\":\n case \"bottom\":\n axis.clipTickLines(seriesRect.x, inputShrinkRect.y, seriesRect.width + clipRectPadding, inputShrinkRect.height + clipRectPadding);\n break;\n }\n });\n this._lastAxisWidths = axisWidths;\n this._lastVisibility = visibility;\n return {\n seriesRect,\n animationRect: inputShrinkRect,\n visibility,\n clipSeries\n };\n }\n updateAxesPass(axisWidths, bounds, lastPassSeriesRect) {\n const visited = {};\n const newAxisWidths = {};\n const visibility = {\n series: true,\n crossLines: true\n };\n let clipSeries = false;\n const primaryTickCounts = {};\n const paddedBounds = this.applySeriesPadding(bounds);\n const crossLinePadding = lastPassSeriesRect ? this.buildCrossLinePadding(axisWidths) : {};\n const axisBound = this.buildAxisBound(paddedBounds, axisWidths, crossLinePadding, visibility);\n const seriesRect = this.buildSeriesRect(axisBound, axisWidths);\n this.axes.forEach(axis => {\n var _a, _b;\n const {\n position = \"left\"\n } = axis;\n const {\n clipSeries: newClipSeries,\n axisThickness,\n axisOffset\n } = this.calculateAxisDimensions({\n axis,\n seriesRect,\n paddedBounds,\n axisWidths,\n newAxisWidths,\n primaryTickCounts,\n clipSeries,\n addInterAxisPadding: ((_a = visited[position]) != null ? _a : 0) > 0\n });\n visited[position] = ((_b = visited[position]) != null ? _b : 0) + 1;\n clipSeries = clipSeries || newClipSeries;\n this.positionAxis({\n axis,\n axisBound,\n axisOffset,\n axisThickness,\n axisWidths,\n primaryTickCounts,\n seriesRect\n });\n });\n return {\n clipSeries,\n seriesRect,\n axisWidths: newAxisWidths,\n visibility,\n primaryTickCounts\n };\n }\n buildCrossLinePadding(axisWidths) {\n var _a;\n const crossLinePadding = {};\n this.axes.forEach(axis => {\n if (axis.crossLines) {\n axis.crossLines.forEach(crossLine => {\n var _a2;\n (_a2 = crossLine.calculatePadding) == null ? void 0 : _a2.call(crossLine, crossLinePadding);\n });\n }\n });\n for (const [side, padding = 0] of Object.entries(crossLinePadding)) {\n crossLinePadding[side] = Math.max(padding - ((_a = axisWidths[side]) != null ? _a : 0), 0);\n }\n return crossLinePadding;\n }\n applySeriesPadding(bounds) {\n const paddedRect = bounds.clone();\n const reversedAxes = this.axes.slice().reverse();\n directions.forEach(dir => {\n const padding = this.seriesArea.padding[dir];\n const axis = reversedAxes.find(a => a.position === dir);\n if (axis) {\n axis.seriesAreaPadding = padding;\n } else {\n paddedRect.shrink(padding, dir);\n }\n });\n return paddedRect;\n }\n buildAxisBound(bounds, axisWidths, crossLinePadding, visibility) {\n var _a, _b, _c, _d;\n const result = bounds.clone();\n const {\n top = 0,\n right = 0,\n bottom = 0,\n left = 0\n } = crossLinePadding;\n const horizontalPadding = left + right;\n const verticalPadding = top + bottom;\n const totalWidth = ((_a = axisWidths.left) != null ? _a : 0) + ((_b = axisWidths.right) != null ? _b : 0) + horizontalPadding;\n const totalHeight = ((_c = axisWidths.top) != null ? _c : 0) + ((_d = axisWidths.bottom) != null ? _d : 0) + verticalPadding;\n if (result.width <= totalWidth || result.height <= totalHeight) {\n visibility.crossLines = false;\n visibility.series = false;\n return result;\n }\n result.x += left;\n result.y += top;\n result.width -= horizontalPadding;\n result.height -= verticalPadding;\n return result;\n }\n buildSeriesRect(axisBound, axisWidths) {\n const result = axisBound.clone();\n const {\n top,\n bottom,\n left,\n right\n } = axisWidths;\n result.x += left != null ? left : 0;\n result.y += top != null ? top : 0;\n result.width -= (left != null ? left : 0) + (right != null ? right : 0);\n result.height -= (top != null ? top : 0) + (bottom != null ? bottom : 0);\n result.width = Math.max(0, result.width);\n result.height = Math.max(0, result.height);\n return result;\n }\n clampToOutsideSeriesRect(seriesRect, value, dimension, direction) {\n const {\n x,\n y,\n width,\n height\n } = seriesRect;\n const clampBounds = [x, y, x + width, y + height];\n const compareTo = clampBounds[(dimension === \"x\" ? 0 : 1) + (direction === 1 ? 0 : 2)];\n const clampFn = direction === 1 ? Math.min : Math.max;\n return clampFn(value, compareTo);\n }\n calculateAxisDimensions(opts) {\n var _a, _b, _c, _d;\n const {\n axis,\n seriesRect,\n paddedBounds,\n axisWidths,\n newAxisWidths,\n primaryTickCounts,\n addInterAxisPadding\n } = opts;\n let {\n clipSeries\n } = opts;\n const {\n position = \"left\",\n direction\n } = axis;\n const isCategory = axis instanceof CategoryAxis || axis instanceof GroupedCategoryAxis;\n const isLeftRight = position === \"left\" || position === \"right\";\n const axisOffset = (_a = newAxisWidths[position]) != null ? _a : 0;\n const {\n min,\n max\n } = this.ctx.zoomManager.getAxisZoom(axis.id);\n if (isLeftRight) {\n if (isCategory) {\n axis.range = [0, seriesRect.height];\n axis.visibleRange = [1 - max, 1 - min];\n } else {\n axis.range = [seriesRect.height, 0];\n axis.visibleRange = [min, max];\n }\n axis.gridLength = seriesRect.width;\n } else {\n axis.range = [0, seriesRect.width];\n axis.visibleRange = [min, max];\n axis.gridLength = seriesRect.height;\n }\n let primaryTickCount = axis.nice ? primaryTickCounts[direction] : void 0;\n const isVertical = direction === \"y\" /* Y */;\n const paddedBoundsCoefficient = 0.3;\n if (axis.thickness) {\n axis.maxThickness = axis.thickness;\n } else {\n axis.maxThickness = (isVertical ? paddedBounds.width : paddedBounds.height) * paddedBoundsCoefficient;\n }\n const layout = axis.calculateLayout(primaryTickCount);\n primaryTickCount = layout.primaryTickCount;\n (_b = primaryTickCounts[direction]) != null ? _b : primaryTickCounts[direction] = primaryTickCount;\n clipSeries || (clipSeries = axis.dataDomain.clipped || axis.visibleRange[0] > 0 || axis.visibleRange[1] < 1);\n let axisThickness;\n if (axis.thickness != null && axis.thickness > 0) {\n axisThickness = axis.thickness;\n } else {\n const {\n bbox\n } = layout;\n axisThickness = isVertical ? bbox.width : bbox.height;\n }\n const axisPadding = 15;\n if (addInterAxisPadding) {\n axisThickness += axisPadding;\n }\n axisThickness = Math.ceil(axisThickness);\n newAxisWidths[position] = ((_c = newAxisWidths[position]) != null ? _c : 0) + axisThickness;\n axis.gridPadding = ((_d = axisWidths[position]) != null ? _d : 0) - newAxisWidths[position];\n return {\n clipSeries,\n axisThickness,\n axisOffset,\n primaryTickCount\n };\n }\n positionAxis(opts) {\n var _a, _b, _c, _d;\n const {\n axis,\n axisBound,\n axisWidths,\n seriesRect,\n axisOffset,\n axisThickness\n } = opts;\n const {\n position\n } = axis;\n switch (position) {\n case \"top\":\n axis.translation.x = axisBound.x + ((_a = axisWidths.left) != null ? _a : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + 1 + axisOffset + axisThickness, \"y\", 1);\n break;\n case \"bottom\":\n axis.translation.x = axisBound.x + ((_b = axisWidths.left) != null ? _b : 0);\n axis.translation.y = this.clampToOutsideSeriesRect(seriesRect, axisBound.y + axisBound.height + 1 - axisThickness - axisOffset, \"y\", -1);\n break;\n case \"left\":\n axis.translation.y = axisBound.y + ((_c = axisWidths.top) != null ? _c : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisOffset + axisThickness, \"x\", 1);\n break;\n case \"right\":\n axis.translation.y = axisBound.y + ((_d = axisWidths.top) != null ? _d : 0);\n axis.translation.x = this.clampToOutsideSeriesRect(seriesRect, axisBound.x + axisBound.width - axisThickness - axisOffset, \"x\", -1);\n break;\n }\n axis.updatePosition({\n rotation: toRadians(axis.rotation),\n sideFlag: axis.label.getSideFlag()\n });\n }\n shouldFlipXY() {\n return !this.series.some(series => !(series instanceof CartesianSeries && series.shouldFlipXY()));\n }\n};\n_CartesianChart.className = \"CartesianChart\";\n_CartesianChart.type = \"cartesian\";\nvar CartesianChart = _CartesianChart;\n\n// packages/ag-charts-community/src/chart/chartProxy.ts\nvar _AgChartInstanceProxy = class _AgChartInstanceProxy {\n static isInstance(x) {\n var _a;\n if (x instanceof _AgChartInstanceProxy) {\n return true;\n }\n if (((_a = x.constructor) == null ? void 0 : _a.name) === \"AgChartInstanceProxy\" && x.chart != null) {\n return true;\n }\n return x.chart != null && this.validateImplementation(x);\n }\n static validateImplementation(x) {\n var _a;\n const chartProps = [\"getOptions\", \"destroy\"];\n const signatureProps = Object.keys((_a = Object.getPrototypeOf(x)) != null ? _a : {});\n return chartProps.every(prop => signatureProps.includes(prop));\n }\n constructor(chart) {\n this.chart = chart;\n }\n getOptions() {\n return deepClone(this.chart.getOptions());\n }\n resetAnimations() {\n this.chart.resetAnimations();\n }\n skipAnimations() {\n this.chart.skipAnimations();\n }\n destroy() {\n this.chart.destroy();\n }\n};\n_AgChartInstanceProxy.chartInstances = /* @__PURE__ */new WeakMap();\n__decorateClass([ActionOnSet({\n oldValue(chart) {\n _AgChartInstanceProxy.chartInstances.delete(chart);\n },\n newValue(chart) {\n _AgChartInstanceProxy.chartInstances.set(chart, this);\n }\n})], _AgChartInstanceProxy.prototype, \"chart\", 2);\nvar AgChartInstanceProxy = _AgChartInstanceProxy;\n\n// packages/ag-charts-community/src/scale/linearScale.ts\nvar LinearScale = class extends ContinuousScale {\n constructor() {\n super([0, 1], [0, 1]);\n this.type = \"number\";\n }\n toDomain(d) {\n return d;\n }\n ticks() {\n var _a;\n const count = (_a = this.tickCount) != null ? _a : ContinuousScale.defaultTickCount;\n if (!this.domain || this.domain.length < 2 || count < 1 || this.domain.some(d => !isFinite(d))) {\n return [];\n }\n this.refresh();\n const [d0, d1] = this.getDomain();\n const {\n interval\n } = this;\n if (interval) {\n const step = Math.abs(interval);\n const availableRange = this.getPixelRange();\n if (!isDenseInterval({\n start: d0,\n stop: d1,\n interval: step,\n availableRange\n })) {\n return range(d0, d1, step);\n }\n }\n return ticks_default(d0, d1, count, this.minTickCount, this.maxTickCount);\n }\n update() {\n if (!this.domain || this.domain.length < 2) {\n return;\n }\n if (this.nice) {\n this.updateNiceDomain();\n }\n }\n getTickStep(start, stop) {\n var _a, _b;\n const count = (_a = this.tickCount) != null ? _a : ContinuousScale.defaultTickCount;\n return (_b = this.interval) != null ? _b : tickStep(start, stop, count, this.minTickCount, this.maxTickCount);\n }\n /**\n * Extends the domain so that it starts and ends on nice round values.\n */\n updateNiceDomain() {\n var _a;\n const count = (_a = this.tickCount) != null ? _a : ContinuousScale.defaultTickCount;\n if (count < 1) {\n this.niceDomain = [...this.domain];\n return;\n }\n let [start, stop] = this.domain;\n if (count === 1) {\n [start, stop] = singleTickDomain(start, stop);\n } else {\n const roundStart = start > stop ? Math.ceil : Math.floor;\n const roundStop = stop < start ? Math.floor : Math.ceil;\n const maxAttempts = 4;\n for (let i = 0; i < maxAttempts; i++) {\n const prev0 = start;\n const prev1 = stop;\n const step = this.getTickStep(start, stop);\n const [d0, d1] = this.domain;\n if (step >= 1) {\n start = roundStart(d0 / step) * step;\n stop = roundStop(d1 / step) * step;\n } else {\n const s = 1 / step;\n start = roundStart(d0 * s) / s;\n stop = roundStop(d1 * s) / s;\n }\n if (start === prev0 && stop === prev1) {\n break;\n }\n }\n }\n this.niceDomain = [start, stop];\n }\n tickFormat({\n ticks: specifiedTicks,\n specifier\n }) {\n return tickFormat(specifiedTicks != null ? specifiedTicks : this.ticks(), specifier);\n }\n};\n\n// packages/ag-charts-community/src/util/secondaryAxisTicks.ts\nfunction calculateNiceSecondaryAxis(domain, primaryTickCount, reverse) {\n let [start, stop] = findMinMax(domain);\n start = calculateNiceStart(Math.floor(start), stop, primaryTickCount);\n const step = getTickStep(start, stop, primaryTickCount);\n const segments = primaryTickCount - 1;\n stop = start + segments * step;\n const d = reverse ? [stop, start] : [start, stop];\n const ticks = getTicks(start, step, primaryTickCount);\n return [d, ticks];\n}\nfunction calculateNiceStart(a, b, count) {\n const rawStep = Math.abs(b - a) / (count - 1);\n const order = Math.floor(Math.log10(rawStep));\n const magnitude = Math.pow(10, order);\n return Math.floor(a / magnitude) * magnitude;\n}\nfunction getTicks(start, step, count) {\n const stepPower = Math.floor(Math.log10(step));\n const fractionDigits = step > 0 && step < 1 ? Math.abs(stepPower) : 0;\n const f = Math.pow(10, fractionDigits);\n const ticks = createNumericTicks(fractionDigits);\n for (let i = 0; i < count; i++) {\n const tick = start + step * i;\n ticks[i] = Math.round(tick * f) / f;\n }\n return ticks;\n}\nfunction getTickStep(start, stop, count) {\n const segments = count - 1;\n const rawStep = (stop - start) / segments;\n return calculateNextNiceStep(rawStep);\n}\nfunction calculateNextNiceStep(rawStep) {\n const order = Math.floor(Math.log10(rawStep));\n const magnitude = Math.pow(10, order);\n const 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}\n\n// packages/ag-charts-community/src/chart/axis/numberAxis.ts\nvar NumberAxisTick = class extends AxisTick {\n constructor() {\n super(...arguments);\n this.minSpacing = NaN;\n this.maxSpacing = NaN;\n }\n};\n__decorateClass([Validate(MIN_SPACING), Default(NaN)], NumberAxisTick.prototype, \"minSpacing\", 2);\n__decorateClass([Validate(MAX_SPACING), Default(NaN)], NumberAxisTick.prototype, \"maxSpacing\", 2);\nvar NumberAxis = class extends CartesianAxis {\n constructor(moduleCtx, scale2 = new LinearScale()) {\n super(moduleCtx, scale2);\n this.min = NaN;\n this.max = NaN;\n }\n normaliseDataDomain(d) {\n const {\n min,\n max\n } = this;\n const {\n extent: extent2,\n clipped\n } = normalisedExtentWithMetadata(d, min, max);\n return {\n domain: extent2,\n clipped\n };\n }\n createTick() {\n return new NumberAxisTick();\n }\n updateSecondaryAxisTicks(primaryTickCount) {\n if (this.dataDomain == null) {\n throw new Error(\"AG Charts - dataDomain not calculated, cannot perform tick calculation.\");\n }\n if (this.dataDomain.domain.length === 0) return [];\n const [d, ticks] = calculateNiceSecondaryAxis(this.dataDomain.domain, primaryTickCount != null ? primaryTickCount : 0, this.reverse);\n this.scale.nice = false;\n this.scale.domain = d;\n this.scale.update();\n return ticks;\n }\n formatDatum(datum) {\n if (typeof datum === \"number\") {\n return datum.toFixed(2);\n } else {\n return String(datum);\n }\n }\n};\nNumberAxis.className = \"NumberAxis\";\nNumberAxis.type = \"number\";\n__decorateClass([Validate(AND(NUMBER_OR_NAN, LESS_THAN(\"max\"))), Default(NaN)], NumberAxis.prototype, \"min\", 2);\n__decorateClass([Validate(AND(NUMBER_OR_NAN, GREATER_THAN(\"min\"))), Default(NaN)], NumberAxis.prototype, \"max\", 2);\n\n// packages/ag-charts-community/src/chart/axis/logAxis.ts\nvar NON_ZERO_NUMBER = predicateWithMessage(value => isNumber(value) && value !== 0, \"a non-zero number\");\nvar LogAxis = class extends NumberAxis {\n constructor(moduleCtx) {\n super(moduleCtx, new LogScale());\n this.min = NaN;\n this.max = NaN;\n }\n normaliseDataDomain(d) {\n const {\n min,\n max\n } = this;\n const {\n extent: extent2,\n clipped\n } = normalisedExtentWithMetadata(d, min, max);\n const isInverted = extent2[0] > extent2[1];\n const crossesZero = extent2[0] < 0 && extent2[1] > 0;\n const hasZeroExtent = extent2[0] === 0 && extent2[1] === 0;\n const invalidDomain = isInverted || crossesZero || hasZeroExtent;\n if (invalidDomain) {\n if (crossesZero) {\n Logger.warn(`the data domain crosses zero, the chart data cannot be rendered. See log axis documentation for more information.`);\n } else if (hasZeroExtent) {\n Logger.warn(`the data domain has 0 extent, no data is rendered.`);\n }\n }\n if (extent2[0] === 0) {\n extent2[0] = 1;\n }\n if (extent2[1] === 0) {\n extent2[1] = -1;\n }\n return {\n domain: extent2,\n clipped\n };\n }\n set base(value) {\n this.scale.base = value;\n }\n get base() {\n return this.scale.base;\n }\n};\nLogAxis.className = \"LogAxis\";\nLogAxis.type = \"log\";\n__decorateClass([Validate(AND(NUMBER_OR_NAN, NON_ZERO_NUMBER, LESS_THAN(\"max\"))), Default(NaN)], LogAxis.prototype, \"min\", 2);\n__decorateClass([Validate(AND(NUMBER_OR_NAN, NON_ZERO_NUMBER, GREATER_THAN(\"min\"))), Default(NaN)], LogAxis.prototype, \"max\", 2);\n\n// packages/ag-charts-community/src/chart/axis/timeAxis.ts\nvar TimeAxisTick = class extends AxisTick {\n constructor() {\n super(...arguments);\n this.minSpacing = NaN;\n this.maxSpacing = NaN;\n }\n};\n__decorateClass([Validate(MIN_SPACING), Default(NaN)], TimeAxisTick.prototype, \"minSpacing\", 2);\n__decorateClass([Validate(MAX_SPACING), Default(NaN)], TimeAxisTick.prototype, \"maxSpacing\", 2);\nvar TimeAxis = class extends CartesianAxis {\n constructor(moduleCtx) {\n super(moduleCtx, new TimeScale());\n this.min = void 0;\n this.max = void 0;\n this.refreshScale();\n }\n normaliseDataDomain(d) {\n var _a;\n let {\n min,\n max\n } = this;\n let clipped = false;\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 = ((_a = extent(d)) != null ? _a : [0, 1e3]).map(x => new Date(x));\n }\n if (min instanceof Date) {\n clipped || (clipped = min > d[0]);\n d = [min, d[1]];\n }\n if (max instanceof Date) {\n clipped || (clipped = max < d[1]);\n d = [d[0], max];\n }\n if (d[0] > d[1]) {\n d = [];\n }\n return {\n domain: d,\n clipped\n };\n }\n createTick() {\n return new TimeAxisTick();\n }\n onLabelFormatChange(ticks, domain, format2) {\n if (format2) {\n super.onLabelFormatChange(ticks, domain, format2);\n } else {\n this.labelFormatter = this.scale.tickFormat({\n ticks,\n domain\n });\n }\n }\n calculatePadding() {\n return [0, 0];\n }\n formatDatum(datum) {\n var _a;\n const formatter = this.scale.tickFormat({\n specifier: \"%m/%d/%y, %H:%M:%S\"\n });\n return (_a = this.moduleCtx.callbackCache.call(formatter, datum)) != null ? _a : String(datum);\n }\n};\nTimeAxis.className = \"TimeAxis\";\nTimeAxis.type = \"time\";\n__decorateClass([Validate(AND(DATE_OR_DATETIME_MS, LESS_THAN(\"max\")), {\n optional: true\n})], TimeAxis.prototype, \"min\", 2);\n__decorateClass([Validate(AND(DATE_OR_DATETIME_MS, GREATER_THAN(\"min\")), {\n optional: true\n})], TimeAxis.prototype, \"max\", 2);\n\n// packages/ag-charts-community/src/scene/shape/rect.ts\nvar epsilon = 1e-6;\nvar cornerEdges = (leadingEdge, trailingEdge, leadingInset, trailingInset, cornerRadius) => {\n let leadingClipped = false;\n let trailingClipped = false;\n let leading0 = trailingInset - Math.sqrt(Math.max(__pow(cornerRadius, 2) - __pow(leadingInset, 2), 0));\n let leading1 = 0;\n let trailing0 = 0;\n let trailing1 = leadingInset - Math.sqrt(Math.max(__pow(cornerRadius, 2) - __pow(trailingInset, 2), 0));\n if (leading0 > leadingEdge) {\n leadingClipped = true;\n leading0 = leadingEdge;\n leading1 = leadingInset - Math.sqrt(Math.max(__pow(cornerRadius, 2) - __pow(trailingInset - leadingEdge, 2)));\n } else if (leading0 < epsilon) {\n leading0 = 0;\n }\n if (trailing1 > trailingEdge) {\n trailingClipped = true;\n trailing0 = trailingInset - Math.sqrt(Math.max(__pow(cornerRadius, 2) - __pow(leadingInset - trailingEdge, 2)));\n trailing1 = trailingEdge;\n } else if (trailing1 < epsilon) {\n trailing1 = 0;\n }\n return {\n leading0,\n leading1,\n trailing0,\n trailing1,\n leadingClipped,\n trailingClipped\n };\n};\nvar drawCorner = (path, {\n x0,\n y0,\n x1,\n y1,\n cx,\n cy\n}, cornerRadius, move) => {\n if (move) {\n path.moveTo(x0, y0);\n }\n if (x0 !== x1 || y0 !== y1) {\n const r0 = Math.atan2(y0 - cy, x0 - cx);\n const r1 = Math.atan2(y1 - cy, x1 - cx);\n path.arc(cx, cy, cornerRadius, r0, r1);\n } else {\n path.lineTo(x0, y0);\n }\n};\nvar insetCornerRadiusRect = (path, x, y, width, height, cornerRadii, clipBBox) => {\n let {\n topLeft: topLeftCornerRadius,\n topRight: topRightCornerRadius,\n bottomRight: bottomRightCornerRadius,\n bottomLeft: bottomLeftCornerRadius\n } = cornerRadii;\n const maxVerticalCornerRadius = Math.max(topLeftCornerRadius + bottomLeftCornerRadius, topRightCornerRadius + bottomRightCornerRadius);\n const maxHorizontalCornerRadius = Math.max(topLeftCornerRadius + topRightCornerRadius, bottomLeftCornerRadius + bottomRightCornerRadius);\n if (maxVerticalCornerRadius <= 0 && maxHorizontalCornerRadius <= 0) {\n if (clipBBox == null) {\n path.rect(x, y, width, height);\n } else {\n path.rect(clipBBox.x, clipBBox.y, clipBBox.width, clipBBox.height);\n }\n return;\n } else if (clipBBox == null && topLeftCornerRadius === topRightCornerRadius && topLeftCornerRadius === bottomRightCornerRadius && topLeftCornerRadius === bottomLeftCornerRadius) {\n path.roundRect(x, y, width, height, topLeftCornerRadius);\n return;\n }\n if (width < 0) {\n x += width;\n width = Math.abs(width);\n }\n if (height < 0) {\n y += height;\n height = Math.abs(height);\n }\n if (width <= 0 || height <= 0) return;\n if (clipBBox == null) {\n clipBBox = new BBox(x, y, width, height);\n } else {\n const x0 = Math.max(x, clipBBox.x);\n const x1 = Math.min(x + width, clipBBox.x + clipBBox.width);\n const y0 = Math.max(y, clipBBox.y);\n const y1 = Math.min(y + height, clipBBox.y + clipBBox.height);\n clipBBox = new BBox(x0, y0, x1 - x0, y1 - y0);\n }\n const borderScale = Math.max(maxVerticalCornerRadius / height, maxHorizontalCornerRadius / width, 1);\n if (borderScale > 1) {\n topLeftCornerRadius /= borderScale;\n topRightCornerRadius /= borderScale;\n bottomRightCornerRadius /= borderScale;\n bottomLeftCornerRadius /= borderScale;\n }\n let drawTopLeftCorner = true;\n let drawTopRightCorner = true;\n let drawBottomRightCorner = true;\n let drawBottomLeftCorner = true;\n let topLeftCorner;\n let topRightCorner;\n let bottomRightCorner;\n let bottomLeftCorner;\n if (drawTopLeftCorner) {\n const nodes = cornerEdges(clipBBox.height, clipBBox.width, Math.max(x + topLeftCornerRadius - clipBBox.x, 0), Math.max(y + topLeftCornerRadius - clipBBox.y, 0), topLeftCornerRadius);\n if (nodes.leadingClipped) drawBottomLeftCorner = false;\n if (nodes.trailingClipped) drawTopRightCorner = false;\n const x0 = Math.max(clipBBox.x + nodes.leading1, clipBBox.x);\n const y0 = Math.max(clipBBox.y + nodes.leading0, clipBBox.y);\n const x1 = Math.max(clipBBox.x + nodes.trailing1, clipBBox.x);\n const y1 = Math.max(clipBBox.y + nodes.trailing0, clipBBox.y);\n const cx = x + topLeftCornerRadius;\n const cy = y + topLeftCornerRadius;\n topLeftCorner = {\n x0,\n y0,\n x1,\n y1,\n cx,\n cy\n };\n }\n if (drawTopRightCorner) {\n const nodes = cornerEdges(clipBBox.width, clipBBox.height, Math.max(y + topRightCornerRadius - clipBBox.y, 0), Math.max(clipBBox.x + clipBBox.width - (x + width - topRightCornerRadius), 0), topRightCornerRadius);\n if (nodes.leadingClipped) drawTopLeftCorner = false;\n if (nodes.trailingClipped) drawBottomRightCorner = false;\n const x0 = Math.min(clipBBox.x + clipBBox.width - nodes.leading0, clipBBox.x + clipBBox.width);\n const y0 = Math.max(clipBBox.y + nodes.leading1, clipBBox.y);\n const x1 = Math.min(clipBBox.x + clipBBox.width - nodes.trailing0, clipBBox.x + clipBBox.width);\n const y1 = Math.max(clipBBox.y + nodes.trailing1, clipBBox.y);\n const cx = x + width - topRightCornerRadius;\n const cy = y + topRightCornerRadius;\n topRightCorner = {\n x0,\n y0,\n x1,\n y1,\n cx,\n cy\n };\n }\n if (drawBottomRightCorner) {\n const nodes = cornerEdges(clipBBox.height, clipBBox.width, Math.max(clipBBox.x + clipBBox.width - (x + width - bottomRightCornerRadius), 0), Math.max(clipBBox.y + clipBBox.height - (y + height - bottomRightCornerRadius), 0), bottomRightCornerRadius);\n if (nodes.leadingClipped) drawTopRightCorner = false;\n if (nodes.trailingClipped) drawBottomLeftCorner = false;\n const x0 = Math.min(clipBBox.x + clipBBox.width - nodes.leading1, clipBBox.x + clipBBox.width);\n const y0 = Math.min(clipBBox.y + clipBBox.height - nodes.leading0, clipBBox.y + clipBBox.height);\n const x1 = Math.min(clipBBox.x + clipBBox.width - nodes.trailing1, clipBBox.x + clipBBox.width);\n const y1 = Math.min(clipBBox.y + clipBBox.height - nodes.trailing0, clipBBox.y + clipBBox.height);\n const cx = x + width - bottomRightCornerRadius;\n const cy = y + height - bottomRightCornerRadius;\n bottomRightCorner = {\n x0,\n y0,\n x1,\n y1,\n cx,\n cy\n };\n }\n if (drawBottomLeftCorner) {\n const nodes = cornerEdges(clipBBox.width, clipBBox.height, Math.max(clipBBox.y + clipBBox.height - (y + height - bottomLeftCornerRadius), 0), Math.max(x + bottomLeftCornerRadius - clipBBox.x, 0), bottomLeftCornerRadius);\n if (nodes.leadingClipped) drawBottomRightCorner = false;\n if (nodes.trailingClipped) drawTopLeftCorner = false;\n const x0 = Math.max(clipBBox.x + nodes.leading0, clipBBox.x);\n const y0 = Math.min(clipBBox.y + clipBBox.height - nodes.leading1, clipBBox.y + clipBBox.height);\n const x1 = Math.max(clipBBox.x + nodes.trailing0, clipBBox.x);\n const y1 = Math.min(clipBBox.y + clipBBox.height - nodes.trailing1, clipBBox.y + clipBBox.height);\n const cx = x + bottomLeftCornerRadius;\n const cy = y + height - bottomLeftCornerRadius;\n bottomLeftCorner = {\n x0,\n y0,\n x1,\n y1,\n cx,\n cy\n };\n }\n let didMove = false;\n if (drawTopLeftCorner && topLeftCorner != null) {\n drawCorner(path, topLeftCorner, topLeftCornerRadius, !didMove);\n didMove || (didMove = true);\n }\n if (drawTopRightCorner && topRightCorner != null) {\n drawCorner(path, topRightCorner, topRightCornerRadius, !didMove);\n didMove || (didMove = true);\n }\n if (drawBottomRightCorner && bottomRightCorner != null) {\n drawCorner(path, bottomRightCorner, bottomRightCornerRadius, !didMove);\n didMove || (didMove = true);\n }\n if (drawBottomLeftCorner && bottomLeftCorner != null) {\n drawCorner(path, bottomLeftCorner, bottomLeftCornerRadius, !didMove);\n didMove || (didMove = true);\n }\n path.closePath();\n};\nvar Rect = class extends Path {\n constructor() {\n super(...arguments);\n this.borderPath = new ExtendedPath2D();\n this.x = 0;\n this.y = 0;\n this.width = 10;\n this.height = 10;\n this.topLeftCornerRadius = 0;\n this.topRightCornerRadius = 0;\n this.bottomRightCornerRadius = 0;\n this.bottomLeftCornerRadius = 0;\n this.clipBBox = void 0;\n this.crisp = false;\n this.lastUpdatePathStrokeWidth = Shape.defaultStyles.strokeWidth;\n this.effectiveStrokeWidth = Shape.defaultStyles.strokeWidth;\n this.hittester = super.isPointInPath;\n this.distanceCalculator = super.distanceSquared;\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 }\n set cornerRadius(cornerRadius) {\n this.topLeftCornerRadius = cornerRadius;\n this.topRightCornerRadius = cornerRadius;\n this.bottomRightCornerRadius = cornerRadius;\n this.bottomLeftCornerRadius = cornerRadius;\n }\n isDirtyPath() {\n return this.lastUpdatePathStrokeWidth !== this.strokeWidth || Boolean(this.path.isDirty() || this.borderPath.isDirty());\n }\n updatePath() {\n var _a, _b, _c;\n const {\n path,\n borderPath,\n crisp,\n topLeftCornerRadius: topLeft,\n topRightCornerRadius: topRight,\n bottomRightCornerRadius: bottomRight,\n bottomLeftCornerRadius: bottomLeft\n } = this;\n let {\n x,\n y,\n width: w,\n height: h,\n strokeWidth,\n clipBBox\n } = this;\n const pixelRatio = (_b = (_a = this.layerManager) == null ? void 0 : _a.canvas.pixelRatio) != null ? _b : 1;\n const pixelSize = 1 / pixelRatio;\n let microPixelEffectOpacity = 1;\n path.clear(true);\n borderPath.clear(true);\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 clipBBox = clipBBox != null ? new BBox(this.align(clipBBox.x), this.align(clipBBox.y), this.align(clipBBox.x, clipBBox.width), this.align(clipBBox.y, clipBBox.height)) : void 0;\n }\n if (strokeWidth) {\n if (w < pixelSize) {\n const lx = x + pixelSize / 2;\n borderPath.moveTo(lx, y);\n borderPath.lineTo(lx, y + h);\n strokeWidth = pixelSize;\n this.borderClipPath = void 0;\n } else if (h < pixelSize) {\n const ly = y + pixelSize / 2;\n borderPath.moveTo(x, ly);\n borderPath.lineTo(x + w, ly);\n strokeWidth = pixelSize;\n this.borderClipPath = void 0;\n } else if (strokeWidth < w && strokeWidth < h) {\n const halfStrokeWidth = strokeWidth / 2;\n x += halfStrokeWidth;\n y += halfStrokeWidth;\n w -= strokeWidth;\n h -= strokeWidth;\n const adjustedClipBBox = clipBBox == null ? void 0 : clipBBox.clone().shrink(halfStrokeWidth);\n const cornerRadii = {\n topLeft: topLeft > 0 ? topLeft - strokeWidth : 0,\n topRight: topRight > 0 ? topRight - strokeWidth : 0,\n bottomRight: bottomRight > 0 ? bottomRight - strokeWidth : 0,\n bottomLeft: bottomLeft > 0 ? bottomLeft - strokeWidth : 0\n };\n this.borderClipPath = void 0;\n if (w > 0 && h > 0 && (adjustedClipBBox == null || (adjustedClipBBox == null ? void 0 : adjustedClipBBox.width) > 0 && (adjustedClipBBox == null ? void 0 : adjustedClipBBox.height) > 0)) {\n insetCornerRadiusRect(path, x, y, w, h, cornerRadii, adjustedClipBBox);\n insetCornerRadiusRect(borderPath, x, y, w, h, cornerRadii, adjustedClipBBox);\n }\n } else {\n this.borderClipPath = (_c = this.borderClipPath) != null ? _c : new ExtendedPath2D();\n this.borderClipPath.clear(true);\n this.borderClipPath.rect(x, y, w, h);\n borderPath.rect(x, y, w, h);\n }\n } else {\n const cornerRadii = {\n topLeft,\n topRight,\n bottomRight,\n bottomLeft\n };\n this.borderClipPath = void 0;\n insetCornerRadiusRect(path, x, y, w, h, cornerRadii, clipBBox);\n }\n if ([topLeft, topRight, bottomRight, bottomLeft].every(r => r === 0)) {\n this.hittester = (hitX, hitY) => {\n const point = this.transformPoint(hitX, hitY);\n return this.getCachedBBox().containsPoint(point.x, point.y);\n };\n this.distanceSquared = (hitX, hitY) => this.getCachedBBox().distanceSquared(hitX, hitY);\n } else {\n this.hittester = super.isPointInPath;\n this.distanceCalculator = super.distanceSquared;\n }\n this.effectiveStrokeWidth = strokeWidth;\n this.lastUpdatePathStrokeWidth = strokeWidth;\n this.microPixelEffectOpacity = microPixelEffectOpacity;\n }\n computeBBox() {\n var _a;\n const {\n x,\n y,\n width,\n height,\n clipBBox\n } = this;\n return (_a = clipBBox == null ? void 0 : clipBBox.clone()) != null ? _a : new BBox(x, y, width, height);\n }\n isPointInPath(x, y) {\n return this.hittester(x, y);\n }\n get midPoint() {\n return {\n x: this.x + this.width / 2,\n y: this.y + this.height / 2\n };\n }\n distanceSquared(x, y) {\n return this.distanceCalculator(x, y);\n }\n applyFillAlpha(ctx) {\n const {\n fillOpacity,\n microPixelEffectOpacity,\n opacity\n } = this;\n ctx.globalAlpha *= opacity * fillOpacity * microPixelEffectOpacity;\n }\n renderStroke(ctx) {\n const {\n stroke,\n effectiveStrokeWidth\n } = this;\n if (stroke && effectiveStrokeWidth) {\n const {\n globalAlpha\n } = ctx;\n const {\n strokeOpacity,\n lineDash,\n lineDashOffset,\n lineCap,\n lineJoin,\n borderPath,\n borderClipPath,\n opacity,\n microPixelEffectOpacity\n } = this;\n if (borderClipPath) {\n ctx.clip(borderClipPath.getPath2D());\n }\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(borderPath.getPath2D());\n ctx.globalAlpha = globalAlpha;\n }\n }\n};\nRect.className = \"Rect\";\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"x\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"y\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"width\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"height\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"topLeftCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"topRightCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"bottomRightCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"bottomLeftCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"clipBBox\", 2);\n__decorateClass([ScenePathChangeDetection()], Rect.prototype, \"crisp\", 2);\n\n// packages/ag-charts-community/src/chart/background/background.ts\nvar Background = class extends BaseModuleInstance {\n constructor(ctx) {\n super();\n this.node = new Group({\n name: \"background\",\n zIndex: 0 /* SERIES_BACKGROUND_ZINDEX */\n });\n this.rectNode = new Rect();\n this.visible = true;\n this.fill = \"white\";\n this.node.appendChild(this.rectNode);\n this.destroyFns.push(ctx.scene.attachNode(this.node), ctx.layoutService.addListener(\"layout-complete\", e => this.onLayoutComplete(e)));\n }\n onLayoutComplete(e) {\n const {\n width,\n height\n } = e.chart;\n this.rectNode.width = width;\n this.rectNode.height = height;\n }\n};\n__decorateClass([Validate(BOOLEAN), ProxyPropertyOnWrite(\"node\", \"visible\")], Background.prototype, \"visible\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n}), ProxyPropertyOnWrite(\"rectNode\", \"fill\")], Background.prototype, \"fill\", 2);\n__decorateClass([Validate(OBJECT, {\n optional: true\n})], Background.prototype, \"image\", 2);\n\n// packages/ag-charts-community/src/chart/background/backgroundModule.ts\nvar BackgroundModule = {\n type: \"root\",\n optionsKey: \"background\",\n packageType: \"community\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"],\n instanceConstructor: Background\n};\n\n// packages/ag-charts-community/src/chart/gridLayout.ts\nfunction gridLayout({\n orientation,\n bboxes,\n maxHeight,\n maxWidth,\n itemPaddingY = 0,\n itemPaddingX = 0,\n forceResult = false\n}) {\n const horizontal = orientation === \"horizontal\";\n const primary = {\n max: horizontal ? maxWidth : maxHeight,\n fn: horizontal ? b => b.width : b => b.height,\n padding: horizontal ? itemPaddingX : itemPaddingY\n };\n const secondary = {\n max: horizontal ? maxHeight : maxWidth,\n fn: horizontal ? b => b.height : b => b.width,\n padding: horizontal ? itemPaddingY : itemPaddingX\n };\n let processedBBoxCount = 0;\n const rawPages = [];\n while (processedBBoxCount < bboxes.length) {\n const unprocessedBBoxes = bboxes.slice(processedBBoxCount);\n const result = processBBoxes(unprocessedBBoxes, processedBBoxCount, primary, secondary, forceResult);\n if (!result) {\n return;\n }\n processedBBoxCount += result.processedBBoxCount;\n rawPages.push(result.pageIndices);\n }\n return buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX);\n}\nfunction processBBoxes(bboxes, indexOffset, primary, secondary, forceResult) {\n const minGuess = 1;\n let startingGuess = estimateStartingGuess(bboxes, primary);\n if (startingGuess < minGuess) {\n if (!forceResult) {\n return;\n }\n startingGuess = minGuess;\n }\n let guess = startingGuess;\n while (guess >= minGuess) {\n const pageIndices = calculatePage(bboxes, indexOffset, guess, primary, secondary, forceResult);\n if (pageIndices == null && guess <= minGuess) {\n return;\n }\n if (pageIndices == null) {\n guess--;\n continue;\n }\n if (typeof pageIndices === \"number\") {\n if (pageIndices <= minGuess) {\n return;\n }\n guess = pageIndices < guess && pageIndices > minGuess ? pageIndices : guess;\n guess--;\n continue;\n }\n const processedBBoxCount = pageIndices.length * pageIndices[0].length;\n return {\n processedBBoxCount,\n pageIndices\n };\n }\n}\nfunction calculatePage(bboxes, indexOffset, primaryCount, primary, secondary, forceResult) {\n var _a;\n const result = [];\n let sumSecondary = 0;\n let currentMaxSecondary = 0;\n let currentPrimaryIndices = [];\n const maxPrimaryValues = [];\n for (let bboxIndex = 0; bboxIndex < bboxes.length; bboxIndex++) {\n const primaryValueIdx = (bboxIndex + primaryCount) % primaryCount;\n if (primaryValueIdx === 0) {\n sumSecondary += currentMaxSecondary;\n currentMaxSecondary = 0;\n if (currentPrimaryIndices.length > 0) {\n result.push(currentPrimaryIndices);\n }\n currentPrimaryIndices = [];\n }\n const primaryValue = primary.fn(bboxes[bboxIndex]) + primary.padding;\n maxPrimaryValues[primaryValueIdx] = Math.max((_a = maxPrimaryValues[primaryValueIdx]) != null ? _a : 0, primaryValue);\n currentMaxSecondary = Math.max(currentMaxSecondary, secondary.fn(bboxes[bboxIndex]) + secondary.padding);\n const currentSecondaryDimension = sumSecondary + currentMaxSecondary;\n const returnResult = !forceResult || result.length > 0;\n if (currentSecondaryDimension > secondary.max && returnResult) {\n currentPrimaryIndices = [];\n break;\n }\n const sumPrimary = maxPrimaryValues.reduce((sum2, next) => sum2 + next, 0);\n if (sumPrimary > primary.max && !forceResult) {\n if (maxPrimaryValues.length < primaryCount) {\n return maxPrimaryValues.length;\n }\n return;\n }\n currentPrimaryIndices.push(bboxIndex + indexOffset);\n }\n if (currentPrimaryIndices.length > 0) {\n result.push(currentPrimaryIndices);\n }\n return result.length > 0 ? result : void 0;\n}\nfunction buildPages(rawPages, orientation, bboxes, itemPaddingY, itemPaddingX) {\n let maxPageWidth = 0;\n let maxPageHeight = 0;\n const pages = rawPages.map(indices => {\n if (orientation === \"horizontal\") {\n indices = transpose(indices);\n }\n let endIndex = 0;\n const columns = indices.map(colIndices => {\n const colBBoxes = colIndices.map(bboxIndex => {\n endIndex = Math.max(bboxIndex, endIndex);\n return bboxes[bboxIndex];\n });\n let columnHeight = 0;\n let columnWidth = 0;\n colBBoxes.forEach(bbox => {\n columnHeight += bbox.height + itemPaddingY;\n columnWidth = Math.max(columnWidth, bbox.width + itemPaddingX);\n });\n return {\n indices: colIndices,\n bboxes: colBBoxes,\n columnHeight: Math.ceil(columnHeight),\n columnWidth: Math.ceil(columnWidth)\n };\n });\n let pageWidth = 0;\n let pageHeight = 0;\n columns.forEach(column => {\n pageWidth += column.columnWidth;\n pageHeight = Math.max(pageHeight, column.columnHeight);\n });\n maxPageWidth = Math.max(pageWidth, maxPageWidth);\n maxPageHeight = Math.max(pageHeight, maxPageHeight);\n return {\n columns,\n startIndex: indices[0][0],\n endIndex,\n pageWidth,\n pageHeight\n };\n });\n return {\n pages,\n maxPageWidth,\n maxPageHeight\n };\n}\nfunction transpose(data) {\n const result = [];\n for (const _ of data[0]) {\n result.push([]);\n }\n data.forEach((innerData, dataIdx) => {\n innerData.forEach((item, itemIdx) => {\n result[itemIdx][dataIdx] = item;\n });\n });\n return result;\n}\nfunction estimateStartingGuess(bboxes, primary) {\n const n = bboxes.length;\n let primarySum = 0;\n for (let bboxIndex = 0; bboxIndex < n; bboxIndex++) {\n primarySum += primary.fn(bboxes[bboxIndex]) + primary.padding;\n if (primarySum > primary.max) {\n const ratio = n / bboxIndex;\n if (ratio < 2) {\n return Math.ceil(n / 2);\n }\n return bboxIndex;\n }\n }\n return n;\n}\n\n// packages/ag-charts-community/src/chart/markerLabel.ts\nvar MarkerLabel = class extends Group {\n constructor() {\n super({\n name: \"markerLabelGroup\"\n });\n this.label = new Text();\n this.line = new Line();\n this._marker = new Square();\n this._markerSize = 15;\n this._spacing = 8;\n const {\n marker,\n label,\n line\n } = this;\n label.textBaseline = \"middle\";\n label.fontSize = 12;\n label.fontFamily = \"Verdana, sans-serif\";\n label.fill = \"black\";\n label.y = 1;\n this.append([line, marker, label]);\n this.update();\n }\n set marker(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 get marker() {\n return this._marker;\n }\n set markerSize(value) {\n if (this._markerSize !== value) {\n this._markerSize = value;\n this.update();\n }\n }\n get markerSize() {\n return this._markerSize;\n }\n set spacing(value) {\n if (this._spacing !== value) {\n this._spacing = value;\n this.update();\n }\n }\n get spacing() {\n return this._spacing;\n }\n setSeriesStrokeOffset(xOff) {\n const offset4 = this.marker.size / 2 + xOff;\n this.line.x1 = -offset4;\n this.line.x2 = offset4;\n this.line.y1 = 0;\n this.line.y2 = 0;\n this.line.markDirtyTransform();\n this.update();\n }\n update() {\n const {\n markerSize\n } = this;\n const center = this.marker.constructor.center;\n this.marker.size = markerSize;\n this.marker.x = (center.x - 0.5) * markerSize;\n this.marker.y = (center.y - 0.5) * markerSize;\n const lineEnd = this.line.visible ? this.line.x2 : -Infinity;\n const markerEnd = markerSize / 2;\n this.label.x = Math.max(lineEnd, markerEnd) + this.spacing;\n }\n render(renderCtx) {\n this.marker.opacity = this.opacity;\n this.label.opacity = this.opacity;\n this.line.opacity = this.opacity;\n super.render(renderCtx);\n }\n};\nMarkerLabel.className = \"MarkerLabel\";\n__decorateClass([ProxyPropertyOnWrite(\"label\")], MarkerLabel.prototype, \"text\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"label\")], MarkerLabel.prototype, \"fontStyle\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"label\")], MarkerLabel.prototype, \"fontWeight\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"label\")], MarkerLabel.prototype, \"fontSize\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"label\")], MarkerLabel.prototype, \"fontFamily\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"label\", \"fill\")], MarkerLabel.prototype, \"color\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"marker\", \"fill\")], MarkerLabel.prototype, \"markerFill\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"marker\", \"stroke\")], MarkerLabel.prototype, \"markerStroke\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"marker\", \"strokeWidth\")], MarkerLabel.prototype, \"markerStrokeWidth\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"marker\", \"fillOpacity\")], MarkerLabel.prototype, \"markerFillOpacity\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"marker\", \"strokeOpacity\")], MarkerLabel.prototype, \"markerStrokeOpacity\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"marker\", \"visible\")], MarkerLabel.prototype, \"markerVisible\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"line\", \"stroke\")], MarkerLabel.prototype, \"lineStroke\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"line\", \"strokeWidth\")], MarkerLabel.prototype, \"lineStrokeWidth\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"line\", \"strokeOpacity\")], MarkerLabel.prototype, \"lineStrokeOpacity\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"line\", \"lineDash\")], MarkerLabel.prototype, \"lineLineDash\", 2);\n__decorateClass([ProxyPropertyOnWrite(\"line\", \"visible\")], MarkerLabel.prototype, \"lineVisible\", 2);\n\n// packages/ag-charts-community/src/chart/pagination/pagination.ts\nvar PaginationLabel = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.color = \"black\";\n this.fontStyle = void 0;\n this.fontWeight = void 0;\n this.fontSize = 12;\n this.fontFamily = \"Verdana, sans-serif\";\n }\n};\n__decorateClass([Validate(COLOR_STRING)], PaginationLabel.prototype, \"color\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n})], PaginationLabel.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n})], PaginationLabel.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PaginationLabel.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING)], PaginationLabel.prototype, \"fontFamily\", 2);\nvar PaginationMarkerStyle = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.size = 15;\n this.fill = void 0;\n this.fillOpacity = void 0;\n this.stroke = void 0;\n this.strokeWidth = 1;\n this.strokeOpacity = 1;\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER)], PaginationMarkerStyle.prototype, \"size\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], PaginationMarkerStyle.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], PaginationMarkerStyle.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], PaginationMarkerStyle.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PaginationMarkerStyle.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO)], PaginationMarkerStyle.prototype, \"strokeOpacity\", 2);\nvar PaginationMarker = class extends BaseProperties {\n constructor(parent) {\n super();\n this.parent = parent;\n this.shape = Triangle;\n this.size = 15;\n this.padding = 8;\n }\n};\n__decorateClass([ActionOnSet({\n changeValue() {\n if (this.parent.marker === this) {\n this.parent.onMarkerShapeChange();\n }\n }\n})], PaginationMarker.prototype, \"shape\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PaginationMarker.prototype, \"size\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PaginationMarker.prototype, \"padding\", 2);\nvar Pagination = class extends BaseProperties {\n constructor(chartUpdateCallback, pageUpdateCallback, regionManager, cursorManager) {\n super();\n this.chartUpdateCallback = chartUpdateCallback;\n this.pageUpdateCallback = pageUpdateCallback;\n this.regionManager = regionManager;\n this.cursorManager = cursorManager;\n this.id = createId(this);\n this.marker = new PaginationMarker(this);\n this.activeStyle = new PaginationMarkerStyle();\n this.inactiveStyle = new PaginationMarkerStyle();\n this.highlightStyle = new PaginationMarkerStyle();\n this.label = new PaginationLabel();\n this.group = new Group({\n name: \"pagination\"\n });\n this.labelNode = new Text();\n this.destroyFns = [];\n this.totalPages = 0;\n this.currentPage = 0;\n this.translationX = 0;\n this.translationY = 0;\n this.nextButtonDisabled = false;\n this.previousButtonDisabled = false;\n this._visible = true;\n this._enabled = true;\n this._orientation = \"vertical\";\n this._nextButton = new Triangle();\n this._previousButton = new Triangle();\n this.labelNode.setProperties({\n textBaseline: \"middle\",\n fontSize: 12,\n fontFamily: \"Verdana, sans-serif\",\n fill: \"black\",\n y: 1\n });\n this.group.append([this.nextButton, this.previousButton, this.labelNode]);\n const region = this.regionManager.addRegion(\"pagination\", this.group);\n this.destroyFns.push(region.addListener(\"click\", event => this.onPaginationClick(event)), region.addListener(\"hover\", event => this.onPaginationMouseMove(event)));\n this.update();\n this.updateMarkers();\n }\n destroy() {\n this.destroyFns.forEach(f => f());\n }\n set visible(value) {\n this._visible = value;\n this.updateGroupVisibility();\n }\n get visible() {\n return this._visible;\n }\n set enabled(value) {\n this._enabled = value;\n this.updateGroupVisibility();\n }\n get enabled() {\n return this._enabled;\n }\n updateGroupVisibility() {\n this.group.visible = this.enabled && this.visible;\n }\n set orientation(value) {\n this._orientation = value;\n switch (value) {\n case \"horizontal\":\n {\n this.previousButton.rotation = -Math.PI / 2;\n this.nextButton.rotation = Math.PI / 2;\n break;\n }\n case \"vertical\":\n default:\n {\n this.previousButton.rotation = 0;\n this.nextButton.rotation = Math.PI;\n }\n }\n }\n get orientation() {\n return this._orientation;\n }\n set nextButton(value) {\n if (this._nextButton !== value) {\n this.group.removeChild(this._nextButton);\n this._nextButton = value;\n this.group.appendChild(value);\n }\n }\n get nextButton() {\n return this._nextButton;\n }\n set previousButton(value) {\n if (this._previousButton !== value) {\n this.group.removeChild(this._previousButton);\n this._previousButton = value;\n this.group.appendChild(value);\n }\n }\n get previousButton() {\n return this._previousButton;\n }\n update() {\n this.updateLabel();\n this.updatePositions();\n this.enableOrDisableButtons();\n }\n updatePositions() {\n this.group.translationX = this.translationX;\n this.group.translationY = this.translationY;\n this.updateLabelPosition();\n this.updateNextButtonPosition();\n }\n updateLabelPosition() {\n const {\n size: markerSize,\n padding: markerPadding\n } = this.marker;\n this.nextButton.size = markerSize;\n this.previousButton.size = markerSize;\n this.labelNode.x = markerSize / 2 + markerPadding;\n }\n updateNextButtonPosition() {\n const labelBBox = this.labelNode.computeBBox();\n this.nextButton.translationX = labelBBox.x + labelBBox.width + this.marker.size / 2 + this.marker.padding;\n }\n updateLabel() {\n const {\n currentPage,\n totalPages: pages,\n labelNode,\n label: {\n color,\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily\n }\n } = this;\n labelNode.text = `${currentPage + 1} / ${pages}`;\n labelNode.fill = color;\n labelNode.fontStyle = fontStyle;\n labelNode.fontWeight = fontWeight;\n labelNode.fontSize = fontSize;\n labelNode.fontFamily = fontFamily;\n }\n updateMarkers() {\n const {\n nextButton,\n previousButton,\n nextButtonDisabled,\n previousButtonDisabled,\n activeStyle,\n inactiveStyle,\n highlightStyle,\n highlightActive\n } = this;\n const buttonStyle = (button, disabled) => {\n if (disabled) {\n return inactiveStyle;\n } else if (button === highlightActive) {\n return highlightStyle;\n }\n return activeStyle;\n };\n this.updateMarker(nextButton, buttonStyle(\"next\", nextButtonDisabled));\n this.updateMarker(previousButton, buttonStyle(\"previous\", previousButtonDisabled));\n }\n updateMarker(marker, style) {\n var _a;\n const {\n size\n } = this.marker;\n marker.size = size;\n marker.fill = style.fill;\n marker.fillOpacity = (_a = style.fillOpacity) != null ? _a : 1;\n marker.stroke = style.stroke;\n marker.strokeWidth = style.strokeWidth;\n marker.strokeOpacity = style.strokeOpacity;\n }\n enableOrDisableButtons() {\n const {\n currentPage,\n totalPages\n } = this;\n const zeroPagesToDisplay = totalPages === 0;\n const onLastPage = currentPage === totalPages - 1;\n const onFirstPage = currentPage === 0;\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.previousButtonDisabled = onFirstPage || zeroPagesToDisplay;\n }\n nextButtonContainsPoint(offsetX, offsetY) {\n return !this.nextButtonDisabled && this.nextButton.containsPoint(offsetX, offsetY);\n }\n previousButtonContainsPoint(offsetX, offsetY) {\n return !this.previousButtonDisabled && this.previousButton.containsPoint(offsetX, offsetY);\n }\n clickNext() {\n this.incrementPage();\n this.onPaginationChanged();\n }\n clickPrevious() {\n this.decrementPage();\n this.onPaginationChanged();\n }\n setPage(pageNumber) {\n pageNumber = clamp(0, pageNumber, this.totalPages - 1);\n if (this.currentPage !== pageNumber) {\n this.currentPage = pageNumber;\n this.onPaginationChanged();\n }\n }\n onPaginationClick(event) {\n const {\n offsetX,\n offsetY\n } = event;\n if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n this.clickNext();\n event.consume();\n } else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n this.clickPrevious();\n event.consume();\n }\n }\n onPaginationMouseMove(event) {\n const {\n offsetX,\n offsetY\n } = event;\n if (this.nextButtonContainsPoint(offsetX, offsetY)) {\n this.cursorManager.updateCursor(this.id, \"pointer\");\n this.highlightActive = \"next\";\n } else if (this.previousButtonContainsPoint(offsetX, offsetY)) {\n this.cursorManager.updateCursor(this.id, \"pointer\");\n this.highlightActive = \"previous\";\n } else {\n this.cursorManager.updateCursor(this.id);\n this.highlightActive = void 0;\n }\n this.updateMarkers();\n this.chartUpdateCallback(6 /* SCENE_RENDER */);\n }\n onPaginationChanged() {\n this.pageUpdateCallback(this.currentPage);\n }\n incrementPage() {\n this.currentPage = Math.min(this.currentPage + 1, this.totalPages - 1);\n }\n decrementPage() {\n this.currentPage = Math.max(this.currentPage - 1, 0);\n }\n onMarkerShapeChange() {\n const Marker2 = getMarker(this.marker.shape || Triangle);\n this.previousButton = new Marker2();\n this.nextButton = new Marker2();\n this.updatePositions();\n this.updateMarkers();\n this.chartUpdateCallback(6 /* SCENE_RENDER */);\n }\n attachPagination(node) {\n node.append(this.group);\n }\n computeBBox() {\n return this.group.computeBBox();\n }\n};\nPagination.className = \"Pagination\";\n__decorateClass([Validate(OBJECT)], Pagination.prototype, \"marker\", 2);\n__decorateClass([Validate(OBJECT)], Pagination.prototype, \"activeStyle\", 2);\n__decorateClass([Validate(OBJECT)], Pagination.prototype, \"inactiveStyle\", 2);\n__decorateClass([Validate(OBJECT)], Pagination.prototype, \"highlightStyle\", 2);\n__decorateClass([Validate(OBJECT)], Pagination.prototype, \"label\", 2);\n\n// packages/ag-charts-community/src/chart/legend.ts\nvar LegendLabel = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.maxLength = void 0;\n this.color = \"black\";\n this.fontStyle = void 0;\n this.fontWeight = void 0;\n this.fontSize = 12;\n this.fontFamily = \"Verdana, sans-serif\";\n this.formatter = void 0;\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], LegendLabel.prototype, \"maxLength\", 2);\n__decorateClass([Validate(COLOR_STRING)], LegendLabel.prototype, \"color\", 2);\n__decorateClass([Validate(FONT_STYLE, {\n optional: true\n})], LegendLabel.prototype, \"fontStyle\", 2);\n__decorateClass([Validate(FONT_WEIGHT2, {\n optional: true\n})], LegendLabel.prototype, \"fontWeight\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LegendLabel.prototype, \"fontSize\", 2);\n__decorateClass([Validate(STRING)], LegendLabel.prototype, \"fontFamily\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], LegendLabel.prototype, \"formatter\", 2);\nvar LegendMarker = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.size = 15;\n this.padding = 8;\n this.enabled = true;\n }\n};\n__decorateClass([ObserveChanges(target => {\n var _a;\n return (_a = target.parent) == null ? void 0 : _a.onMarkerShapeChange();\n})], LegendMarker.prototype, \"shape\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LegendMarker.prototype, \"size\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LegendMarker.prototype, \"padding\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], LegendMarker.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(BOOLEAN)], LegendMarker.prototype, \"enabled\", 2);\nvar LegendLine = class extends BaseProperties {};\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], LegendLine.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], LegendLine.prototype, \"length\", 2);\nvar LegendItem = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.paddingX = 16;\n this.paddingY = 8;\n this.toggleSeriesVisible = true;\n this.showSeriesStroke = false;\n this.marker = new LegendMarker();\n this.label = new LegendLabel();\n this.line = new LegendLine();\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], LegendItem.prototype, \"maxWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LegendItem.prototype, \"paddingX\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LegendItem.prototype, \"paddingY\", 2);\n__decorateClass([Validate(BOOLEAN)], LegendItem.prototype, \"toggleSeriesVisible\", 2);\n__decorateClass([Validate(BOOLEAN)], LegendItem.prototype, \"showSeriesStroke\", 2);\n__decorateClass([Validate(OBJECT)], LegendItem.prototype, \"marker\", 2);\n__decorateClass([Validate(OBJECT)], LegendItem.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], LegendItem.prototype, \"line\", 2);\nvar LegendListeners = class extends BaseProperties {};\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], LegendListeners.prototype, \"legendItemClick\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], LegendListeners.prototype, \"legendItemDoubleClick\", 2);\nvar Legend = class extends BaseProperties {\n constructor(ctx) {\n super();\n this.ctx = ctx;\n this.id = createId(this);\n this.group = new Group({\n name: \"legend\",\n layer: true,\n zIndex: 11 /* LEGEND_ZINDEX */\n });\n this.itemSelection = Selection.select(this.group, MarkerLabel);\n this.oldSize = [0, 0];\n this.pages = [];\n this.maxPageSize = [0, 0];\n /** Item index to track on re-pagination, so current page updates appropriately. */\n this.paginationTrackingIndex = 0;\n this.truncatedItems = /* @__PURE__ */new Set();\n this._data = [];\n this.item = new LegendItem();\n this.listeners = new LegendListeners();\n this.enabled = true;\n this.position = \"bottom\";\n this.spacing = 20;\n this.characterWidths = /* @__PURE__ */new Map();\n this.destroyFns = [];\n this.size = [0, 0];\n this._visible = true;\n this.focus = {\n mode: \"item\",\n index: 0\n };\n this.item.marker.parent = this;\n this.pagination = new Pagination(type => ctx.updateService.update(type), page => this.updatePageNumber(page), ctx.regionManager, ctx.cursorManager);\n this.pagination.attachPagination(this.group);\n this.item.marker.parent = this;\n const animationState = 16 /* Default */ | 1 /* Animation */;\n const region = ctx.regionManager.addRegionFromProperties({\n name: \"legend\",\n bboxproviders: [this.group],\n canInteraction: () => this.enabled && this.group.visible\n });\n this.destroyFns.push(region.addListener(\"click\", e => this.checkLegendClick(e), animationState), region.addListener(\"dblclick\", e => this.checkLegendDoubleClick(e), animationState), region.addListener(\"hover\", e => this.handleLegendMouseMove(e)), region.addListener(\"leave\", e => this.handleLegendMouseExit(e), animationState), region.addListener(\"enter\", e => this.handleLegendMouseEnter(e), animationState), region.addListener(\"blur\", e => this.onBlur(e)), region.addListener(\"tab\", e => this.onTab(e)), region.addListener(\"tab-start\", e => this.onTabStart(e)), region.addListener(\"nav-vert\", e => this.onNav(e)), region.addListener(\"nav-hori\", e => this.onNav(e)), region.addListener(\"submit\", e => this.onSubmit(e)), ctx.layoutService.addListener(\"start-layout\", e => this.positionLegend(e.shrinkRect)), () => this.detachLegend());\n }\n set data(value) {\n this._data = value;\n this.updateGroupVisibility();\n }\n get data() {\n return this._data;\n }\n destroy() {\n this.destroyFns.forEach(f => f());\n this.pagination.destroy();\n }\n onMarkerShapeChange() {\n this.itemSelection.clear();\n this.group.markDirty(this.group, 2 /* MINOR */);\n }\n getOrientation() {\n if (this.orientation !== void 0) {\n return this.orientation;\n }\n switch (this.position) {\n case \"right\":\n case \"left\":\n return \"vertical\";\n case \"bottom\":\n case \"top\":\n return \"horizontal\";\n }\n }\n getCharacterWidths(font) {\n const {\n characterWidths\n } = this;\n if (characterWidths.has(font)) {\n return characterWidths.get(font);\n }\n const cw = {\n \"...\": Text.getTextSize(\"...\", font).width\n };\n characterWidths.set(font, cw);\n return cw;\n }\n set visible(value) {\n this._visible = value;\n this.updateGroupVisibility();\n }\n get visible() {\n return this._visible;\n }\n updateGroupVisibility() {\n this.group.visible = this.enabled && this.visible && this.data.length > 0;\n }\n attachLegend(scene) {\n scene.appendChild(this.group);\n }\n detachLegend() {\n var _a;\n (_a = this.group.parent) == null ? void 0 : _a.removeChild(this.group);\n }\n getItemLabel(datum) {\n const {\n ctx: {\n callbackCache\n }\n } = this;\n const {\n formatter\n } = this.item.label;\n if (formatter) {\n return callbackCache.call(formatter, {\n itemId: datum.itemId,\n value: datum.label.text,\n seriesId: datum.seriesId\n });\n }\n return datum.label.text;\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 calcLayout(width, height) {\n const {\n paddingX,\n paddingY,\n label,\n maxWidth,\n marker: {\n size: markerSize,\n padding: markerPadding,\n shape: markerShape\n },\n label: {\n maxLength = Infinity,\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily\n },\n line: itemLine,\n showSeriesStroke\n } = this.item;\n const data = [...this.data];\n if (this.reverseOrder) {\n data.reverse();\n }\n this.itemSelection.update(data);\n const bboxes = [];\n const font = getFont(label);\n const itemMaxWidthPercentage = 0.8;\n const maxItemWidth = maxWidth != null ? maxWidth : width * itemMaxWidthPercentage;\n const paddedMarkerWidth = markerSize + markerPadding + paddingX;\n this.itemSelection.each((markerLabel, datum) => {\n var _a, _b, _c;\n const Marker2 = getMarker(markerShape != null ? markerShape : datum.marker.shape);\n const markerEnabled = (_a = datum.marker.enabled) != null ? _a : this.item.marker.enabled;\n if (!(markerLabel.marker && markerLabel.marker instanceof Marker2)) {\n markerLabel.marker = new Marker2();\n }\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 const id = (_b = datum.itemId) != null ? _b : datum.id;\n const labelText = this.getItemLabel(datum);\n const text = (labelText != null ? labelText : \"\").replace(/\\r?\\n/g, \" \");\n markerLabel.text = this.truncate(text, maxLength, maxItemWidth, paddedMarkerWidth, font, id);\n if (showSeriesStroke && datum.line !== void 0) {\n markerLabel.lineVisible = true;\n markerLabel.markerVisible = markerEnabled;\n markerLabel.setSeriesStrokeOffset((_c = itemLine.length) != null ? _c : 5);\n } else {\n markerLabel.lineVisible = false;\n markerLabel.markerVisible = true;\n }\n bboxes.push(markerLabel.computeBBox());\n });\n width = Math.max(1, width);\n height = Math.max(1, height);\n if (!isFinite(width)) {\n return false;\n }\n const size = this.size;\n const oldSize = this.oldSize;\n size[0] = width;\n size[1] = height;\n if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n oldSize[0] = size[0];\n oldSize[1] = size[1];\n }\n const {\n pages,\n maxPageHeight,\n maxPageWidth\n } = this.updatePagination(bboxes, width, height);\n this.pages = pages;\n this.maxPageSize = [maxPageWidth - paddingX, maxPageHeight - paddingY];\n const pageNumber = this.pagination.currentPage;\n const page = this.pages[pageNumber];\n if (this.pages.length < 1 || !page) {\n this.visible = false;\n return;\n }\n this.visible = true;\n this.updatePositions(pageNumber);\n this.update();\n }\n truncate(text, maxCharLength, maxItemWidth, paddedMarkerWidth, font, id) {\n const ellipsis2 = `...`;\n const textChars = text.split(\"\");\n let addEllipsis = false;\n if (text.length > maxCharLength) {\n text = `${text.substring(0, maxCharLength)}`;\n addEllipsis = true;\n }\n const labelWidth = Math.floor(paddedMarkerWidth + Text.getTextSize(text, font).width);\n if (labelWidth > maxItemWidth) {\n let truncatedText = \"\";\n const characterWidths = this.getCharacterWidths(font);\n let cumulativeWidth = paddedMarkerWidth + characterWidths[ellipsis2];\n for (const char of textChars) {\n if (!characterWidths[char]) {\n characterWidths[char] = Text.getTextSize(char, font).width;\n }\n cumulativeWidth += characterWidths[char];\n if (cumulativeWidth > maxItemWidth) {\n break;\n }\n truncatedText += char;\n }\n text = truncatedText;\n addEllipsis = true;\n }\n if (addEllipsis) {\n text += ellipsis2;\n this.truncatedItems.add(id);\n } else {\n this.truncatedItems.delete(id);\n }\n return text;\n }\n updatePagination(bboxes, width, height) {\n const orientation = this.getOrientation();\n const trackingIndex = Math.min(this.paginationTrackingIndex, bboxes.length);\n this.pagination.orientation = orientation;\n this.pagination.translationX = 0;\n this.pagination.translationY = 0;\n const {\n pages,\n maxPageHeight,\n maxPageWidth,\n paginationBBox,\n paginationVertical\n } = this.calculatePagination(bboxes, width, height);\n const newCurrentPage = pages.findIndex(p => p.endIndex >= trackingIndex);\n this.pagination.currentPage = clamp(0, newCurrentPage, pages.length - 1);\n const {\n paddingX: itemPaddingX,\n paddingY: itemPaddingY\n } = this.item;\n const paginationComponentPadding = 8;\n const legendItemsWidth = maxPageWidth - itemPaddingX;\n const legendItemsHeight = maxPageHeight - itemPaddingY;\n let paginationX = 0;\n let paginationY = -paginationBBox.y - this.item.marker.size / 2;\n if (paginationVertical) {\n paginationY += legendItemsHeight + paginationComponentPadding;\n } else {\n paginationX += -paginationBBox.x + legendItemsWidth + paginationComponentPadding;\n paginationY += (legendItemsHeight - paginationBBox.height) / 2;\n }\n this.pagination.translationX = paginationX;\n this.pagination.translationY = paginationY;\n this.pagination.update();\n this.pagination.updateMarkers();\n return {\n maxPageHeight,\n maxPageWidth,\n pages\n };\n }\n calculatePagination(bboxes, width, height) {\n var _a, _b, _c;\n const {\n paddingX: itemPaddingX,\n paddingY: itemPaddingY\n } = this.item;\n const orientation = this.getOrientation();\n const paginationVertical = [\"left\", \"right\"].includes(this.position);\n let paginationBBox = this.pagination.computeBBox();\n let lastPassPaginationBBox = new BBox(0, 0, 0, 0);\n let pages = [];\n let maxPageWidth = 0;\n let maxPageHeight = 0;\n let count = 0;\n const stableOutput = bbox => {\n return bbox.width === paginationBBox.width && bbox.height === paginationBBox.height;\n };\n const forceResult = this.maxWidth !== void 0 && this.maxHeight !== void 0;\n do {\n if (count++ > 10) {\n Logger.warn(\"unable to find stable legend layout.\");\n break;\n }\n paginationBBox = lastPassPaginationBBox;\n const maxWidth = width - (paginationVertical ? 0 : paginationBBox.width);\n const maxHeight = height - (paginationVertical ? paginationBBox.height : 0);\n const layout = gridLayout({\n orientation,\n bboxes,\n maxHeight,\n maxWidth,\n itemPaddingY,\n itemPaddingX,\n forceResult\n });\n pages = (_a = layout == null ? void 0 : layout.pages) != null ? _a : [];\n maxPageWidth = (_b = layout == null ? void 0 : layout.maxPageWidth) != null ? _b : 0;\n maxPageHeight = (_c = layout == null ? void 0 : layout.maxPageHeight) != null ? _c : 0;\n const totalPages = pages.length;\n this.pagination.visible = totalPages > 1;\n this.pagination.totalPages = totalPages;\n this.pagination.update();\n lastPassPaginationBBox = this.pagination.computeBBox();\n if (!this.pagination.visible) {\n break;\n }\n } while (!stableOutput(lastPassPaginationBBox));\n return {\n maxPageWidth,\n maxPageHeight,\n pages,\n paginationBBox,\n paginationVertical\n };\n }\n getPageItemCount(pageNumber) {\n let count = 0;\n for (const col of this.pages[pageNumber].columns) {\n count += col.indices.length;\n }\n return count;\n }\n getNodeIndexFromFocusIndex() {\n const {\n index\n } = this.focus;\n const page = this.pages[this.pagination.currentPage];\n let itemCount = 0;\n for (const col of page.columns) {\n if (index < itemCount + col.indices.length) {\n return col.indices[index - itemCount];\n } else {\n itemCount += col.indices.length;\n }\n }\n return -1;\n }\n updatePositions(pageNumber = 0) {\n const {\n item: {\n paddingY\n },\n itemSelection,\n pages\n } = this;\n if (pages.length < 1 || !pages[pageNumber]) {\n return;\n }\n const {\n columns,\n startIndex: visibleStart,\n endIndex: visibleEnd\n } = pages[pageNumber];\n let x = 0;\n let y = 0;\n const columnCount = columns.length;\n const rowCount = columns[0].indices.length;\n const horizontal = this.getOrientation() === \"horizontal\";\n const itemHeight = columns[0].bboxes[0].height + paddingY;\n const rowSumColumnWidths = [];\n itemSelection.each((markerLabel, _, i) => {\n var _a, _b;\n if (i < visibleStart || i > visibleEnd) {\n markerLabel.visible = false;\n return;\n }\n const pageIndex = i - visibleStart;\n let columnIndex = 0;\n let rowIndex = 0;\n if (horizontal) {\n columnIndex = pageIndex % columnCount;\n rowIndex = Math.floor(pageIndex / columnCount);\n } else {\n columnIndex = Math.floor(pageIndex / rowCount);\n rowIndex = pageIndex % rowCount;\n }\n markerLabel.visible = true;\n const column = columns[columnIndex];\n if (!column) {\n return;\n }\n y = itemHeight * rowIndex;\n x = (_a = rowSumColumnWidths[rowIndex]) != null ? _a : 0;\n rowSumColumnWidths[rowIndex] = ((_b = rowSumColumnWidths[rowIndex]) != null ? _b : 0) + column.columnWidth;\n markerLabel.translationX = Math.floor(x);\n markerLabel.translationY = Math.floor(y);\n });\n }\n updatePageNumber(pageNumber) {\n const {\n pages\n } = this;\n const {\n startIndex,\n endIndex\n } = pages[pageNumber];\n if (startIndex === 0) {\n this.paginationTrackingIndex = 0;\n } else if (pageNumber === pages.length - 1) {\n this.paginationTrackingIndex = endIndex;\n } else {\n this.paginationTrackingIndex = Math.floor((startIndex + endIndex) / 2);\n }\n this.pagination.update();\n this.pagination.updateMarkers();\n this.updatePositions(pageNumber);\n this.ctx.updateService.update(6 /* SCENE_RENDER */);\n }\n update() {\n const {\n label: {\n color\n },\n marker: itemMarker,\n line: itemLine,\n showSeriesStroke\n } = this.item;\n this.itemSelection.each((markerLabel, datum) => {\n var _a, _b;\n const marker = datum.marker;\n markerLabel.markerFill = marker.fill;\n markerLabel.markerStroke = marker.stroke;\n markerLabel.markerStrokeWidth = (_a = itemMarker.strokeWidth) != null ? _a : Math.min(2, marker.strokeWidth);\n markerLabel.markerFillOpacity = marker.fillOpacity;\n markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n markerLabel.opacity = datum.enabled ? 1 : 0.5;\n markerLabel.color = color;\n const {\n line\n } = datum;\n if (showSeriesStroke && line !== void 0) {\n markerLabel.lineStroke = line.stroke;\n markerLabel.lineStrokeOpacity = line.strokeOpacity;\n markerLabel.lineStrokeWidth = (_b = itemLine.strokeWidth) != null ? _b : Math.min(2, line.strokeWidth);\n markerLabel.lineLineDash = line.lineDash;\n }\n });\n }\n getDatumForPoint(x, y) {\n const visibleChildBBoxes = [];\n const closestLeftTop = {\n dist: Infinity,\n datum: void 0\n };\n for (const child of this.group.children) {\n if (!child.visible) continue;\n if (!(child instanceof MarkerLabel)) continue;\n const childBBox = child.computeBBox();\n childBBox.grow(this.item.paddingX / 2, \"horizontal\");\n childBBox.grow(this.item.paddingY / 2, \"vertical\");\n if (childBBox.containsPoint(x, y)) {\n return child.datum;\n }\n const distX = x - childBBox.x - this.item.paddingX / 2;\n const distY = y - childBBox.y - this.item.paddingY / 2;\n const dist = __pow(distX, 2) + __pow(distY, 2);\n const toTheLeftTop = distX >= 0 && distY >= 0;\n if (toTheLeftTop && dist < closestLeftTop.dist) {\n closestLeftTop.dist = dist;\n closestLeftTop.datum = child.datum;\n }\n visibleChildBBoxes.push(childBBox);\n }\n const pageBBox = BBox.merge(visibleChildBBoxes);\n if (!pageBBox.containsPoint(x, y)) {\n return;\n }\n return closestLeftTop.datum;\n }\n computePagedBBox() {\n const actualBBox = this.group.computeBBox();\n if (this.pages.length <= 1) {\n return actualBBox;\n }\n const [maxPageWidth, maxPageHeight] = this.maxPageSize;\n actualBBox.height = Math.max(maxPageHeight, actualBBox.height);\n actualBBox.width = Math.max(maxPageWidth, actualBBox.width);\n return actualBBox;\n }\n checkLegendClick(event) {\n const datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n if (this.doClick(datum)) {\n event.consume();\n }\n }\n doClick(datum) {\n const {\n listeners: {\n legendItemClick\n },\n ctx: {\n chartService,\n highlightManager\n },\n item: {\n toggleSeriesVisible\n },\n preventHidingAll\n } = this;\n if (!datum) {\n return false;\n }\n const {\n id,\n itemId,\n enabled\n } = datum;\n const series = chartService.series.find(s => s.id === id);\n if (!series) {\n return false;\n }\n let newEnabled = enabled;\n if (toggleSeriesVisible) {\n newEnabled = !enabled;\n if (preventHidingAll && !newEnabled) {\n const numVisibleItems = chartService.series.flatMap(s => s.getLegendData(\"category\")).filter(d => d.enabled).length;\n if (numVisibleItems < 2) {\n newEnabled = true;\n }\n }\n const status = newEnabled ? \"visible\" : \"hidden\";\n this.ctx.ariaAnnouncementService.announceValue(`${status}`);\n this.ctx.chartEventManager.legendItemClick(series, itemId, newEnabled, datum.legendItemName);\n }\n if (newEnabled) {\n highlightManager.updateHighlight(this.id, {\n series,\n itemId,\n datum: void 0\n });\n } else {\n highlightManager.updateHighlight(this.id);\n }\n this.ctx.updateService.update(2 /* PROCESS_DATA */, {\n forceNodeDataRefresh: true\n });\n legendItemClick == null ? void 0 : legendItemClick({\n type: \"click\",\n enabled: newEnabled,\n itemId,\n seriesId: series.id\n });\n return true;\n }\n checkLegendDoubleClick(event) {\n var _a;\n const {\n listeners: {\n legendItemDoubleClick\n },\n ctx: {\n chartService\n },\n item: {\n toggleSeriesVisible\n }\n } = this;\n if (chartService.mode === \"integrated\") {\n return;\n }\n const datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n if (!datum) {\n return;\n }\n const {\n id,\n itemId,\n seriesId\n } = datum;\n const series = chartService.series.find(s => s.id === id);\n if (!series) {\n return;\n }\n event.consume();\n if (toggleSeriesVisible) {\n const legendData = chartService.series.flatMap(s => s.getLegendData(\"category\"));\n const numVisibleItems = legendData.filter(d => d.enabled).length;\n const clickedItem = legendData.find(d => d.itemId === itemId && d.seriesId === seriesId);\n this.ctx.chartEventManager.legendItemDoubleClick(series, itemId, (_a = clickedItem == null ? void 0 : clickedItem.enabled) != null ? _a : false, numVisibleItems, clickedItem == null ? void 0 : clickedItem.legendItemName);\n }\n this.ctx.updateService.update(2 /* PROCESS_DATA */, {\n forceNodeDataRefresh: true\n });\n legendItemDoubleClick == null ? void 0 : legendItemDoubleClick({\n type: \"dblclick\",\n enabled: true,\n itemId,\n seriesId: series.id\n });\n }\n handleLegendMouseMove(event) {\n if (!this.enabled) {\n return;\n }\n const {\n offsetX,\n offsetY\n } = event;\n event.consume();\n const datum = this.getDatumForPoint(offsetX, offsetY);\n this.doHover(event, datum);\n }\n doHover(event, datum) {\n var _a;\n const {\n item: {\n toggleSeriesVisible\n },\n listeners\n } = this;\n if (event === void 0 || datum === void 0) {\n this.ctx.cursorManager.updateCursor(this.id);\n this.ctx.highlightManager.updateHighlight(this.id);\n return;\n }\n const series = datum ? this.ctx.chartService.series.find(s => s.id === (datum == null ? void 0 : datum.id)) : void 0;\n if (datum && this.truncatedItems.has((_a = datum.itemId) != null ? _a : datum.id)) {\n const {\n offsetX,\n offsetY\n } = event;\n this.ctx.tooltipManager.updateTooltip(this.id, {\n offsetX,\n offsetY,\n lastPointerEvent: event,\n showArrow: false\n }, toTooltipHtml({\n content: this.getItemLabel(datum)\n }));\n } else {\n this.ctx.tooltipManager.removeTooltip(this.id);\n }\n if (toggleSeriesVisible || listeners.legendItemClick != null || listeners.legendItemDoubleClick != null) {\n this.ctx.cursorManager.updateCursor(this.id, \"pointer\");\n }\n if ((datum == null ? void 0 : datum.enabled) && series) {\n this.ctx.highlightManager.updateHighlight(this.id, {\n series,\n itemId: datum == null ? void 0 : datum.itemId,\n datum: void 0\n });\n } else {\n this.ctx.highlightManager.updateHighlight(this.id);\n }\n }\n handleLegendMouseExit(_event) {\n this.doMouseExit();\n }\n doMouseExit() {\n this.ctx.cursorManager.updateCursor(this.id);\n this.ctx.tooltipManager.removeTooltip(this.id);\n if (this.ctx.interactionManager.getState() === 16 /* Default */) {\n this.ctx.highlightManager.updateHighlight(this.id);\n }\n }\n handleLegendMouseEnter(event) {\n const {\n enabled,\n item: {\n toggleSeriesVisible: toggle\n },\n listeners: {\n legendItemClick: clickListener,\n legendItemDoubleClick: dblclickListener\n }\n } = this;\n const datum = this.getDatumForPoint(event.offsetX, event.offsetY);\n if (enabled && datum !== void 0 && (toggle || clickListener != null || dblclickListener != null)) {\n this.ctx.cursorManager.updateCursor(this.id, \"pointer\");\n }\n }\n onBlur(_event) {\n this.doMouseExit();\n this.focus.mode = \"item\";\n this.ctx.regionManager.updateFocusIndicatorRect(void 0);\n }\n onTab(event) {\n this.updateFocus();\n event.consume();\n }\n onTabStart(event) {\n if (!this.pagination.visible || !this.pagination.enabled) return;\n const consumeTabStart = newMode => {\n this.focus.mode = newMode;\n this.updateFocus();\n event.consume();\n };\n if (this.focus.mode === \"item\" && event.delta === 1) {\n this.focus.index = this.pagination.currentPage === 0 ? 1 : 0;\n consumeTabStart(\"page\");\n } else if (this.focus.mode === \"page\" && event.delta === -1) {\n this.focus.index = 0;\n consumeTabStart(\"item\");\n }\n }\n onNav(event) {\n if (this.focus.mode === \"item\") {\n const newIndex = this.focus.index + event.delta;\n const pageItemCount = this.getPageItemCount(this.pagination.currentPage);\n this.focus.index = clamp(-1, newIndex, pageItemCount);\n this.updateFocus();\n event.consume();\n } else if (this.focus.mode === \"page\") {\n if (event.delta < 0) this.focus.index = 0;\n if (event.delta > 0) this.focus.index = 1;\n this.updateFocus();\n event.consume();\n }\n }\n onSubmit(_event) {\n if (this.focus.mode === \"item\") {\n this.doClick(this.getFocusedItem().datum);\n } else if (this.focus.mode === \"page\") {\n if (this.focus.index === 0) this.pagination.clickPrevious();\n if (this.focus.index === 1) this.pagination.clickNext();\n this.ctx.ariaAnnouncementService.announceValue(`Legend page ${this.pagination.currentPage + 1} of ${this.pages.length}`);\n }\n }\n maybeChangeFocusPage() {\n const oldPage = this.pagination.currentPage;\n const oldPageItemCount = this.getPageItemCount(oldPage);\n if (this.focus.index === -1) {\n this.pagination.setPage(oldPage - 1);\n } else if (this.focus.index === oldPageItemCount) {\n this.pagination.setPage(oldPage + 1);\n } else {\n return;\n }\n const {\n currentPage\n } = this.pagination;\n if (oldPage === currentPage) {\n this.focus.index = clamp(0, this.focus.index, oldPageItemCount - 1);\n } else if (this.focus.index === -1) {\n this.focus.index = this.getPageItemCount(currentPage) - 1;\n } else {\n this.focus.index = 0;\n }\n }\n getFocusedItem() {\n if (this.focus.mode !== \"item\") {\n Logger.error(`getFocusedItem() should be called only when focus.mode is 'item'`);\n return {\n nodeIndex: -1,\n node: void 0,\n datum: void 0\n };\n }\n this.maybeChangeFocusPage();\n const nodeIndex = this.getNodeIndexFromFocusIndex();\n if (nodeIndex < 0) {\n Logger.error(`Cannot access negative nodeIndex ${nodeIndex}`);\n return {\n nodeIndex: -1,\n node: void 0,\n datum: void 0\n };\n }\n const node = this.itemSelection.nodes()[nodeIndex];\n const data = this.data;\n let datum;\n if (nodeIndex < data.length) {\n datum = this.data[nodeIndex];\n } else {\n Logger.error(`Cannot access datum[${nodeIndex}]`);\n }\n return {\n nodeIndex,\n node,\n datum\n };\n }\n updateFocus() {\n const {\n focus,\n pagination\n } = this;\n if (focus.mode === \"item\") {\n const {\n nodeIndex,\n node,\n datum\n } = this.getFocusedItem();\n if (datum === void 0) return;\n const bbox = node == null ? void 0 : node.computeTransformedBBox();\n this.doHover(makeKeyboardPointerEvent(this.ctx.regionManager, {\n bbox,\n showFocusBox: true\n }), datum);\n const label = datum && this.getItemLabel(datum);\n if (label) {\n const visibility = datum.enabled ? \"visible\" : \"hidden\";\n this.ctx.ariaAnnouncementService.announceValue(`Legend item ${nodeIndex + 1} of ${this.data.length}, ${label}, ${visibility}`);\n }\n } else if (focus.mode === \"page\") {\n const button = focus.index === 0 ? pagination.previousButton : pagination.nextButton;\n this.ctx.regionManager.updateFocusIndicatorRect(button.computeTransformedBBox());\n const value = [\"Previous legend page\", \"Next legend page\"][focus.index];\n this.ctx.ariaAnnouncementService.announceValue(`${value}, button`);\n }\n }\n positionLegend(shrinkRect) {\n const newShrinkRect = shrinkRect.clone();\n if (!this.enabled || !this.data.length) {\n return {\n shrinkRect: newShrinkRect\n };\n }\n const [legendWidth, legendHeight] = this.calculateLegendDimensions(shrinkRect);\n this.group.translationX = 0;\n this.group.translationY = 0;\n this.calcLayout(legendWidth, legendHeight);\n const legendBBox = this.computePagedBBox();\n const calculateTranslationPerpendicularDimension = () => {\n switch (this.position) {\n case \"top\":\n case \"left\":\n return 0;\n case \"bottom\":\n return shrinkRect.height - legendBBox.height;\n case \"right\":\n default:\n return shrinkRect.width - legendBBox.width;\n }\n };\n if (this.visible) {\n let translationX;\n let translationY;\n switch (this.position) {\n case \"top\":\n case \"bottom\":\n translationX = (shrinkRect.width - legendBBox.width) / 2;\n translationY = calculateTranslationPerpendicularDimension();\n newShrinkRect.shrink(legendBBox.height, this.position);\n break;\n case \"left\":\n case \"right\":\n default:\n translationX = calculateTranslationPerpendicularDimension();\n translationY = (shrinkRect.height - legendBBox.height) / 2;\n newShrinkRect.shrink(legendBBox.width, this.position);\n }\n this.group.translationX = Math.floor(-legendBBox.x + shrinkRect.x + translationX);\n this.group.translationY = Math.floor(-legendBBox.y + shrinkRect.y + translationY);\n }\n if (this.visible && this.enabled && this.data.length) {\n const legendPadding = this.spacing;\n newShrinkRect.shrink(legendPadding, this.position);\n const legendPositionedBBox = legendBBox.clone();\n legendPositionedBBox.x += this.group.translationX;\n legendPositionedBBox.y += this.group.translationY;\n }\n return {\n shrinkRect: newShrinkRect\n };\n }\n calculateLegendDimensions(shrinkRect) {\n const {\n width,\n height\n } = shrinkRect;\n const aspectRatio = width / height;\n const maxCoefficient = 0.5;\n const minHeightCoefficient = 0.2;\n const minWidthCoefficient = 0.25;\n let legendWidth, legendHeight;\n switch (this.position) {\n case \"top\":\n case \"bottom\":\n const heightCoefficient = aspectRatio < 1 ? Math.min(maxCoefficient, minHeightCoefficient * (1 / aspectRatio)) : minHeightCoefficient;\n legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : width;\n legendHeight = this.maxHeight ? Math.min(this.maxHeight, height) : Math.round(height * heightCoefficient);\n break;\n case \"left\":\n case \"right\":\n default:\n const widthCoefficient = aspectRatio > 1 ? Math.min(maxCoefficient, minWidthCoefficient * aspectRatio) : minWidthCoefficient;\n legendWidth = this.maxWidth ? Math.min(this.maxWidth, width) : Math.round(width * widthCoefficient);\n legendHeight = this.maxHeight ? Math.min(this.maxHeight, height) : height;\n }\n return [legendWidth, legendHeight];\n }\n};\nLegend.className = \"Legend\";\n__decorateClass([Validate(OBJECT)], Legend.prototype, \"pagination\", 2);\n__decorateClass([Validate(OBJECT)], Legend.prototype, \"item\", 2);\n__decorateClass([Validate(OBJECT)], Legend.prototype, \"listeners\", 2);\n__decorateClass([ObserveChanges(target => target.updateGroupVisibility()), Validate(BOOLEAN)], Legend.prototype, \"enabled\", 2);\n__decorateClass([Validate(POSITION2)], Legend.prototype, \"position\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], Legend.prototype, \"maxWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], Legend.prototype, \"maxHeight\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], Legend.prototype, \"reverseOrder\", 2);\n__decorateClass([Validate(UNION([\"horizontal\", \"vertical\"], \"an orientation\"), {\n optional: true\n})], Legend.prototype, \"orientation\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], Legend.prototype, \"preventHidingAll\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Legend.prototype, \"spacing\", 2);\n\n// packages/ag-charts-community/src/chart/legendModule.ts\nvar CommunityLegendModule = {\n type: \"legend\",\n optionsKey: \"legend\",\n identifier: \"category\",\n chartTypes: [\"cartesian\", \"polar\", \"hierarchy\", \"topology\"],\n instanceConstructor: Legend,\n packageType: \"community\"\n};\n\n// packages/ag-charts-community/src/chart/navigator/shapes/rangeHandle.ts\nvar RangeHandle = class extends Path {\n constructor() {\n super(...arguments);\n this.zIndex = 3;\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 this._width = 8;\n this._gripLineGap = 2;\n this._gripLineLength = 8;\n this._height = 16;\n }\n set centerX(value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n }\n get centerX() {\n return this._centerX;\n }\n set centerY(value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n }\n get centerY() {\n return this._centerY;\n }\n set width(value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n }\n get width() {\n return this._width;\n }\n set gripLineGap(value) {\n if (this._gripLineGap !== value) {\n this._gripLineGap = value;\n this.dirtyPath = true;\n }\n }\n get gripLineGap() {\n return this._gripLineGap;\n }\n set gripLineLength(value) {\n if (this._gripLineLength !== value) {\n this._gripLineLength = value;\n this.dirtyPath = true;\n }\n }\n get gripLineLength() {\n return this._gripLineLength;\n }\n set height(value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n }\n get height() {\n return this._height;\n }\n layout(x, y) {\n this.centerX = x;\n this.centerY = y;\n }\n static align(minHandle, maxHandle, x, y, width, height, min, max) {\n const handlePixelAlign = minHandle.strokeWidth / 2;\n const minHandleX = minHandle.align(x + width * min) + handlePixelAlign;\n const maxHandleX = minHandleX + minHandle.align(x + width * min, width * (max - min)) - 2 * handlePixelAlign;\n const handleY = minHandle.align(y + height / 2) + handlePixelAlign;\n minHandle.layout(minHandleX, handleY);\n maxHandle.layout(maxHandleX, handleY);\n }\n computeBBox() {\n const {\n centerX,\n centerY,\n width,\n height\n } = this;\n const x = centerX - width / 2;\n const y = centerY - height / 2;\n return new BBox(x, y, width, height);\n }\n isPointInPath(x, y) {\n const point = this.transformPoint(x, y);\n const bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n }\n updatePath() {\n var _a, _b, _c;\n const {\n centerX,\n centerY,\n path,\n strokeWidth,\n gripLineGap,\n gripLineLength\n } = this;\n const pixelRatio = (_c = (_b = (_a = this.layerManager) == null ? void 0 : _a.canvas) == null ? void 0 : _b.pixelRatio) != null ? _c : 1;\n path.clear();\n const halfWidth = Math.floor(this.width / 2 * pixelRatio) / pixelRatio;\n const halfHeight = Math.floor(this.height / 2 * pixelRatio) / pixelRatio;\n path.moveTo(centerX - halfWidth, centerY - halfHeight);\n path.lineTo(centerX + halfWidth, centerY - halfHeight);\n path.lineTo(centerX + halfWidth, centerY + halfHeight);\n path.lineTo(centerX - halfWidth, centerY + halfHeight);\n path.closePath();\n const dx = Math.floor((gripLineGap + strokeWidth) / 2 * pixelRatio) / pixelRatio;\n const dy = Math.floor(gripLineLength / 2 * pixelRatio) / pixelRatio;\n path.moveTo(centerX - dx, centerY - dy);\n path.lineTo(centerX - dx, centerY + dy);\n path.moveTo(centerX + dx, centerY - dy);\n path.lineTo(centerX + dx, centerY + dy);\n }\n};\nRangeHandle.className = \"RangeHandle\";\n__decorateClass([Validate(COLOR_STRING)], RangeHandle.prototype, \"_fill\", 2);\n__decorateClass([Validate(COLOR_STRING)], RangeHandle.prototype, \"_stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], RangeHandle.prototype, \"_strokeWidth\", 2);\n__decorateClass([Validate(LINE_CAP)], RangeHandle.prototype, \"_lineCap\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], RangeHandle.prototype, \"_width\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], RangeHandle.prototype, \"_gripLineGap\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], RangeHandle.prototype, \"_gripLineLength\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], RangeHandle.prototype, \"_height\", 2);\n\n// packages/ag-charts-community/src/chart/navigator/shapes/rangeMask.ts\nvar RangeMask = class extends Path {\n constructor() {\n super(...arguments);\n this.zIndex = 2;\n this.x = 0;\n this.y = 0;\n this.width = 200;\n this.height = 30;\n this.min = 0;\n this.max = 1;\n }\n layout(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.dirtyPath = true;\n }\n update(min, max) {\n this.min = isNaN(min) ? this.min : min;\n this.max = isNaN(max) ? this.max : max;\n this.dirtyPath = true;\n }\n computeBBox() {\n const {\n x,\n y,\n width,\n height\n } = this;\n return new BBox(x, y, width, height);\n }\n computeVisibleRangeBBox() {\n const {\n x,\n y,\n width,\n height,\n min,\n max\n } = this;\n const minX = x + width * min;\n const maxX = x + width * max;\n return new BBox(minX, y, maxX - minX, height);\n }\n updatePath() {\n const {\n path,\n x,\n y,\n width,\n height,\n min,\n max,\n strokeWidth\n } = this;\n const pixelAlign = strokeWidth / 2;\n path.clear();\n const ax = this.align(x) + pixelAlign;\n const ay = this.align(y) + pixelAlign;\n const axw = ax + this.align(x, width) - 2 * pixelAlign;\n const ayh = ay + this.align(y, height) - 2 * pixelAlign;\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.closePath();\n const minX = this.align(x + width * min) + pixelAlign;\n const maxX = minX + this.align(x + width * min, width * (max - min)) - 2 * pixelAlign;\n path.moveTo(minX, ay);\n path.lineTo(minX, ayh);\n path.lineTo(maxX, ayh);\n path.lineTo(maxX, ay);\n path.closePath();\n }\n};\nRangeMask.className = \"RangeMask\";\n\n// packages/ag-charts-community/src/chart/navigator/shapes/rangeSelector.ts\nvar RangeSelector = class extends Group {\n constructor(children) {\n super({\n name: \"rangeSelectorGroup\",\n layer: true,\n zIndex: 12 /* NAVIGATOR_ZINDEX */\n });\n this.x = 0;\n this.y = 0;\n this.width = 200;\n this.height = 30;\n this.lOffset = 0;\n this.rOffset = 0;\n this.isContainerNode = true;\n this.background = new Group({\n name: \"navigator-background\"\n });\n this.background.zIndex = 1;\n this.appendChild(this.background);\n this.append(children);\n }\n layout(x, y, width, height, lOffset, rOffset) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.lOffset = lOffset;\n this.rOffset = rOffset;\n this.background.translationX = x;\n this.background.translationY = y;\n }\n updateBackground(oldGroup, newGroup) {\n if (oldGroup != null) {\n this.background.removeChild(oldGroup);\n }\n if (newGroup != null) {\n this.background.appendChild(newGroup);\n }\n }\n computeBBox() {\n const {\n x,\n y,\n width,\n height,\n lOffset,\n rOffset\n } = this;\n return new BBox(x - lOffset, y, width + (lOffset + rOffset), height);\n }\n};\n\n// packages/ag-charts-community/src/chart/navigator/navigator.ts\nvar Navigator = class extends BaseModuleInstance {\n constructor(ctx) {\n super();\n this.ctx = ctx;\n this.miniChart = void 0;\n this.enabled = false;\n this.mask = new RangeMask();\n this.minHandle = new RangeHandle();\n this.maxHandle = new RangeHandle();\n this.height = 30;\n this.margin = 10;\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.rangeSelector = new RangeSelector([this.mask, this.minHandle, this.maxHandle]);\n this._min = 0;\n this._max = 1;\n this.minRange = 1e-3;\n const region = ctx.regionManager.addRegion(\"navigator\", this.rangeSelector);\n const dragStates = 16 /* Default */ | 1 /* Animation */ | 8 /* ZoomDrag */;\n this.destroyFns.push(ctx.scene.attachNode(this.rangeSelector), region.addListener(\"hover\", event => this.onHover(event), dragStates), region.addListener(\"drag-start\", event => this.onDragStart(event), dragStates), region.addListener(\"drag\", event => this.onDrag(event), dragStates), region.addListener(\"drag-end\", () => this.onDragEnd(), dragStates), region.addListener(\"leave\", event => this.onLeave(event), dragStates), ctx.zoomManager.addListener(\"zoom-change\", event => this.onZoomChange(event)));\n this.updateGroupVisibility();\n }\n updateBackground(oldGroup, newGroup) {\n var _a;\n (_a = this.rangeSelector) == null ? void 0 : _a.updateBackground(oldGroup, newGroup);\n }\n updateGroupVisibility() {\n const {\n enabled\n } = this;\n if (this.rangeSelector == null || enabled === this.rangeSelector.visible) return;\n this.rangeSelector.visible = enabled;\n if (enabled) {\n this.updateZoom();\n } else {\n this.ctx.zoomManager.updateZoom(\"navigator\");\n }\n }\n performLayout(_0) {\n return __async(this, arguments, function* ({\n shrinkRect\n }) {\n if (this.enabled) {\n const navigatorTotalHeight = this.height + this.margin;\n shrinkRect.shrink(navigatorTotalHeight, \"bottom\");\n this.y = shrinkRect.y + shrinkRect.height + this.margin;\n } else {\n this.y = 0;\n }\n return {\n shrinkRect\n };\n });\n }\n performCartesianLayout(opts) {\n return __async(this, null, function* () {\n const {\n x,\n width\n } = opts.seriesRect;\n if (this.enabled) {\n const {\n y,\n height\n } = this;\n this.layoutNodes(x, y, width, height);\n }\n this.x = x;\n this.width = width;\n });\n }\n onHover(event) {\n if (!this.enabled) return;\n const {\n mask,\n minHandle,\n maxHandle\n } = this;\n const {\n offsetX,\n offsetY\n } = event;\n if (minHandle.containsPoint(offsetX, offsetY) || maxHandle.containsPoint(offsetX, offsetY)) {\n this.ctx.cursorManager.updateCursor(\"navigator\", \"ew-resize\");\n } else if (mask.computeVisibleRangeBBox().containsPoint(offsetX, offsetY)) {\n this.ctx.cursorManager.updateCursor(\"navigator\", \"grab\");\n } else {\n this.ctx.cursorManager.updateCursor(\"navigator\");\n }\n }\n onDragStart(event) {\n if (!this.enabled) return;\n const {\n mask,\n minHandle,\n maxHandle,\n x,\n width,\n _min: min\n } = this;\n const {\n offsetX,\n offsetY\n } = event;\n if (minHandle.zIndex < maxHandle.zIndex) {\n if (maxHandle.containsPoint(offsetX, offsetY)) {\n this.dragging = \"max\";\n } else if (minHandle.containsPoint(offsetX, offsetY)) {\n this.dragging = \"min\";\n }\n } else if (minHandle.containsPoint(offsetX, offsetY)) {\n this.dragging = \"min\";\n } else if (maxHandle.containsPoint(offsetX, offsetY)) {\n this.dragging = \"max\";\n }\n if (this.dragging == null && mask.computeVisibleRangeBBox().containsPoint(offsetX, offsetY)) {\n this.dragging = \"pan\";\n this.panStart = (offsetX - x) / width - min;\n }\n if (this.dragging != null) {\n this.ctx.zoomManager.fireZoomPanStartEvent(\"navigator\");\n }\n }\n onDrag(event) {\n if (!this.enabled || this.dragging == null) return;\n const {\n dragging,\n minRange,\n panStart,\n x,\n width\n } = this;\n let {\n _min: min,\n _max: max\n } = this;\n const {\n offsetX\n } = event;\n const ratio = (offsetX - x) / width;\n if (dragging === \"min\") {\n min = clamp(0, ratio, max - minRange);\n } else if (dragging === \"max\") {\n max = clamp(min + minRange, ratio, 1);\n } else if (dragging === \"pan\" && panStart != null) {\n const span = max - min;\n min = clamp(0, ratio - panStart, 1 - span);\n max = min + span;\n }\n this._min = min;\n this._max = max;\n this.updateZoom();\n }\n onDragEnd() {\n this.dragging = void 0;\n }\n onLeave(_event) {\n this.ctx.cursorManager.updateCursor(\"navigator\");\n }\n onZoomChange(event) {\n const {\n x\n } = event;\n if (!x) return;\n this._min = x.min;\n this._max = x.max;\n this.updateNodes(x.min, x.max);\n }\n layoutNodes(x, y, width, height) {\n const {\n rangeSelector,\n mask,\n minHandle,\n maxHandle,\n _min: min,\n _max: max\n } = this;\n rangeSelector.layout(x, y, width, height, minHandle.width / 2, maxHandle.width / 2);\n mask.layout(x, y, width, height);\n RangeHandle.align(minHandle, maxHandle, x, y, width, height, min, max);\n if (min + (max - min) / 2 < 0.5) {\n minHandle.zIndex = 3;\n maxHandle.zIndex = 4;\n } else {\n minHandle.zIndex = 4;\n maxHandle.zIndex = 3;\n }\n }\n updateNodes(min, max) {\n this.mask.update(min, max);\n }\n updateZoom() {\n if (!this.enabled) return;\n const {\n _min: min,\n _max: max\n } = this;\n const zoom2 = this.ctx.zoomManager.getZoom();\n if (min == null || max == null) return;\n const warnOnConflict = stateId => {\n if (this.min == null && this.max == null) return;\n Logger.warnOnce(`Could not apply [navigator.min] or [navigator.max] as [${stateId}] has modified the initial zoom state.`);\n };\n return this.ctx.zoomManager.updateZoom(\"navigator\", {\n x: {\n min,\n max\n },\n y: zoom2 == null ? void 0 : zoom2.y\n }, false, warnOnConflict);\n }\n};\n__decorateClass([Validate(OBJECT, {\n optional: true\n})], Navigator.prototype, \"miniChart\", 2);\n__decorateClass([Validate(BOOLEAN), ObserveChanges(target => target.updateGroupVisibility())], Navigator.prototype, \"enabled\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Navigator.prototype, \"height\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], Navigator.prototype, \"margin\", 2);\n__decorateClass([ActionOnSet({\n newValue(min) {\n this._min = min;\n this.updateZoom();\n }\n}), Validate(AND(RATIO, LESS_THAN(\"max\")), {\n optional: true\n})], Navigator.prototype, \"min\", 2);\n__decorateClass([ActionOnSet({\n newValue(max) {\n this._max = max;\n this.updateZoom();\n }\n}), Validate(AND(RATIO, GREATER_THAN(\"min\")), {\n optional: true\n})], Navigator.prototype, \"max\", 2);\n\n// packages/ag-charts-community/src/chart/navigator/navigatorModule.ts\nvar NavigatorModule = {\n type: \"root\",\n optionsKey: \"navigator\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n instanceConstructor: Navigator,\n themeTemplate: {\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: 9,\n height: 16,\n gripLineGap: 1,\n gripLineLength: 8\n },\n maxHandle: {\n fill: \"#f2f2f2\",\n stroke: \"#999999\",\n strokeWidth: 1,\n width: 9,\n height: 16,\n gripLineGap: 1,\n gripLineLength: 8\n }\n }\n }\n};\n\n// packages/ag-charts-community/src/module/theme.ts\nvar singleSeriesPaletteFactory = ({\n takeColors\n}) => {\n const {\n fills: [fill],\n strokes: [stroke]\n } = takeColors(1);\n return {\n fill,\n stroke\n };\n};\nvar markerPaletteFactory = params => {\n const {\n fill,\n stroke\n } = singleSeriesPaletteFactory(params);\n return {\n marker: {\n fill,\n stroke\n }\n };\n};\n\n// packages/ag-charts-community/src/motion/pathMotion.ts\nfunction pathMotion(groupId, subId, animationManager, paths, fns) {\n const {\n addPhaseFn,\n updatePhaseFn,\n removePhaseFn\n } = fns;\n const animate = (phase, path, updateFn) => {\n animationManager.animate({\n id: `${groupId}_${subId}_${path.id}_${phase}`,\n groupId,\n from: 0,\n to: 1,\n ease: easeOut,\n collapsable: false,\n onUpdate(ratio, preInit) {\n if (preInit && phase !== \"removed\") return;\n path.path.clear(true);\n updateFn(ratio, path);\n path.checkPathDirty();\n },\n onStop() {\n if (phase !== \"added\") return;\n path.path.clear(true);\n updateFn(1, path);\n path.checkPathDirty();\n },\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[phase]\n });\n };\n for (const path of paths) {\n if (!animationManager.isSkipped()) {\n animate(\"removed\", path, removePhaseFn);\n animate(\"updated\", path, updatePhaseFn);\n }\n animate(\"added\", path, addPhaseFn);\n }\n}\n\n// packages/ag-charts-community/src/util/sanitize.ts\nvar element = null;\nfunction sanitizeHtml(text) {\n if (text == null) {\n return;\n } else if (text === \"\") {\n return \"\";\n }\n element != null ? element : element = createElement(\"div\");\n element.textContent = String(text);\n return element.innerHTML;\n}\n\n// packages/ag-charts-community/src/chart/series/seriesLabelUtil.ts\nfunction seriesLabelFadeInAnimation({\n id\n}, subId, animationManager, ...labelSelections) {\n staticFromToMotion(id, subId, animationManager, labelSelections, {\n opacity: 0\n }, {\n opacity: 1\n }, {\n phase: \"trailing\"\n });\n}\nfunction seriesLabelFadeOutAnimation({\n id\n}, subId, animationManager, ...labelSelections) {\n staticFromToMotion(id, subId, animationManager, labelSelections, {\n opacity: 1\n }, {\n opacity: 0\n }, {\n phase: \"remove\"\n });\n}\nfunction resetLabelFn(_node) {\n return {\n opacity: 1\n };\n}\n\n// packages/ag-charts-community/src/scene/util/changeDetectableProperties.ts\nvar ChangeDetectableProperties = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this._dirty = 3 /* MAJOR */;\n }\n markDirty(_source, type = 1 /* TRIVIAL */) {\n if (this._dirty < type) {\n this._dirty = type;\n }\n }\n markClean(_opts) {\n this._dirty = 0 /* NONE */;\n }\n isDirty() {\n return this._dirty > 0 /* NONE */;\n }\n};\n\n// packages/ag-charts-community/src/scene/dropShadow.ts\nvar DropShadow = class extends ChangeDetectableProperties {\n constructor() {\n super(...arguments);\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 }\n};\n__decorateClass([Validate(BOOLEAN), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], DropShadow.prototype, \"enabled\", 2);\n__decorateClass([Validate(COLOR_STRING), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], DropShadow.prototype, \"color\", 2);\n__decorateClass([Validate(NUMBER), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], DropShadow.prototype, \"xOffset\", 2);\n__decorateClass([Validate(NUMBER), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], DropShadow.prototype, \"yOffset\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], DropShadow.prototype, \"blur\", 2);\n\n// packages/ag-charts-community/src/chart/series/seriesMarker.ts\nvar MARKER_SHAPE = predicateWithMessage(value => isMarkerShape(value) || typeof Marker === \"function\" && Object.create(value.prototype) instanceof Marker, `a marker shape keyword such as 'circle', 'diamond' or 'square' or an object extending the Marker class`);\nvar SeriesMarker = class extends ChangeDetectableProperties {\n constructor() {\n super(...arguments);\n this.enabled = true;\n this.shape = Circle;\n this.size = 6;\n this.fillOpacity = 1;\n this.strokeWidth = 1;\n this.strokeOpacity = 1;\n }\n getStyle() {\n const {\n size,\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity\n } = this;\n return {\n size,\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity\n };\n }\n getDiameter() {\n return this.size + this.strokeWidth;\n }\n};\n__decorateClass([Validate(BOOLEAN), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"enabled\", 2);\n__decorateClass([Validate(MARKER_SHAPE), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"shape\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"size\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n}), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n}), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n}), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], SeriesMarker.prototype, \"formatter\", 2);\n\n// packages/ag-charts-community/src/chart/series/seriesTooltip.ts\nvar SeriesTooltipInteraction = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = false;\n }\n};\n__decorateClass([Validate(BOOLEAN)], SeriesTooltipInteraction.prototype, \"enabled\", 2);\nvar SeriesTooltip = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.enabled = true;\n this.interaction = new SeriesTooltipInteraction();\n this.position = new TooltipPosition();\n }\n toTooltipHtml(defaults, params) {\n if (this.renderer) {\n return toTooltipHtml(this.renderer(params), defaults);\n }\n return toTooltipHtml(defaults);\n }\n};\n__decorateClass([Validate(BOOLEAN)], SeriesTooltip.prototype, \"enabled\", 2);\n__decorateClass([Validate(BOOLEAN, {\n optional: true\n})], SeriesTooltip.prototype, \"showArrow\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], SeriesTooltip.prototype, \"renderer\", 2);\n__decorateClass([Validate(OBJECT)], SeriesTooltip.prototype, \"interaction\", 2);\n__decorateClass([Validate(OBJECT)], SeriesTooltip.prototype, \"position\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/areaSeriesProperties.ts\nvar AreaSeriesProperties = class extends CartesianSeriesProperties {\n constructor() {\n super(...arguments);\n this.xName = void 0;\n this.fill = \"#c16068\";\n this.fillOpacity = 1;\n this.stroke = \"#874349\";\n this.strokeWidth = 2;\n this.strokeOpacity = 1;\n this.lineDash = [0];\n this.lineDashOffset = 0;\n this.shadow = new DropShadow();\n this.marker = new SeriesMarker();\n this.label = new Label();\n this.tooltip = new SeriesTooltip();\n this.connectMissingData = false;\n }\n};\n__decorateClass([Validate(STRING)], AreaSeriesProperties.prototype, \"xKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], AreaSeriesProperties.prototype, \"xName\", 2);\n__decorateClass([Validate(STRING)], AreaSeriesProperties.prototype, \"yKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], AreaSeriesProperties.prototype, \"yName\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], AreaSeriesProperties.prototype, \"normalizedTo\", 2);\n__decorateClass([Validate(COLOR_STRING)], AreaSeriesProperties.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO)], AreaSeriesProperties.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING)], AreaSeriesProperties.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AreaSeriesProperties.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO)], AreaSeriesProperties.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH)], AreaSeriesProperties.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], AreaSeriesProperties.prototype, \"lineDashOffset\", 2);\n__decorateClass([Validate(OBJECT)], AreaSeriesProperties.prototype, \"shadow\", 2);\n__decorateClass([Validate(OBJECT)], AreaSeriesProperties.prototype, \"marker\", 2);\n__decorateClass([Validate(OBJECT)], AreaSeriesProperties.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], AreaSeriesProperties.prototype, \"tooltip\", 2);\n__decorateClass([Validate(BOOLEAN)], AreaSeriesProperties.prototype, \"connectMissingData\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/markerUtil.ts\nfunction markerFadeInAnimation({\n id\n}, animationManager, status, ...markerSelections) {\n const params = {\n phase: status ? NODE_UPDATE_STATE_TO_PHASE_MAPPING[status] : \"trailing\"\n };\n staticFromToMotion(id, \"markers\", animationManager, markerSelections, {\n opacity: 0\n }, {\n opacity: 1\n }, params);\n markerSelections.forEach(s => s.cleanup());\n}\nfunction markerScaleInAnimation({\n id\n}, animationManager, ...markerSelections) {\n staticFromToMotion(id, \"markers\", animationManager, markerSelections, {\n scalingX: 0,\n scalingY: 0\n }, {\n scalingX: 1,\n scalingY: 1\n }, {\n phase: \"initial\"\n });\n markerSelections.forEach(s => s.cleanup());\n}\nfunction markerSwipeScaleInAnimation({\n id,\n nodeDataDependencies\n}, animationManager, ...markerSelections) {\n const seriesWidth = nodeDataDependencies.seriesRectWidth;\n const fromFn = (_, datum) => {\n var _a, _b;\n const x = (_b = (_a = datum.midPoint) == null ? void 0 : _a.x) != null ? _b : seriesWidth;\n let delay = clamp(0, inverseEaseOut(x / seriesWidth), 1);\n if (isNaN(delay)) {\n delay = 0;\n }\n return {\n scalingX: 0,\n scalingY: 0,\n delay,\n duration: QUICK_TRANSITION,\n phase: \"initial\"\n };\n };\n const toFn = () => {\n return {\n scalingX: 1,\n scalingY: 1\n };\n };\n fromToMotion(id, \"markers\", animationManager, markerSelections, {\n fromFn,\n toFn\n });\n}\nfunction resetMarkerFn(_node) {\n return {\n opacity: 1,\n scalingX: 1,\n scalingY: 1\n };\n}\nfunction resetMarkerPositionFn(_node, datum) {\n var _a, _b, _c, _d;\n return {\n translationX: (_b = (_a = datum.point) == null ? void 0 : _a.x) != null ? _b : NaN,\n translationY: (_d = (_c = datum.point) == null ? void 0 : _c.y) != null ? _d : NaN\n };\n}\nfunction prepareMarkerAnimation(pairMap, parentStatus) {\n const readFirstPair = (xValue, type) => {\n const val = pairMap[type][xValue];\n return Array.isArray(val) ? val[0] : val;\n };\n const markerStatus = datum => {\n const {\n xValue\n } = datum;\n if (pairMap.moved[xValue]) {\n return {\n point: readFirstPair(xValue, \"moved\"),\n status: \"updated\"\n };\n } else if (pairMap.removed[xValue]) {\n return {\n point: readFirstPair(xValue, \"removed\"),\n status: \"removed\"\n };\n } else if (pairMap.added[xValue]) {\n return {\n point: readFirstPair(xValue, \"added\"),\n status: \"added\"\n };\n }\n return {\n status: \"unknown\"\n };\n };\n const fromFn = (marker, datum) => {\n var _a, _b, _c, _d, _e, _f;\n const {\n status,\n point\n } = markerStatus(datum);\n if (status === \"unknown\") return {\n opacity: 0\n };\n const defaults = {\n translationX: (_b = (_a = point == null ? void 0 : point.from) == null ? void 0 : _a.x) != null ? _b : marker.translationX,\n translationY: (_d = (_c = point == null ? void 0 : point.from) == null ? void 0 : _c.y) != null ? _d : marker.translationY,\n opacity: marker.opacity,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[status]\n };\n if (parentStatus === \"added\") {\n return __spreadProps(__spreadValues({}, defaults), {\n opacity: 0,\n translationX: (_e = point == null ? void 0 : point.to) == null ? void 0 : _e.x,\n translationY: (_f = point == null ? void 0 : point.to) == null ? void 0 : _f.y,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[\"added\"]\n });\n }\n if (status === \"added\") {\n defaults.opacity = 0;\n }\n return defaults;\n };\n const toFn = (_marker, datum) => {\n var _a, _b;\n const {\n status,\n point\n } = markerStatus(datum);\n if (status === \"unknown\") return {\n opacity: 0\n };\n const defaults = {\n translationX: datum.point.x,\n translationY: datum.point.y,\n opacity: 1,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[status]\n };\n if (status === \"removed\" || parentStatus === \"removed\") {\n return __spreadProps(__spreadValues({}, defaults), {\n translationX: (_a = point == null ? void 0 : point.to) == null ? void 0 : _a.x,\n translationY: (_b = point == null ? void 0 : point.to) == null ? void 0 : _b.y,\n opacity: 0,\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[\"removed\"]\n });\n }\n return defaults;\n };\n return {\n fromFn,\n toFn\n };\n}\nfunction computeMarkerFocusBounds(series, {\n datumIndex\n}) {\n const nodeData = series.getNodeData();\n if (nodeData === void 0) return void 0;\n const datum = nodeData[datumIndex];\n if (datum === void 0 || datum.point === void 0) return void 0;\n const size = series.getFormattedMarkerStyle(datum).size;\n const radius = size / 2;\n const {\n x,\n y\n } = series.contentGroup.inverseTransformPoint(datum.point.x - radius, datum.point.y - radius);\n return new BBox(x, y, size, size);\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/pathUtil.ts\nfunction minMax(nodeData) {\n return nodeData.reduce(({\n min,\n max\n }, node) => {\n if (min == null || min.point.x > node.point.x) {\n min = node;\n }\n if (max == null || max.point.x < node.point.x) {\n max = node;\n }\n return {\n min,\n max\n };\n }, {});\n}\nfunction intersectionOnLine(a, b, targetX) {\n const m = (b.y - a.y) / (b.x - a.x);\n const y = (targetX - a.x) * m + a.y;\n return {\n x: targetX,\n y\n };\n}\nfunction backfillPathPoint(results, process, skip, processFn) {\n let prevMarkerIdx = -1,\n nextMarkerIdx = 0;\n const toProcess = [];\n while (nextMarkerIdx < results.length) {\n if (results[nextMarkerIdx].change === process) {\n toProcess.push(results[nextMarkerIdx]);\n nextMarkerIdx++;\n continue;\n }\n if (results[nextMarkerIdx].change === skip) {\n nextMarkerIdx++;\n continue;\n }\n if (toProcess.length > 0) {\n processFn(toProcess, prevMarkerIdx, nextMarkerIdx);\n toProcess.length = 0;\n }\n prevMarkerIdx = nextMarkerIdx;\n nextMarkerIdx++;\n }\n if (toProcess.length > 0) {\n processFn(toProcess, prevMarkerIdx, nextMarkerIdx);\n }\n}\nfunction backfillPathPointData(result, splitMode) {\n backfillPathPoint(result, \"out\", \"in\", (toProcess, sIdx, eIdx) => {\n var _a, _b;\n if (sIdx === -1 && result[eIdx]) {\n toProcess.forEach(d => d.to = result[eIdx].from);\n } else if (eIdx === result.length && result[sIdx]) {\n toProcess.forEach(d => d.to = result[sIdx].from);\n } else if (splitMode === \"intersect\" && ((_a = result[sIdx]) == null ? void 0 : _a.from) && ((_b = result[eIdx]) == null ? void 0 : _b.from)) {\n toProcess.forEach(d => d.to = intersectionOnLine(result[sIdx].from, result[eIdx].from, d.from.x));\n } else {\n toProcess.forEach(d => d.to = d.from);\n }\n });\n backfillPathPoint(result, \"in\", \"out\", (toProcess, sIdx, eIdx) => {\n var _a, _b;\n if (sIdx === -1 && result[eIdx]) {\n toProcess.forEach(d => d.from = result[eIdx].to);\n } else if (eIdx === result.length && result[sIdx]) {\n toProcess.forEach(d => d.from = result[sIdx].to);\n } else if (splitMode === \"intersect\" && ((_a = result[sIdx]) == null ? void 0 : _a.to) && ((_b = result[eIdx]) == null ? void 0 : _b.to)) {\n toProcess.forEach(d => d.from = intersectionOnLine(result[sIdx].to, result[eIdx].to, d.to.x));\n } else {\n toProcess.forEach(d => d.from = d.to);\n }\n });\n}\nfunction calculatePoint(from, to, ratio) {\n const x1 = isNaN(from.x) ? to.x : from.x;\n const y1 = isNaN(from.y) ? to.y : from.y;\n const xd = to.x - from.x;\n const yd = to.y - from.y;\n const xr = isNaN(xd) ? 0 : xd * ratio;\n const yr = isNaN(yd) ? 0 : yd * ratio;\n return {\n x: x1 + xr,\n y: y1 + yr\n };\n}\nfunction renderPartialPath(pairData, ratios, path) {\n const {\n path: linePath\n } = path;\n let previousTo;\n for (const data of pairData) {\n const {\n from,\n to\n } = data;\n const ratio = ratios[data.change];\n if (ratio == null || from == null || to == null) continue;\n const {\n x,\n y\n } = calculatePoint(from, to, ratio);\n if (data.moveTo === false) {\n linePath.lineTo(x, y);\n } else if (data.moveTo === true || !previousTo) {\n linePath.moveTo(x, y);\n } else if (previousTo) {\n const moveToRatio = data.moveTo === \"in\" ? ratio : 1 - ratio;\n const {\n x: midPointX,\n y: midPointY\n } = calculatePoint(previousTo, {\n x,\n y\n }, moveToRatio);\n linePath.lineTo(midPointX, midPointY);\n linePath.moveTo(x, y);\n }\n previousTo = {\n x,\n y\n };\n }\n}\nfunction pathSwipeInAnimation({\n id,\n visible,\n nodeDataDependencies\n}, animationManager, ...paths) {\n const {\n seriesRectWidth: width,\n seriesRectHeight: height\n } = nodeDataDependencies;\n staticFromToMotion(id, \"path_properties\", animationManager, paths, {\n clipX: 0\n }, {\n clipX: width\n }, {\n phase: \"initial\",\n start: {\n clipMode: \"normal\",\n clipY: height,\n visible\n },\n finish: {\n clipMode: void 0,\n visible\n }\n });\n}\nfunction pathFadeInAnimation({\n id\n}, subId, animationManager, phase = \"add\", ...selection) {\n staticFromToMotion(id, subId, animationManager, selection, {\n opacity: 0\n }, {\n opacity: 1\n }, {\n phase\n });\n}\nfunction pathFadeOutAnimation({\n id\n}, subId, animationManager, ...selection) {\n staticFromToMotion(id, subId, animationManager, selection, {\n opacity: 1\n }, {\n opacity: 0\n }, {\n phase: \"remove\"\n });\n}\nfunction buildResetPathFn(opts) {\n return _node => {\n return {\n opacity: opts.getOpacity(),\n clipScalingX: 1,\n clipMode: void 0\n };\n };\n}\nfunction updateClipPath({\n nodeDataDependencies\n}, path) {\n const toFinite = value => isFinite(value) ? value : 0;\n path.clipX = toFinite(nodeDataDependencies.seriesRectWidth);\n path.clipY = toFinite(nodeDataDependencies.seriesRectHeight);\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/scaling.ts\nfunction isContinuousScaling(scaling) {\n return scaling.type === \"continuous\" || scaling.type === \"log\";\n}\nfunction isCategoryScaling(scaling) {\n return scaling.type === \"category\";\n}\nfunction areEqual(a, b) {\n return a.domain.length === b.domain.length && a.range.length === b.range.length && a.domain.every((val, index) => val === b.domain[index]) && a.range.every((val, index) => val === b.range[index]);\n}\nfunction areScalingEqual(a, b) {\n if (a === void 0 || b === void 0) {\n return a !== void 0 || b !== void 0;\n }\n if (isContinuousScaling(a) && isContinuousScaling(b)) {\n return a.type === b.type && areEqual(a, b);\n }\n if (isCategoryScaling(a) && isCategoryScaling(b)) {\n return areEqual(a, b);\n }\n return false;\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/lineUtil.ts\nfunction scale(val, scaling) {\n if (!scaling) return NaN;\n if (val instanceof Date) {\n val = val.getTime();\n }\n if (scaling.type === \"continuous\" && typeof val === \"number\") {\n const domainRatio = (val - scaling.domain[0]) / (scaling.domain[1] - scaling.domain[0]);\n return domainRatio * (scaling.range[1] - scaling.range[0]) + scaling.range[0];\n }\n if (scaling.type === \"log\" && typeof val === \"number\") {\n return scaling.convert(val);\n }\n const matchingIndex = scaling.domain.findIndex(d => d === val);\n if (matchingIndex >= 0) {\n return scaling.range[matchingIndex];\n }\n return NaN;\n}\nfunction scalesChanged(newData, oldData) {\n return !areScalingEqual(newData.scales.x, oldData.scales.x) || !areScalingEqual(newData.scales.y, oldData.scales.y);\n}\nfunction closeMatch(a, b) {\n const an = Number(a);\n const bn = Number(b);\n if (!isNaN(an) && !isNaN(bn)) {\n return Math.abs(bn - an) < 0.25;\n }\n return a === b;\n}\nfunction calculateMoveTo(from = false, to = false) {\n if (from === to) {\n return Boolean(from);\n }\n return from ? \"in\" : \"out\";\n}\nfunction pairContinuousData(newData, oldData, opts = {}) {\n var _a, _b, _c, _d;\n const {\n backfillSplitMode = \"intersect\"\n } = opts;\n const toNewScale = oldDatum => {\n var _a2, _b2;\n return {\n x: scale((_a2 = oldDatum.xValue) != null ? _a2 : NaN, newData.scales.x),\n y: scale((_b2 = oldDatum.yValue) != null ? _b2 : NaN, newData.scales.y)\n };\n };\n const toOldScale = newDatum => {\n var _a2, _b2;\n return {\n x: scale((_a2 = newDatum.xValue) != null ? _a2 : NaN, oldData.scales.x),\n y: scale((_b2 = newDatum.yValue) != null ? _b2 : NaN, oldData.scales.y)\n };\n };\n const result = [];\n const resultMap = {\n added: {},\n moved: {},\n removed: {}\n };\n const pairUp = (from, to, xValue, change = \"move\") => {\n if (from && (isNaN(from.point.x) || isNaN(from.point.y))) {\n from = to;\n }\n const resultPoint = {\n from: from == null ? void 0 : from.point,\n to: to == null ? void 0 : to.point,\n moveTo: calculateMoveTo(from == null ? void 0 : from.point.moveTo, to == null ? void 0 : to.point.moveTo),\n change\n };\n if (change === \"move\") {\n resultMap.moved[xValue] = resultPoint;\n oldIdx++;\n newIdx++;\n } else if (change === \"in\") {\n resultMap.added[xValue] = resultPoint;\n newIdx++;\n } else if (change === \"out\") {\n resultMap.removed[xValue] = resultPoint;\n oldIdx++;\n }\n result.push(resultPoint);\n };\n const {\n min: minFromNode,\n max: maxFromNode\n } = minMax(oldData.nodeData);\n const {\n min: minToNode,\n max: maxToNode\n } = minMax(newData.nodeData);\n let oldIdx = 0;\n let newIdx = 0;\n while (oldIdx < oldData.nodeData.length || newIdx < newData.nodeData.length) {\n const from = oldData.nodeData[oldIdx];\n const to = newData.nodeData[newIdx];\n const fromShifted = from ? toNewScale(from) : void 0;\n const toUnshifted = to ? toOldScale(to) : void 0;\n const NA = void 0;\n if (fromShifted && closeMatch(fromShifted.x, to == null ? void 0 : to.point.x)) {\n pairUp(from, to, to.xValue, \"move\");\n } else if (fromShifted && fromShifted.x < ((_a = minToNode == null ? void 0 : minToNode.point.x) != null ? _a : -Infinity)) {\n pairUp(from, NA, from.xValue, \"out\");\n } else if (fromShifted && fromShifted.x > ((_b = maxToNode == null ? void 0 : maxToNode.point.x) != null ? _b : Infinity)) {\n pairUp(from, NA, from.xValue, \"out\");\n } else if (toUnshifted && toUnshifted.x < ((_c = minFromNode == null ? void 0 : minFromNode.point.x) != null ? _c : -Infinity)) {\n pairUp(NA, to, to.xValue, \"in\");\n } else if (toUnshifted && toUnshifted.x > ((_d = maxFromNode == null ? void 0 : maxFromNode.point.x) != null ? _d : Infinity)) {\n pairUp(NA, to, to.xValue, \"in\");\n } else if (fromShifted && fromShifted.x < (to == null ? void 0 : to.point.x)) {\n pairUp(from, NA, from.xValue, \"out\");\n } else if (toUnshifted && toUnshifted.x < (from == null ? void 0 : from.point.x)) {\n pairUp(NA, to, to.xValue, \"in\");\n } else if (from) {\n pairUp(from, NA, from.xValue, \"out\");\n } else if (to) {\n pairUp(NA, to, to.xValue, \"in\");\n } else {\n throw new Error(\"Unable to process points\");\n }\n }\n backfillPathPointData(result, backfillSplitMode);\n return {\n result,\n resultMap\n };\n}\nfunction pairCategoryData(newData, oldData, diff2, opts = {}) {\n var _a, _b, _c;\n const {\n backfillSplitMode = \"intersect\",\n multiDatum = false\n } = opts;\n const result = [];\n const resultMapSingle = {\n added: {},\n moved: {},\n removed: {}\n };\n const resultMapMulti = {\n added: {},\n moved: {},\n removed: {}\n };\n const pointResultMapping = {\n in: \"added\",\n move: \"moved\",\n out: \"removed\"\n };\n let previousResultPoint = void 0;\n let previousXValue = void 0;\n const addToResultMap = (xValue, newPoint) => {\n var _a2, _b2;\n const type = pointResultMapping[newPoint.change];\n if (multiDatum) {\n (_b2 = (_a2 = resultMapMulti[type])[xValue]) != null ? _b2 : _a2[xValue] = [];\n resultMapMulti[type][xValue].push(newPoint);\n } else {\n resultMapSingle[type][xValue] = newPoint;\n }\n previousResultPoint = newPoint;\n previousXValue = transformIntegratedCategoryValue(xValue);\n };\n let oldIndex = 0;\n let newIndex = 0;\n let isXUnordered = false;\n while (oldIndex < oldData.nodeData.length || newIndex < newData.nodeData.length) {\n const before = oldData.nodeData[oldIndex];\n const after = newData.nodeData[newIndex];\n const bXValue = transformIntegratedCategoryValue(before == null ? void 0 : before.xValue);\n const aXValue = transformIntegratedCategoryValue(after == null ? void 0 : after.xValue);\n let resultPoint;\n if (bXValue === aXValue) {\n resultPoint = {\n change: \"move\",\n moveTo: calculateMoveTo((_a = before.point.moveTo) != null ? _a : false, after.point.moveTo),\n from: before.point,\n to: after.point\n };\n addToResultMap(before == null ? void 0 : before.xValue, resultPoint);\n oldIndex++;\n newIndex++;\n } else if (diff2 == null ? void 0 : diff2.removed.has(String(bXValue))) {\n resultPoint = {\n change: \"out\",\n moveTo: (_b = before.point.moveTo) != null ? _b : false,\n from: before.point\n };\n addToResultMap(before == null ? void 0 : before.xValue, resultPoint);\n oldIndex++;\n } else if (diff2 == null ? void 0 : diff2.added.has(String(aXValue))) {\n resultPoint = {\n change: \"in\",\n moveTo: (_c = after.point.moveTo) != null ? _c : false,\n to: after.point\n };\n addToResultMap(after == null ? void 0 : after.xValue, resultPoint);\n newIndex++;\n } else if (multiDatum && previousResultPoint && previousXValue === bXValue) {\n resultPoint = __spreadValues({}, previousResultPoint);\n addToResultMap(before == null ? void 0 : before.xValue, resultPoint);\n oldIndex++;\n } else if (multiDatum && previousResultPoint && previousXValue === aXValue) {\n resultPoint = __spreadValues({}, previousResultPoint);\n addToResultMap(after == null ? void 0 : after.xValue, resultPoint);\n newIndex++;\n } else {\n isXUnordered = true;\n break;\n }\n result.push(resultPoint);\n }\n let previousX = -Infinity;\n isXUnordered || (isXUnordered = result.some(pathPoint => {\n const {\n change: marker,\n to: {\n x = -Infinity\n } = {}\n } = pathPoint;\n if (marker === \"out\") return;\n const unordered = x < previousX;\n previousX = x;\n return unordered;\n }));\n if (isXUnordered) {\n return {\n result: void 0,\n resultMap: void 0\n };\n }\n backfillPathPointData(result, backfillSplitMode);\n return {\n result,\n resultMap: multiDatum ? resultMapMulti : resultMapSingle\n };\n}\nfunction determinePathStatus(newData, oldData, pairData) {\n var _a, _b, _c, _d;\n let status = \"updated\";\n const visible = data => {\n return data.visible;\n };\n if (!visible(oldData) && visible(newData)) {\n status = \"added\";\n } else if (visible(oldData) && !visible(newData)) {\n status = \"removed\";\n } else {\n for (let i = 0; i < pairData.length; i++) {\n if (pairData[i].change !== \"move\") break;\n if (((_a = pairData[i].from) == null ? void 0 : _a.x) !== ((_b = pairData[i].to) == null ? void 0 : _b.x)) break;\n if (((_c = pairData[i].from) == null ? void 0 : _c.y) !== ((_d = pairData[i].to) == null ? void 0 : _d.y)) break;\n if (i === pairData.length - 1) return \"no-op\";\n }\n }\n return status;\n}\nfunction prepareLinePathPropertyAnimation(status, visibleToggleMode) {\n const phase = visibleToggleMode === \"none\" ? \"updated\" : status;\n const result = {\n fromFn: _path => {\n let mixin;\n if (status === \"removed\") {\n mixin = {\n finish: {\n visible: false\n }\n };\n } else if (status === \"added\") {\n mixin = {\n start: {\n visible: true\n }\n };\n } else {\n mixin = {};\n }\n return __spreadValues({\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[phase]\n }, mixin);\n },\n toFn: _path => {\n return {\n phase: NODE_UPDATE_STATE_TO_PHASE_MAPPING[phase]\n };\n }\n };\n if (visibleToggleMode === \"fade\") {\n return {\n fromFn: path => {\n const opacity = status === \"added\" ? 0 : path.opacity;\n return __spreadValues({\n opacity\n }, result.fromFn(path));\n },\n toFn: path => {\n const opacity = status === \"removed\" ? 0 : 1;\n return __spreadValues({\n opacity\n }, result.toFn(path));\n }\n };\n }\n return result;\n}\nfunction prepareLinePathAnimationFns(newData, oldData, pairData, visibleToggleMode, render) {\n const status = determinePathStatus(newData, oldData, pairData);\n const removePhaseFn = (ratio, path) => {\n render(pairData, {\n move: 0,\n out: ratio\n }, path);\n };\n const updatePhaseFn = (ratio, path) => {\n render(pairData, {\n move: ratio\n }, path);\n };\n const addPhaseFn = (ratio, path) => {\n render(pairData, {\n move: 1,\n in: ratio\n }, path);\n };\n const pathProperties = prepareLinePathPropertyAnimation(status, visibleToggleMode);\n return {\n status,\n path: {\n addPhaseFn,\n updatePhaseFn,\n removePhaseFn\n },\n pathProperties\n };\n}\nfunction prepareLinePathAnimation(newData, oldData, diff2) {\n var _a, _b, _c;\n const isCategoryBased = ((_a = newData.scales.x) == null ? void 0 : _a.type) === \"category\";\n const wasCategoryBased = ((_b = oldData.scales.x) == null ? void 0 : _b.type) === \"category\";\n if (isCategoryBased !== wasCategoryBased) {\n return;\n }\n const {\n result: pairData,\n resultMap: pairMap\n } = isCategoryBased ? pairCategoryData(newData, oldData, diff2) : pairContinuousData(newData, oldData);\n let status = \"updated\";\n if (oldData.visible && !newData.visible) {\n status = \"removed\";\n } else if (!oldData.visible && newData.visible) {\n status = \"added\";\n }\n if (pairData === void 0 || pairMap === void 0) {\n return;\n }\n const hasMotion = ((_c = diff2 == null ? void 0 : diff2.changed) != null ? _c : true) || scalesChanged(newData, oldData) || status !== \"updated\";\n const pathFns = prepareLinePathAnimationFns(newData, oldData, pairData, \"fade\", renderPartialPath);\n const marker = prepareMarkerAnimation(pairMap, status);\n return __spreadProps(__spreadValues({}, pathFns), {\n marker,\n hasMotion\n });\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/areaUtil.ts\nvar AreaSeriesTag = /* @__PURE__ */(AreaSeriesTag2 => {\n AreaSeriesTag2[AreaSeriesTag2[\"Fill\"] = 0] = \"Fill\";\n AreaSeriesTag2[AreaSeriesTag2[\"Stroke\"] = 1] = \"Stroke\";\n AreaSeriesTag2[AreaSeriesTag2[\"Marker\"] = 2] = \"Marker\";\n AreaSeriesTag2[AreaSeriesTag2[\"Label\"] = 3] = \"Label\";\n return AreaSeriesTag2;\n})(AreaSeriesTag || {});\nfunction splitFillPoints(context) {\n const {\n points,\n phantomPoints\n } = context.fillData;\n return {\n top: points,\n bottom: phantomPoints\n };\n}\nfunction prepPoints(key, ctx, points) {\n return {\n scales: ctx.scales,\n nodeData: points[key],\n visible: ctx.visible\n };\n}\nfunction pairFillCategoryData(newData, oldData, diff2) {\n const oldPoints = splitFillPoints(oldData);\n const newPoints = splitFillPoints(newData);\n const pairOpts = {\n multiDatum: true\n };\n return {\n top: pairCategoryData(prepPoints(\"top\", newData, newPoints), prepPoints(\"top\", oldData, oldPoints), diff2, pairOpts),\n bottom: pairCategoryData(prepPoints(\"bottom\", newData, newPoints), prepPoints(\"bottom\", oldData, oldPoints), diff2, pairOpts)\n };\n}\nfunction pairFillContinuousData(newData, oldData) {\n const oldPoints = splitFillPoints(oldData);\n const newPoints = splitFillPoints(newData);\n return {\n top: pairContinuousData(prepPoints(\"top\", newData, newPoints), prepPoints(\"top\", oldData, oldPoints)),\n bottom: pairContinuousData(prepPoints(\"bottom\", newData, newPoints), prepPoints(\"bottom\", oldData, oldPoints))\n };\n}\nfunction prepareAreaPathAnimation(newData, oldData, diff2) {\n var _a, _b;\n const isCategoryBased = ((_a = newData.scales.x) == null ? void 0 : _a.type) === \"category\";\n const wasCategoryBased = ((_b = oldData.scales.x) == null ? void 0 : _b.type) === \"category\";\n if (isCategoryBased !== wasCategoryBased) {\n return;\n }\n let status = \"updated\";\n if (oldData.visible && !newData.visible) {\n status = \"removed\";\n } else if (!oldData.visible && newData.visible) {\n status = \"added\";\n }\n const prepareMarkerPairs = () => {\n if (isCategoryBased) {\n return pairCategoryData(newData, oldData, diff2, {\n backfillSplitMode: \"static\",\n multiDatum: true\n });\n }\n return pairContinuousData(newData, oldData, {\n backfillSplitMode: \"static\"\n });\n };\n const prepareFillPairs = () => {\n if (isCategoryBased) {\n return pairFillCategoryData(newData, oldData, diff2);\n }\n return pairFillContinuousData(newData, oldData);\n };\n const {\n resultMap: markerPairMap\n } = prepareMarkerPairs();\n const {\n top,\n bottom\n } = prepareFillPairs();\n if (markerPairMap === void 0 || top.result === void 0 || bottom.result === void 0) {\n return;\n }\n const pairData = [...top.result, ...bottom.result.reverse()];\n const stackVisible = oldData.stackVisible ? newData.stackVisible : false;\n const fadeMode = stackVisible ? \"none\" : \"fade\";\n const fill = prepareLinePathAnimationFns(newData, oldData, pairData, fadeMode, renderPartialPath);\n const marker = prepareMarkerAnimation(markerPairMap, status);\n return {\n status: fill.status,\n fill,\n marker\n };\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/areaSeries.ts\nvar AreaSeries = class extends CartesianSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n directionKeys: DEFAULT_CARTESIAN_DIRECTION_KEYS,\n directionNames: DEFAULT_CARTESIAN_DIRECTION_NAMES,\n pathsPerSeries: 2,\n pathsZIndexSubOrderOffset: [0, 1e3],\n hasMarkers: true,\n markerSelectionGarbageCollection: false,\n pickModes: [1 /* NEAREST_BY_MAIN_AXIS_FIRST */, 0 /* EXACT_SHAPE_MATCH */],\n animationResetFns: {\n path: buildResetPathFn({\n getOpacity: () => this.getOpacity()\n }),\n label: resetLabelFn,\n marker: (node, datum) => __spreadValues(__spreadValues({}, resetMarkerFn(node)), resetMarkerPositionFn(node, datum))\n }\n });\n this.properties = new AreaSeriesProperties();\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b;\n if (this.data == null || !this.properties.isValid()) {\n return;\n }\n const {\n data,\n visible,\n seriesGrouping: {\n groupIndex = this.id,\n stackCount = 1\n } = {}\n } = this;\n const {\n xKey,\n yKey,\n connectMissingData,\n normalizedTo\n } = this.properties;\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const xScale = (_a = this.axes[\"x\" /* X */]) == null ? void 0 : _a.scale;\n const yScale = (_b = this.axes[\"y\" /* Y */]) == null ? void 0 : _b.scale;\n const {\n isContinuousX,\n xScaleType,\n yScaleType\n } = this.getScaleInformation({\n xScale,\n yScale\n });\n const ids = [`area-stack-${groupIndex}-yValues`, `area-stack-${groupIndex}-yValues-trailing`, `area-stack-${groupIndex}-yValues-prev`, `area-stack-${groupIndex}-yValues-trailing-prev`, `area-stack-${groupIndex}-yValues-marker`];\n const extraProps = [];\n if (isDefined(normalizedTo)) {\n extraProps.push(normaliseGroupTo([ids[0], ids[1], ids[4]], normalizedTo, \"range\"));\n extraProps.push(normaliseGroupTo([ids[2], ids[3]], normalizedTo, \"range\"));\n }\n if (!isContinuousX && animationEnabled && this.processedData) {\n extraProps.push(diff(this.processedData));\n }\n if (animationEnabled) {\n extraProps.push(animationValidation());\n }\n const common = {\n invalidValue: null\n };\n if (connectMissingData && stackCount > 1) {\n common.invalidValue = 0;\n }\n if (!visible) {\n common.forceValue = 0;\n }\n yield this.requestDataModel(dataController, data, {\n props: [keyProperty(xKey, xScaleType, {\n id: \"xValue\"\n }), valueProperty(yKey, yScaleType, __spreadValues({\n id: `yValueRaw`\n }, common)), ...groupAccumulativeValueProperty(yKey, \"window\", \"current\", __spreadProps(__spreadValues({\n id: `yValueEnd`\n }, common), {\n groupId: ids[0]\n }), yScaleType), ...groupAccumulativeValueProperty(yKey, \"window-trailing\", \"current\", __spreadProps(__spreadValues({\n id: `yValueStart`\n }, common), {\n groupId: ids[1]\n }), yScaleType), ...groupAccumulativeValueProperty(yKey, \"window\", \"last\", __spreadProps(__spreadValues({\n id: `yValuePreviousEnd`\n }, common), {\n groupId: ids[2]\n }), yScaleType), ...groupAccumulativeValueProperty(yKey, \"window-trailing\", \"last\", __spreadProps(__spreadValues({\n id: `yValuePreviousStart`\n }, common), {\n groupId: ids[3]\n }), yScaleType), ...groupAccumulativeValueProperty(yKey, \"normal\", \"current\", __spreadProps(__spreadValues({\n id: `yValueCumulative`\n }, common), {\n groupId: ids[4]\n }), yScaleType), ...extraProps],\n groupByKeys: true,\n groupByData: false\n });\n this.animationState.transition(\"updateData\");\n });\n }\n getSeriesDomain(direction) {\n const {\n processedData,\n dataModel,\n axes\n } = this;\n if (!processedData || !dataModel || processedData.data.length === 0) return [];\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n const keyDef = dataModel.resolveProcessedDataDefById(this, `xValue`);\n const keys = dataModel.getDomain(this, `xValue`, \"key\", processedData);\n const yExtent = dataModel.getDomain(this, `yValueEnd`, \"value\", processedData);\n if (direction === \"x\" /* X */) {\n if ((keyDef == null ? void 0 : keyDef.def.type) === \"key\" && keyDef.def.valueType === \"category\") {\n return keys;\n }\n return fixNumericExtent(extent(keys), xAxis);\n } else if (yAxis instanceof LogAxis || yAxis instanceof TimeAxis) {\n return fixNumericExtent(yExtent, yAxis);\n } else {\n const fixedYExtent = [yExtent[0] > 0 ? 0 : yExtent[0], yExtent[1] < 0 ? 0 : yExtent[1]];\n return fixNumericExtent(fixedYExtent, yAxis);\n }\n }\n createNodeData() {\n return __async(this, null, function* () {\n var _a;\n const {\n axes,\n data,\n processedData: {\n data: groupedData\n } = {},\n dataModel\n } = this;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n if (!xAxis || !yAxis || !data || !dataModel || !this.properties.isValid()) {\n return;\n }\n const {\n yKey,\n xKey,\n marker,\n label,\n fill: seriesFill,\n stroke: seriesStroke,\n connectMissingData\n } = this.properties;\n const {\n scale: xScale\n } = xAxis;\n const {\n scale: yScale\n } = yAxis;\n const {\n isContinuousY\n } = this.getScaleInformation({\n xScale,\n yScale\n });\n const xOffset = ((_a = xScale.bandwidth) != null ? _a : 0) / 2;\n const defs = dataModel.resolveProcessedDataDefsByIds(this, [`yValueStart`, `yValueEnd`, `yValueRaw`, `yValuePreviousStart`, `yValuePreviousEnd`, `yValueCumulative`]);\n const createMovePoint = plainPoint => __spreadProps(__spreadValues({}, plainPoint), {\n point: __spreadProps(__spreadValues({}, plainPoint.point), {\n moveTo: true\n })\n });\n const createPathCoordinates = (xValue, lastYEnd, yEnd) => {\n const x = xScale.convert(xValue) + xOffset;\n const prevYCoordinate = yScale.convert(lastYEnd);\n const currYCoordinate = yScale.convert(yEnd);\n return [{\n point: {\n x,\n y: currYCoordinate\n },\n yValue: yEnd,\n xValue\n }, {\n point: {\n x,\n y: prevYCoordinate\n },\n yValue: lastYEnd,\n xValue\n }];\n };\n const createMarkerCoordinate = (xDatum, yEnd, rawYDatum) => {\n let currY;\n if (isDefined(this.properties.normalizedTo) ? isContinuousY && isContinuous(rawYDatum) : !isNaN(rawYDatum)) {\n currY = yEnd;\n }\n return {\n x: xScale.convert(xDatum) + xOffset,\n y: yScale.convert(currY),\n size: marker.size\n };\n };\n const itemId = yKey;\n const labelData = [];\n const markerData = [];\n const {\n visibleSameStackCount\n } = this.ctx.seriesStateManager.getVisiblePeerGroupIndex(this);\n const context = {\n itemId,\n fillData: {\n itemId,\n points: [],\n phantomPoints: []\n },\n strokeData: {\n itemId,\n points: []\n },\n labelData,\n nodeData: markerData,\n scales: this.calculateScaling(),\n visible: this.visible,\n stackVisible: visibleSameStackCount > 0\n };\n const fillPoints = context.fillData.points;\n const fillPhantomPoints = context.fillData.phantomPoints;\n const strokePoints = context.strokeData.points;\n let datumIdx = -1;\n let lastXDatum;\n let lastYDatum = -Infinity;\n groupedData == null ? void 0 : groupedData.forEach(datumGroup => {\n const {\n keys,\n keys: [xDatum],\n datum: datumArray,\n values: valuesArray\n } = datumGroup;\n valuesArray.forEach((values, valueIdx) => {\n var _a2, _b, _c;\n datumIdx++;\n const seriesDatum = datumArray[valueIdx];\n const dataValues = dataModel.resolveProcessedDataDefsValues(defs, {\n keys,\n values\n });\n const {\n yValueRaw: yDatum,\n yValueCumulative\n } = dataValues;\n let {\n yValueStart,\n yValueEnd,\n yValuePreviousStart,\n yValuePreviousEnd\n } = dataValues;\n const validPoint = yDatum != null;\n const point = createMarkerCoordinate(xDatum, +yValueCumulative, yDatum);\n if (validPoint && marker) {\n markerData.push({\n index: datumIdx,\n series: this,\n itemId,\n datum: seriesDatum,\n midPoint: {\n x: point.x,\n y: point.y\n },\n cumulativeValue: yValueEnd,\n yValue: yDatum,\n xValue: xDatum,\n yKey,\n xKey,\n point,\n fill: (_a2 = marker.fill) != null ? _a2 : seriesFill,\n stroke: (_b = marker.stroke) != null ? _b : seriesStroke,\n strokeWidth: (_c = marker.strokeWidth) != null ? _c : this.getStrokeWidth(this.properties.strokeWidth)\n });\n }\n if (validPoint && label) {\n const labelText = this.getLabelText(label, {\n value: yDatum,\n datum: seriesDatum,\n xKey,\n yKey,\n xName: this.properties.xName,\n yName: this.properties.yName\n }, value => isFiniteNumber(value) ? value.toFixed(2) : String(value));\n labelData.push({\n index: datumIdx,\n series: this,\n itemId: yKey,\n datum: seriesDatum,\n x: point.x,\n y: point.y,\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 } : void 0\n });\n }\n const xValid = lastXDatum != null && xDatum != null;\n const yValid = lastYDatum != null && validPoint;\n if (!yValid) {\n yValueStart = yValueStart != null ? yValueStart : 0;\n yValueEnd = yValueStart != null ? yValueStart : 0;\n yValuePreviousStart = yValuePreviousStart != null ? yValuePreviousStart : 0;\n yValuePreviousEnd = yValuePreviousStart != null ? yValuePreviousStart : 0;\n }\n const [prevTop, prevBottom] = createPathCoordinates(lastXDatum, yValuePreviousStart, yValuePreviousEnd);\n const [top, bottom] = createPathCoordinates(xDatum, yValueStart, yValueEnd);\n if (xValid && (!connectMissingData || yValid)) {\n fillPoints.push(prevTop, top);\n fillPhantomPoints.push(prevBottom, bottom);\n }\n if (yValid && datumIdx > 0) {\n strokePoints.push(createMovePoint(prevTop), top);\n }\n lastXDatum = xDatum;\n lastYDatum = yDatum;\n });\n });\n if (strokePoints.length > 0) {\n strokePoints[0] = createMovePoint(strokePoints[0]);\n }\n return context;\n });\n }\n isPathOrSelectionDirty() {\n return this.properties.marker.isDirty();\n }\n markerFactory() {\n const {\n shape\n } = this.properties.marker;\n const MarkerShape = getMarker(shape);\n return new MarkerShape();\n }\n updatePathNodes(opts) {\n return __async(this, null, function* () {\n const {\n opacity,\n visible,\n animationEnabled\n } = opts;\n const [fill, stroke] = opts.paths;\n const strokeWidth = this.getStrokeWidth(this.properties.strokeWidth);\n stroke.setProperties({\n tag: 1 /* Stroke */,\n fill: void 0,\n lineJoin: stroke.lineCap = \"round\",\n pointerEvents: 1 /* None */,\n stroke: this.properties.stroke,\n strokeWidth,\n strokeOpacity: this.properties.strokeOpacity,\n lineDash: this.properties.lineDash,\n lineDashOffset: this.properties.lineDashOffset,\n opacity,\n visible\n });\n fill.setProperties({\n tag: 0 /* Fill */,\n stroke: void 0,\n lineJoin: \"round\",\n pointerEvents: 1 /* None */,\n fill: this.properties.fill,\n fillOpacity: this.properties.fillOpacity,\n lineDash: this.properties.lineDash,\n lineDashOffset: this.properties.lineDashOffset,\n strokeOpacity: this.properties.strokeOpacity,\n fillShadow: this.properties.shadow,\n opacity,\n visible: visible || animationEnabled,\n strokeWidth\n });\n updateClipPath(this, stroke);\n updateClipPath(this, fill);\n });\n }\n updatePaths(opts) {\n return __async(this, null, function* () {\n this.updateAreaPaths(opts.paths, opts.contextData);\n });\n }\n updateAreaPaths(paths, contextData) {\n this.updateFillPath(paths, contextData);\n this.updateStrokePath(paths, contextData);\n }\n updateFillPath(paths, contextData) {\n const {\n fillData\n } = contextData;\n const [fill] = paths;\n const {\n path: fillPath\n } = fill;\n fillPath.clear(true);\n let lastPoint;\n for (const {\n point\n } of iterate(fillData.points, iterateReverseArray(fillData.phantomPoints))) {\n if (point.moveTo) {\n fillPath.moveTo(point.x, point.y);\n } else if ((lastPoint == null ? void 0 : lastPoint.y) !== point.y) {\n if (lastPoint) {\n fillPath.lineTo(lastPoint.x, lastPoint.y);\n }\n fillPath.lineTo(point.x, point.y);\n }\n lastPoint = point;\n }\n if (lastPoint) {\n fillPath.lineTo(lastPoint.x, lastPoint.y);\n }\n fillPath.closePath();\n fill.checkPathDirty();\n }\n updateStrokePath(paths, contextData) {\n const {\n strokeData\n } = contextData;\n const [, stroke] = paths;\n const {\n path: strokePath\n } = stroke;\n strokePath.clear(true);\n for (const {\n point\n } of strokeData.points) {\n if (point.moveTo) {\n strokePath.moveTo(point.x, point.y);\n } else {\n strokePath.lineTo(point.x, point.y);\n }\n }\n stroke.checkPathDirty();\n }\n updateMarkerSelection(opts) {\n return __async(this, null, function* () {\n const {\n nodeData,\n markerSelection\n } = opts;\n if (this.properties.marker.isDirty()) {\n markerSelection.clear();\n markerSelection.cleanup();\n }\n return markerSelection.update(this.properties.marker.enabled ? nodeData : []);\n });\n }\n updateMarkerNodes(opts) {\n return __async(this, null, function* () {\n const {\n markerSelection,\n isHighlight: highlighted\n } = opts;\n const {\n xKey,\n yKey,\n marker,\n fill,\n stroke,\n strokeWidth,\n fillOpacity,\n strokeOpacity,\n highlightStyle\n } = this.properties;\n const baseStyle = mergeDefaults(highlighted && highlightStyle.item, marker.getStyle(), {\n fill,\n stroke,\n strokeWidth,\n fillOpacity,\n strokeOpacity\n });\n markerSelection.each((node, datum) => {\n this.updateMarkerStyle(node, marker, {\n datum,\n highlighted,\n xKey,\n yKey\n }, baseStyle);\n });\n if (!highlighted) {\n this.properties.marker.markClean();\n }\n });\n }\n updateLabelSelection(opts) {\n return __async(this, null, function* () {\n const {\n labelData,\n labelSelection\n } = opts;\n return labelSelection.update(labelData, text => {\n text.tag = 3 /* Label */;\n });\n });\n }\n updateLabelNodes(opts) {\n return __async(this, null, function* () {\n const {\n labelSelection\n } = opts;\n const {\n enabled: labelEnabled,\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily,\n color\n } = this.properties.label;\n labelSelection.each((text, datum) => {\n const {\n x,\n y,\n label\n } = datum;\n if (label && labelEnabled && this.visible) {\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 = x;\n text.y = y - 10;\n text.fill = color;\n text.visible = true;\n } else {\n text.visible = false;\n }\n });\n });\n }\n getTooltipHtml(nodeDatum) {\n const {\n id: seriesId,\n axes,\n dataModel\n } = this;\n const {\n xKey,\n xName,\n yName,\n tooltip,\n marker\n } = this.properties;\n const {\n yKey,\n xValue,\n yValue,\n datum,\n itemId\n } = nodeDatum;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n if (!this.properties.isValid() || !(xAxis && yAxis && isFiniteNumber(yValue)) || !dataModel) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const xString = xAxis.formatDatum(xValue);\n const yString = yAxis.formatDatum(yValue);\n const title = sanitizeHtml(yName);\n const content = sanitizeHtml(xString + \": \" + yString);\n const baseStyle = mergeDefaults({\n fill: this.properties.fill\n }, marker.getStyle(), {\n stroke: this.properties.stroke,\n strokeWidth: this.properties.strokeWidth\n });\n const {\n fill: color\n } = this.getMarkerStyle(marker, {\n datum: nodeDatum,\n xKey,\n yKey,\n highlighted: false\n }, baseStyle);\n return tooltip.toTooltipHtml({\n title,\n content,\n backgroundColor: color\n }, {\n datum,\n itemId,\n xKey,\n xName,\n yKey,\n yName,\n color,\n title,\n seriesId\n });\n }\n getLegendData(legendType) {\n var _a, _b, _c, _d;\n if (!((_a = this.data) == null ? void 0 : _a.length) || !this.properties.isValid() || legendType !== \"category\") {\n return [];\n }\n const {\n yKey,\n yName,\n fill,\n stroke,\n fillOpacity,\n strokeOpacity,\n strokeWidth,\n lineDash,\n marker,\n visible\n } = this.properties;\n const useAreaFill = !marker.enabled || marker.fill === void 0;\n return [{\n legendType,\n id: this.id,\n itemId: yKey,\n seriesId: this.id,\n enabled: visible,\n label: {\n text: yName != null ? yName : yKey\n },\n marker: {\n shape: marker.shape,\n fill: useAreaFill ? fill : marker.fill,\n fillOpacity: useAreaFill ? fillOpacity : marker.fillOpacity,\n stroke: (_b = marker.stroke) != null ? _b : stroke,\n strokeOpacity: (_c = marker.strokeOpacity) != null ? _c : strokeOpacity,\n strokeWidth: (_d = marker.strokeWidth) != null ? _d : 0,\n enabled: marker.enabled || strokeWidth <= 0\n },\n line: {\n stroke,\n strokeOpacity,\n strokeWidth,\n lineDash\n }\n }];\n }\n animateEmptyUpdateReady(animationData) {\n const {\n markerSelection,\n labelSelection,\n contextData,\n paths\n } = animationData;\n const {\n animationManager\n } = this.ctx;\n this.updateAreaPaths(paths, contextData);\n pathSwipeInAnimation(this, animationManager, ...paths);\n resetMotion([markerSelection], resetMarkerPositionFn);\n markerSwipeScaleInAnimation(this, animationManager, markerSelection);\n seriesLabelFadeInAnimation(this, \"labels\", animationManager, labelSelection);\n }\n animateReadyResize(animationData) {\n const {\n contextData,\n paths\n } = animationData;\n this.updateAreaPaths(paths, contextData);\n super.animateReadyResize(animationData);\n }\n animateWaitingUpdateReady(animationData) {\n var _a, _b;\n const {\n animationManager\n } = this.ctx;\n const {\n markerSelection,\n labelSelection,\n contextData,\n paths,\n previousContextData\n } = animationData;\n const [fill, stroke] = paths;\n if (fill == null && stroke == null) return;\n super.resetAllAnimation(animationData);\n const update = () => {\n this.updateAreaPaths(paths, contextData);\n this.updateStrokePath(paths, contextData);\n };\n const skip = () => {\n animationManager.skipCurrentBatch();\n update();\n };\n if (contextData == null || previousContextData == null) {\n update();\n markerFadeInAnimation(this, animationManager, \"added\", markerSelection);\n pathFadeInAnimation(this, \"fill_path_properties\", animationManager, \"add\", fill);\n pathFadeInAnimation(this, \"stroke\", animationManager, \"trailing\", stroke);\n seriesLabelFadeInAnimation(this, \"labels\", animationManager, labelSelection);\n return;\n }\n const fns = prepareAreaPathAnimation(contextData, previousContextData, (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.diff);\n if (fns === void 0) {\n skip();\n return;\n } else if (fns.status === \"no-op\") {\n return;\n }\n markerFadeInAnimation(this, animationManager, void 0, markerSelection);\n fromToMotion(this.id, \"fill_path_properties\", animationManager, [fill], fns.fill.pathProperties);\n pathMotion(this.id, \"fill_path_update\", animationManager, [fill], fns.fill.path);\n this.updateStrokePath(paths, contextData);\n pathFadeInAnimation(this, \"stroke\", animationManager, \"trailing\", stroke);\n seriesLabelFadeInAnimation(this, \"labels\", animationManager, labelSelection);\n }\n isLabelEnabled() {\n return this.properties.label.enabled;\n }\n nodeFactory() {\n return new Group();\n }\n getFormattedMarkerStyle(datum) {\n const {\n xKey,\n yKey\n } = datum;\n return this.getMarkerStyle(this.properties.marker, {\n datum,\n xKey,\n yKey,\n highlighted: true\n });\n }\n computeFocusBounds(opts) {\n return computeMarkerFocusBounds(this, opts);\n }\n};\nAreaSeries.className = \"AreaSeries\";\nAreaSeries.type = \"area\";\n\n// packages/ag-charts-community/src/chart/series/cartesian/areaSeriesModule.ts\nvar AreaSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n identifier: \"area\",\n instanceConstructor: AreaSeries,\n stackable: true,\n defaultAxes: [{\n type: \"number\" /* NUMBER */,\n position: \"left\" /* LEFT */\n }, {\n type: \"category\" /* CATEGORY */,\n position: \"bottom\" /* BOTTOM */\n }],\n themeTemplate: {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n nodeClickRange: \"nearest\",\n tooltip: {\n position: {\n type: \"node\"\n }\n },\n fillOpacity: 0.8,\n strokeOpacity: 1,\n strokeWidth: 0,\n lineDash: [0],\n lineDashOffset: 0,\n shadow: {\n enabled: false,\n color: DEFAULT_SHADOW_COLOUR,\n xOffset: 3,\n yOffset: 3,\n blur: 5\n },\n marker: {\n __extends__: EXTENDS_CARTESIAN_MARKER_DEFAULTS,\n enabled: false,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 0\n },\n label: {\n enabled: false,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR\n }\n }\n },\n paletteFactory: params => {\n const {\n marker\n } = markerPaletteFactory(params);\n return {\n fill: marker.fill,\n stroke: marker.stroke,\n marker\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/series/cartesian/quadtreeUtil.ts\nfunction* childrenIter(parent) {\n for (const node of parent.children) {\n yield node;\n }\n}\nfunction addHitTestersToQuadtree(quadtree, hitTesters) {\n for (const node of hitTesters) {\n const datum = node.datum;\n if (datum === void 0) {\n Logger.error(\"undefined datum\");\n } else {\n quadtree.addValue(node, datum);\n }\n }\n}\nfunction findQuadtreeMatch(series, point) {\n const {\n x,\n y\n } = series.contentGroup.transformPoint(point.x, point.y);\n const {\n nearest,\n distanceSquared: distanceSquared2\n } = series.getQuadTree().find(x, y);\n if (nearest !== void 0) {\n return {\n datum: nearest.value,\n distance: Math.sqrt(distanceSquared2)\n };\n }\n return void 0;\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/abstractBarSeries.ts\nvar AbstractBarSeriesProperties = class extends CartesianSeriesProperties {\n constructor() {\n super(...arguments);\n this.direction = \"vertical\";\n }\n};\n__decorateClass([Validate(DIRECTION)], AbstractBarSeriesProperties.prototype, \"direction\", 2);\nvar AbstractBarSeries = class extends CartesianSeries {\n constructor() {\n super(...arguments);\n /**\n * Used to get the position of bars within each group.\n */\n this.groupScale = new BandScale();\n this.smallestDataInterval = void 0;\n }\n getBandScalePadding() {\n return {\n inner: 0.2,\n outer: 0.1\n };\n }\n shouldFlipXY() {\n return !this.isVertical();\n }\n isVertical() {\n return this.properties.direction === \"vertical\";\n }\n getBarDirection() {\n return this.shouldFlipXY() ? \"x\" /* X */ : \"y\" /* Y */;\n }\n getCategoryDirection() {\n return this.shouldFlipXY() ? \"y\" /* Y */ : \"x\" /* X */;\n }\n getValueAxis() {\n const direction = this.getBarDirection();\n return this.axes[direction];\n }\n getCategoryAxis() {\n const direction = this.getCategoryDirection();\n return this.axes[direction];\n }\n updateGroupScale(xAxis) {\n const {\n groupScale,\n smallestDataInterval,\n ctx: {\n seriesStateManager\n }\n } = this;\n const xScale = xAxis.scale;\n const xBandWidth = ContinuousScale.is(xScale) ? xScale.calcBandwidth(smallestDataInterval) : xScale.bandwidth;\n const domain = [];\n const {\n index: groupIndex,\n visibleGroupCount\n } = seriesStateManager.getVisiblePeerGroupIndex(this);\n for (let groupIdx = 0; groupIdx < visibleGroupCount; groupIdx++) {\n domain.push(String(groupIdx));\n }\n groupScale.domain = domain;\n groupScale.range = [0, xBandWidth != null ? xBandWidth : 0];\n if (xAxis instanceof CategoryAxis) {\n groupScale.paddingInner = xAxis.groupPaddingInner;\n } else if (xAxis instanceof GroupedCategoryAxis) {\n groupScale.padding = 0.1;\n } else {\n groupScale.padding = 0;\n }\n groupScale.round = groupScale.padding !== 0;\n const 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 return {\n barWidth,\n groupIndex\n };\n }\n resolveKeyDirection(direction) {\n if (this.getBarDirection() === \"x\" /* X */) {\n if (direction === \"x\" /* X */) {\n return \"y\" /* Y */;\n }\n return \"x\" /* X */;\n }\n return direction;\n }\n initQuadTree(quadtree) {\n addHitTestersToQuadtree(quadtree, this.datumNodesIter());\n }\n pickNodeClosestDatum(point) {\n return findQuadtreeMatch(this, point);\n }\n};\n\n// packages/ag-charts-community/src/chart/series/cartesian/barSeriesProperties.ts\nvar BarSeriesLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.placement = \"inside\";\n }\n};\n__decorateClass([Validate(PLACEMENT)], BarSeriesLabel.prototype, \"placement\", 2);\nvar BarSeriesProperties = class extends AbstractBarSeriesProperties {\n constructor() {\n super(...arguments);\n this.fill = \"#c16068\";\n this.fillOpacity = 1;\n this.stroke = \"#874349\";\n this.strokeWidth = 1;\n this.strokeOpacity = 1;\n this.lineDash = [0];\n this.lineDashOffset = 0;\n this.cornerRadius = 0;\n this.shadow = new DropShadow();\n this.label = new BarSeriesLabel();\n this.tooltip = new SeriesTooltip();\n }\n};\n__decorateClass([Validate(STRING)], BarSeriesProperties.prototype, \"xKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BarSeriesProperties.prototype, \"xName\", 2);\n__decorateClass([Validate(STRING)], BarSeriesProperties.prototype, \"yKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BarSeriesProperties.prototype, \"yName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BarSeriesProperties.prototype, \"stackGroup\", 2);\n__decorateClass([Validate(NUMBER, {\n optional: true\n})], BarSeriesProperties.prototype, \"normalizedTo\", 2);\n__decorateClass([Validate(COLOR_STRING)], BarSeriesProperties.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO)], BarSeriesProperties.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING)], BarSeriesProperties.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], BarSeriesProperties.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO)], BarSeriesProperties.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH)], BarSeriesProperties.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], BarSeriesProperties.prototype, \"lineDashOffset\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], BarSeriesProperties.prototype, \"cornerRadius\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], BarSeriesProperties.prototype, \"formatter\", 2);\n__decorateClass([Validate(OBJECT, {\n optional: true\n})], BarSeriesProperties.prototype, \"shadow\", 2);\n__decorateClass([Validate(OBJECT)], BarSeriesProperties.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], BarSeriesProperties.prototype, \"tooltip\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/barUtil.ts\nfunction updateRect({\n rect,\n config\n}) {\n const {\n crisp = true,\n fill,\n stroke,\n strokeWidth,\n fillOpacity,\n strokeOpacity,\n lineDash,\n lineDashOffset,\n fillShadow,\n cornerRadius = 0,\n topLeftCornerRadius = true,\n topRightCornerRadius = true,\n bottomRightCornerRadius = true,\n bottomLeftCornerRadius = true,\n visible = true\n } = config;\n rect.crisp = crisp;\n rect.fill = fill;\n rect.stroke = stroke;\n rect.strokeWidth = strokeWidth;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.lineDash = lineDash;\n rect.lineDashOffset = lineDashOffset;\n rect.fillShadow = fillShadow;\n rect.topLeftCornerRadius = topLeftCornerRadius ? cornerRadius : 0;\n rect.topRightCornerRadius = topRightCornerRadius ? cornerRadius : 0;\n rect.bottomRightCornerRadius = bottomRightCornerRadius ? cornerRadius : 0;\n rect.bottomLeftCornerRadius = bottomLeftCornerRadius ? cornerRadius : 0;\n rect.visible = visible;\n}\nfunction getRectConfig(_a) {\n var _b = _a,\n {\n datum,\n isHighlighted,\n style,\n highlightStyle,\n formatter,\n seriesId,\n ctx: {\n callbackCache\n }\n } = _b,\n opts = __objRest(_b, [\"datum\", \"isHighlighted\", \"style\", \"highlightStyle\", \"formatter\", \"seriesId\", \"ctx\"]);\n var _a2, _b2, _c, _d, _e, _f;\n const {\n fill,\n fillOpacity,\n stroke,\n strokeWidth\n } = mergeDefaults(isHighlighted && highlightStyle, style);\n const {\n strokeOpacity,\n fillShadow,\n lineDash,\n lineDashOffset,\n cornerRadius = 0,\n topLeftCornerRadius = true,\n topRightCornerRadius = true,\n bottomRightCornerRadius = true,\n bottomLeftCornerRadius = true\n } = style;\n let format2;\n if (formatter) {\n format2 = callbackCache.call(formatter, __spreadValues({\n datum: datum.datum,\n xKey: datum.xKey,\n fill,\n stroke,\n strokeWidth,\n cornerRadius,\n highlighted: isHighlighted,\n seriesId\n }, opts));\n }\n return {\n fill: (_a2 = format2 == null ? void 0 : format2.fill) != null ? _a2 : fill,\n stroke: (_b2 = format2 == null ? void 0 : format2.stroke) != null ? _b2 : stroke,\n strokeWidth: (_c = format2 == null ? void 0 : format2.strokeWidth) != null ? _c : strokeWidth,\n fillOpacity: (_d = format2 == null ? void 0 : format2.fillOpacity) != null ? _d : fillOpacity,\n strokeOpacity: (_e = format2 == null ? void 0 : format2.strokeOpacity) != null ? _e : strokeOpacity,\n lineDash,\n lineDashOffset,\n fillShadow,\n cornerRadius: (_f = format2 == null ? void 0 : format2.cornerRadius) != null ? _f : cornerRadius,\n topLeftCornerRadius,\n topRightCornerRadius,\n bottomRightCornerRadius,\n bottomLeftCornerRadius\n };\n}\nfunction checkCrisp(visibleRange = []) {\n const [visibleMin, visibleMax] = visibleRange;\n const isZoomed = visibleMin !== 0 || visibleMax !== 1;\n return !isZoomed;\n}\nvar isDatumNegative = datum => {\n var _a;\n return isNegative((_a = datum.yValue) != null ? _a : 0);\n};\nfunction collapsedStartingBarPosition(isVertical, axes, mode) {\n const {\n startingX,\n startingY\n } = getStartingValues(isVertical, axes);\n const calculate = (datum, prevDatum) => {\n let x = isVertical ? datum.x : startingX;\n let y = isVertical ? startingY : datum.y;\n let width = isVertical ? datum.width : 0;\n let height = isVertical ? 0 : datum.height;\n const {\n opacity\n } = datum;\n if (prevDatum && (isNaN(x) || isNaN(y))) {\n ({\n x,\n y\n } = prevDatum);\n width = isVertical ? prevDatum.width : 0;\n height = isVertical ? 0 : prevDatum.height;\n if (isVertical && !isDatumNegative(prevDatum)) {\n y += prevDatum.height;\n } else if (!isVertical && isDatumNegative(prevDatum)) {\n x += prevDatum.width;\n }\n }\n let clipBBox;\n if (datum.clipBBox == null) {\n clipBBox = void 0;\n } else if (isDatumNegative(datum)) {\n clipBBox = isVertical ? new BBox(x, y - height, width, height) : new BBox(x - width, y, width, height);\n } else {\n clipBBox = new BBox(x, y, width, height);\n }\n return {\n x,\n y,\n width,\n height,\n clipBBox,\n opacity\n };\n };\n return {\n isVertical,\n calculate,\n mode\n };\n}\nfunction midpointStartingBarPosition(isVertical, mode) {\n return {\n isVertical,\n calculate: datum => {\n return {\n x: isVertical ? datum.x : datum.x + datum.width / 2,\n y: isVertical ? datum.y + datum.height / 2 : datum.y,\n width: isVertical ? datum.width : 0,\n height: isVertical ? 0 : datum.height,\n clipBBox: datum.clipBBox,\n opacity: datum.opacity\n };\n },\n mode\n };\n}\nfunction prepareBarAnimationFunctions(initPos) {\n const isRemoved = datum => datum == null || isNaN(datum.x) || isNaN(datum.y);\n const fromFn = (rect, datum, status) => {\n if (status === \"updated\" && isRemoved(datum)) {\n status = \"removed\";\n } else if (status === \"updated\" && isRemoved(rect.previousDatum)) {\n status = \"added\";\n }\n let source;\n if (status === \"added\" && rect.previousDatum == null && initPos.mode === \"fade\") {\n source = __spreadProps(__spreadValues({}, resetBarSelectionsFn(rect, datum)), {\n opacity: 0\n });\n } else if (status === \"unknown\" || status === \"added\") {\n source = initPos.calculate(datum, rect.previousDatum);\n } else {\n source = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n clipBBox: rect.clipBBox,\n opacity: rect.opacity\n };\n }\n const phase = NODE_UPDATE_STATE_TO_PHASE_MAPPING[status];\n return __spreadProps(__spreadValues({}, source), {\n phase\n });\n };\n const toFn = (rect, datum, status) => {\n let source;\n if (status === \"removed\" && rect.datum == null && initPos.mode === \"fade\") {\n source = __spreadProps(__spreadValues({}, resetBarSelectionsFn(rect, datum)), {\n opacity: 0\n });\n } else if (status === \"removed\" || isRemoved(datum)) {\n source = initPos.calculate(datum, rect.previousDatum);\n } else {\n source = {\n x: datum.x,\n y: datum.y,\n width: datum.width,\n height: datum.height,\n clipBBox: datum.clipBBox,\n opacity: datum.opacity\n };\n }\n return source;\n };\n return {\n toFn,\n fromFn\n };\n}\nfunction getStartingValues(isVertical, axes) {\n const axis = axes[isVertical ? \"y\" /* Y */ : \"x\" /* X */];\n let startingX = Infinity;\n let startingY = 0;\n if (!axis) {\n return {\n startingX,\n startingY\n };\n }\n if (isVertical) {\n startingY = axis.scale.convert(ContinuousScale.is(axis.scale) ? 0 : Math.max(...axis.range));\n } else {\n startingX = axis.scale.convert(ContinuousScale.is(axis.scale) ? 0 : Math.min(...axis.range));\n }\n return {\n startingX,\n startingY\n };\n}\nfunction resetBarSelectionsFn(_node, {\n x,\n y,\n width,\n height,\n clipBBox,\n opacity\n}) {\n return {\n x,\n y,\n width,\n height,\n clipBBox,\n opacity\n };\n}\nfunction computeBarFocusBounds(datum, barGroup, seriesRect) {\n if (datum === void 0) return void 0;\n const {\n x,\n y,\n width,\n height\n } = datum;\n return barGroup.inverseTransformBBox(new BBox(x, y, width, height)).clip(seriesRect);\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/labelUtil.ts\nfunction updateLabelNode(textNode, label, labelDatum) {\n if (label.enabled && labelDatum) {\n const {\n x,\n y,\n text,\n textAlign,\n textBaseline\n } = labelDatum;\n const {\n color: fill,\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily\n } = label;\n textNode.setProperties({\n visible: true,\n x,\n y,\n text,\n fill,\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily,\n textAlign,\n textBaseline\n });\n } else {\n textNode.visible = false;\n }\n}\nfunction adjustLabelPlacement({\n isPositive,\n isVertical,\n placement,\n padding = 0,\n rect\n}) {\n let x = rect.x + rect.width / 2;\n let y = rect.y + rect.height / 2;\n let textAlign = \"center\";\n let textBaseline = \"middle\";\n switch (placement) {\n case \"start\":\n {\n if (isVertical) {\n y = isPositive ? rect.y + rect.height + padding : rect.y - padding;\n textBaseline = isPositive ? \"top\" : \"bottom\";\n } else {\n x = isPositive ? rect.x - padding : rect.x + rect.width + padding;\n textAlign = isPositive ? \"start\" : \"end\";\n }\n break;\n }\n case \"outside\":\n case \"end\":\n {\n if (isVertical) {\n y = isPositive ? rect.y - padding : rect.y + rect.height + padding;\n textBaseline = isPositive ? \"bottom\" : \"top\";\n } else {\n x = isPositive ? rect.x + rect.width + padding : rect.x - padding;\n textAlign = isPositive ? \"start\" : \"end\";\n }\n break;\n }\n }\n return {\n x,\n y,\n textAlign,\n textBaseline\n };\n}\n\n// packages/ag-charts-community/src/chart/series/cartesian/barSeries.ts\nvar BarSeries = class extends AbstractBarSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n directionKeys: DEFAULT_CARTESIAN_DIRECTION_KEYS,\n directionNames: DEFAULT_CARTESIAN_DIRECTION_NAMES,\n pickModes: [0 /* EXACT_SHAPE_MATCH */],\n pathsPerSeries: 0,\n hasHighlightedLabels: true,\n datumSelectionGarbageCollection: false,\n animationAlwaysUpdateSelections: true,\n animationResetFns: {\n datum: resetBarSelectionsFn,\n label: resetLabelFn\n }\n });\n this.properties = new BarSeriesProperties();\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b, _c;\n if (!this.properties.isValid() || !this.data) {\n return;\n }\n const {\n seriesGrouping: {\n groupIndex = this.id\n } = {},\n data = []\n } = this;\n const {\n xKey,\n yKey,\n normalizedTo\n } = this.properties;\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const xScale = (_a = this.getCategoryAxis()) == null ? void 0 : _a.scale;\n const yScale = (_b = this.getValueAxis()) == null ? void 0 : _b.scale;\n const {\n isContinuousX,\n xScaleType,\n yScaleType\n } = this.getScaleInformation({\n xScale,\n yScale\n });\n const stackGroupName = `bar-stack-${groupIndex}-yValues`;\n const stackGroupTrailingName = `${stackGroupName}-trailing`;\n const extraProps = [];\n if (isFiniteNumber(normalizedTo)) {\n extraProps.push(normaliseGroupTo([stackGroupName, stackGroupTrailingName], Math.abs(normalizedTo), \"range\"));\n }\n if (animationEnabled && this.processedData) {\n extraProps.push(diff(this.processedData));\n }\n if (animationEnabled) {\n extraProps.push(animationValidation());\n }\n const visibleProps = this.visible ? {} : {\n forceValue: 0\n };\n const {\n processedData\n } = yield this.requestDataModel(dataController, data, {\n props: [keyProperty(xKey, xScaleType, {\n id: \"xValue\"\n }), valueProperty(yKey, yScaleType, __spreadValues({\n id: `yValue-raw`,\n invalidValue: null\n }, visibleProps)), ...groupAccumulativeValueProperty(yKey, \"normal\", \"current\", __spreadValues({\n id: `yValue-end`,\n rangeId: `yValue-range`,\n invalidValue: null,\n missingValue: 0,\n groupId: stackGroupName,\n separateNegative: true\n }, visibleProps), yScaleType), ...groupAccumulativeValueProperty(yKey, \"trailing\", \"current\", __spreadValues({\n id: `yValue-start`,\n invalidValue: null,\n missingValue: 0,\n groupId: stackGroupTrailingName,\n separateNegative: true\n }, visibleProps), yScaleType), ...(isContinuousX ? [SMALLEST_KEY_INTERVAL] : []), ...extraProps],\n groupByKeys: true,\n groupByData: false\n });\n this.smallestDataInterval = (_c = processedData.reduced) == null ? void 0 : _c.smallestKeyInterval;\n this.animationState.transition(\"updateData\");\n });\n }\n getSeriesDomain(direction) {\n var _a;\n const {\n processedData,\n dataModel,\n smallestDataInterval\n } = this;\n if (!processedData || !dataModel || processedData.data.length === 0) return [];\n const categoryAxis = this.getCategoryAxis();\n const valueAxis = this.getValueAxis();\n const keyDef = dataModel.resolveProcessedDataDefById(this, `xValue`);\n const keys = dataModel.getDomain(this, `xValue`, \"key\", processedData);\n const yExtent = dataModel.getDomain(this, `yValue-end`, \"value\", processedData);\n if (direction === this.getCategoryDirection()) {\n if ((keyDef == null ? void 0 : keyDef.def.type) === \"key\" && keyDef.def.valueType === \"category\") {\n return keys;\n }\n const scalePadding = isFiniteNumber(smallestDataInterval) ? smallestDataInterval * 0.5 : 0;\n const keysExtent = (_a = extent(keys)) != null ? _a : [NaN, NaN];\n const d0 = keysExtent[0] + -scalePadding;\n const d1 = keysExtent[1] + scalePadding;\n return fixNumericExtent([d0, d1], categoryAxis);\n } else if (this.getValueAxis() instanceof LogAxis) {\n return fixNumericExtent(yExtent, valueAxis);\n } else {\n const fixedYExtent = [Math.min(0, yExtent[0]), Math.max(0, yExtent[1])];\n return fixNumericExtent(fixedYExtent, valueAxis);\n }\n }\n createNodeData() {\n return __async(this, null, function* () {\n const {\n dataModel\n } = this;\n const xAxis = this.getCategoryAxis();\n const yAxis = this.getValueAxis();\n if (!dataModel || !xAxis || !yAxis || !this.properties.isValid()) return;\n const xScale = xAxis.scale;\n const yScale = yAxis.scale;\n const {\n xKey,\n yKey,\n xName,\n yName,\n fill,\n stroke,\n strokeWidth,\n cornerRadius,\n legendItemName,\n label\n } = this.properties;\n const yReversed = yAxis.isReversed();\n const {\n barWidth,\n groupIndex\n } = this.updateGroupScale(xAxis);\n const barOffset = ContinuousScale.is(xScale) ? barWidth * -0.5 : 0;\n const xIndex = dataModel.resolveProcessedDataIndexById(this, `xValue`);\n const yRawIndex = dataModel.resolveProcessedDataIndexById(this, `yValue-raw`);\n const yStartIndex = dataModel.resolveProcessedDataIndexById(this, `yValue-start`);\n const yEndIndex = dataModel.resolveProcessedDataIndexById(this, `yValue-end`);\n const yRangeIndex = dataModel.resolveProcessedDataIndexById(this, `yValue-range`);\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const context = {\n itemId: yKey,\n nodeData: [],\n labelData: [],\n scales: this.calculateScaling(),\n visible: this.visible || animationEnabled\n };\n const {\n groupScale,\n processedData\n } = this;\n processedData == null ? void 0 : processedData.data.forEach(({\n keys,\n datum: seriesDatum,\n values,\n aggValues\n }) => {\n values.forEach((value, valueIndex) => {\n var _a;\n const xValue = keys[xIndex];\n const x = xScale.convert(xValue);\n const currY = +value[yEndIndex];\n const prevY = +value[yStartIndex];\n const yRawValue = value[yRawIndex];\n const isPositive = yRawValue >= 0 && !Object.is(yRawValue, -0);\n const isUpward = isPositive !== yReversed;\n const yRange = (_a = aggValues == null ? void 0 : aggValues[yRangeIndex][isPositive ? 1 : 0]) != null ? _a : 0;\n const barX = x + groupScale.convert(String(groupIndex)) + barOffset;\n if (isNaN(currY)) return;\n const y = yScale.convert(currY);\n const bottomY = yScale.convert(prevY);\n const barAlongX = this.getBarDirection() === \"x\" /* X */;\n const bboxHeight = yScale.convert(yRange);\n const bboxBottom = yScale.convert(0);\n const rect = {\n x: barAlongX ? Math.min(y, bottomY) : barX,\n y: barAlongX ? barX : Math.min(y, bottomY),\n width: barAlongX ? Math.abs(bottomY - y) : barWidth,\n height: barAlongX ? barWidth : Math.abs(bottomY - y)\n };\n const clipBBox = new BBox(rect.x, rect.y, rect.width, rect.height);\n const barRect = {\n x: barAlongX ? Math.min(bboxBottom, bboxHeight) : barX,\n y: barAlongX ? barX : Math.min(bboxBottom, bboxHeight),\n width: barAlongX ? Math.abs(bboxBottom - bboxHeight) : barWidth,\n height: barAlongX ? barWidth : Math.abs(bboxBottom - bboxHeight),\n clipBBox\n };\n const {\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n color: labelColor,\n placement\n } = label;\n const labelText = this.getLabelText(this.properties.label, {\n datum: seriesDatum[valueIndex],\n value: yRawValue,\n xKey,\n yKey,\n xName,\n yName,\n legendItemName\n }, v => isFiniteNumber(v) ? v.toFixed(2) : String(v));\n const labelDatum = labelText ? __spreadValues({\n text: labelText,\n fill: labelColor,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily\n }, adjustLabelPlacement({\n isPositive,\n isVertical: !barAlongX,\n placement,\n rect\n })) : void 0;\n const lengthRatioMultiplier = this.shouldFlipXY() ? rect.height : rect.width;\n const nodeData = {\n series: this,\n itemId: yKey,\n datum: seriesDatum[valueIndex],\n valueIndex,\n cumulativeValue: currY,\n xValue,\n yValue: yRawValue,\n yKey,\n xKey,\n capDefaults: {\n lengthRatioMultiplier,\n lengthMax: lengthRatioMultiplier\n },\n x: barRect.x,\n y: barRect.y,\n width: barRect.width,\n height: barRect.height,\n midPoint: {\n x: rect.x + rect.width / 2,\n y: rect.y + rect.height / 2\n },\n fill,\n stroke,\n opacity: 1,\n strokeWidth,\n cornerRadius,\n topLeftCornerRadius: barAlongX !== isUpward,\n topRightCornerRadius: isUpward,\n bottomRightCornerRadius: barAlongX === isUpward,\n bottomLeftCornerRadius: !isUpward,\n clipBBox,\n label: labelDatum,\n missing: yRawValue == null\n };\n context.nodeData.push(nodeData);\n context.labelData.push(nodeData);\n });\n });\n return context;\n });\n }\n nodeFactory() {\n return new Rect();\n }\n updateDatumSelection(opts) {\n return __async(this, null, function* () {\n return opts.datumSelection.update(opts.nodeData, rect => {\n rect.tag = 0 /* Bar */;\n }, datum => createDatumId(datum.xValue, datum.valueIndex));\n });\n }\n updateDatumNodes(opts) {\n return __async(this, null, function* () {\n if (!this.properties.isValid()) {\n return;\n }\n const {\n yKey,\n stackGroup,\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity,\n lineDash,\n lineDashOffset,\n formatter,\n shadow,\n highlightStyle: {\n item: itemHighlightStyle\n }\n } = this.properties;\n const xAxis = this.axes[\"x\" /* X */];\n const crisp = checkCrisp(xAxis == null ? void 0 : xAxis.visibleRange);\n const categoryAlongX = this.getCategoryDirection() === \"x\" /* X */;\n opts.datumSelection.each((rect, datum) => {\n var _a, _b, _c, _d;\n const style = {\n fill,\n stroke,\n fillOpacity,\n strokeOpacity,\n lineDash,\n lineDashOffset,\n fillShadow: shadow,\n strokeWidth: this.getStrokeWidth(strokeWidth),\n cornerRadius: datum.cornerRadius,\n topLeftCornerRadius: datum.topLeftCornerRadius,\n topRightCornerRadius: datum.topRightCornerRadius,\n bottomRightCornerRadius: datum.bottomRightCornerRadius,\n bottomLeftCornerRadius: datum.bottomLeftCornerRadius\n };\n const visible = categoryAlongX ? ((_b = (_a = datum.clipBBox) == null ? void 0 : _a.width) != null ? _b : datum.width) > 0 : ((_d = (_c = datum.clipBBox) == null ? void 0 : _c.height) != null ? _d : datum.height) > 0;\n const config = getRectConfig({\n datum,\n ctx: this.ctx,\n seriesId: this.id,\n isHighlighted: opts.isHighlight,\n highlightStyle: itemHighlightStyle,\n yKey,\n style,\n formatter,\n stackGroup\n });\n config.crisp = crisp;\n config.visible = visible;\n updateRect({\n rect,\n config\n });\n });\n });\n }\n updateLabelSelection(opts) {\n return __async(this, null, function* () {\n const data = this.isLabelEnabled() ? opts.labelData : [];\n return opts.labelSelection.update(data, text => {\n text.tag = 1 /* Label */;\n text.pointerEvents = 1 /* None */;\n });\n });\n }\n updateLabelNodes(opts) {\n return __async(this, null, function* () {\n opts.labelSelection.each((textNode, datum) => {\n updateLabelNode(textNode, this.properties.label, datum.label);\n });\n });\n }\n getTooltipHtml(nodeDatum) {\n var _a;\n const {\n id: seriesId,\n processedData,\n ctx: {\n callbackCache\n }\n } = this;\n const xAxis = this.getCategoryAxis();\n const yAxis = this.getValueAxis();\n if (!processedData || !this.properties.isValid() || !xAxis || !yAxis) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n xKey,\n yKey,\n xName,\n yName,\n fill,\n stroke,\n strokeWidth,\n tooltip,\n formatter,\n stackGroup,\n legendItemName\n } = this.properties;\n const {\n xValue,\n yValue,\n datum,\n itemId\n } = nodeDatum;\n const xString = xAxis.formatDatum(xValue);\n const yString = yAxis.formatDatum(yValue);\n const title = sanitizeHtml(yName);\n const content = sanitizeHtml(xString + \": \" + yString);\n let format2;\n if (formatter) {\n format2 = callbackCache.call(formatter, {\n seriesId,\n datum,\n xKey,\n yKey,\n stackGroup,\n fill,\n stroke,\n strokeWidth: this.getStrokeWidth(strokeWidth),\n highlighted: false\n });\n }\n const color = (_a = format2 == null ? void 0 : format2.fill) != null ? _a : fill;\n return tooltip.toTooltipHtml({\n title,\n content,\n backgroundColor: color\n }, __spreadValues({\n seriesId,\n itemId,\n datum,\n xKey,\n yKey,\n xName,\n yName,\n stackGroup,\n title,\n color,\n legendItemName\n }, this.getModuleTooltipParams()));\n }\n getLegendData(legendType) {\n var _a, _b;\n const {\n showInLegend\n } = this.properties;\n if (legendType !== \"category\" || !((_a = this.data) == null ? void 0 : _a.length) || !this.properties.isValid() || !showInLegend) {\n return [];\n }\n const {\n yKey,\n yName,\n fill,\n stroke,\n strokeWidth,\n fillOpacity,\n strokeOpacity,\n legendItemName,\n visible\n } = this.properties;\n return [{\n legendType: \"category\",\n id: this.id,\n itemId: yKey,\n seriesId: this.id,\n enabled: visible,\n label: {\n text: (_b = legendItemName != null ? legendItemName : yName) != null ? _b : yKey\n },\n marker: {\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity\n },\n legendItemName\n }];\n }\n animateEmptyUpdateReady({\n datumSelection,\n labelSelection,\n annotationSelections\n }) {\n const fns = prepareBarAnimationFunctions(collapsedStartingBarPosition(this.isVertical(), this.axes, \"normal\"));\n fromToMotion(this.id, \"nodes\", this.ctx.animationManager, [datumSelection], fns);\n seriesLabelFadeInAnimation(this, \"labels\", this.ctx.animationManager, labelSelection);\n seriesLabelFadeInAnimation(this, \"annotations\", this.ctx.animationManager, ...annotationSelections);\n }\n animateWaitingUpdateReady(data) {\n var _a, _b, _c;\n const {\n datumSelection,\n labelSelection,\n annotationSelections,\n previousContextData\n } = data;\n this.ctx.animationManager.stopByAnimationGroupId(this.id);\n const dataDiff = (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.diff;\n const mode = previousContextData == null ? \"fade\" : \"normal\";\n const fns = prepareBarAnimationFunctions(collapsedStartingBarPosition(this.isVertical(), this.axes, mode));\n fromToMotion(this.id, \"nodes\", this.ctx.animationManager, [datumSelection], fns, (_, datum) => createDatumId(datum.xValue, datum.valueIndex), dataDiff);\n const hasMotion = (_c = dataDiff == null ? void 0 : dataDiff.changed) != null ? _c : true;\n if (hasMotion) {\n seriesLabelFadeInAnimation(this, \"labels\", this.ctx.animationManager, labelSelection);\n seriesLabelFadeInAnimation(this, \"annotations\", this.ctx.animationManager, ...annotationSelections);\n }\n }\n isLabelEnabled() {\n return this.properties.label.enabled;\n }\n computeFocusBounds({\n datumIndex,\n seriesRect\n }) {\n var _a;\n const datumBox = (_a = this.contextNodeData) == null ? void 0 : _a.nodeData[datumIndex].clipBBox;\n return computeBarFocusBounds(datumBox, this.contentGroup, seriesRect);\n }\n};\nBarSeries.className = \"BarSeries\";\nBarSeries.type = \"bar\";\n\n// packages/ag-charts-community/src/chart/series/cartesian/barSeriesModule.ts\nvar BarSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n identifier: \"bar\",\n instanceConstructor: BarSeries,\n stackable: true,\n groupable: true,\n defaultAxes: [{\n type: \"number\" /* NUMBER */,\n position: \"left\" /* LEFT */\n }, {\n type: \"category\" /* CATEGORY */,\n position: \"bottom\" /* BOTTOM */\n }],\n swapDefaultAxesCondition: series => (series == null ? void 0 : series.direction) === \"horizontal\",\n themeTemplate: {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n direction: \"vertical\",\n fillOpacity: 1,\n strokeWidth: 0,\n lineDash: [0],\n lineDashOffset: 0,\n label: {\n enabled: false,\n fontWeight: \"normal\" /* NORMAL */,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_INSIDE_SERIES_LABEL_COLOUR,\n placement: \"inside\"\n },\n shadow: {\n enabled: false,\n color: DEFAULT_SHADOW_COLOUR,\n xOffset: 3,\n yOffset: 3,\n blur: 5\n }\n }\n },\n enterpriseThemeTemplate: {\n series: {\n errorBar: {\n cap: {\n lengthRatio: 0.3\n }\n }\n }\n },\n paletteFactory: singleSeriesPaletteFactory\n};\n\n// packages/ag-charts-community/src/scale/colorScale.ts\nvar convertColorStringToOklcha = v => {\n const color = Color.fromString(v);\n const [l, c, h] = Color.RGBtoOKLCH(color.r, color.g, color.b);\n return {\n l,\n c,\n h,\n a: color.a\n };\n};\nvar interpolateOklch = (x, y, d) => {\n d = clamp(0, d, 1);\n let h;\n let c;\n if (Number.isNaN(x.h) && Number.isNaN(y.h)) {\n h = 0;\n c = 0;\n } else if (Number.isNaN(x.h)) {\n h = y.h;\n c = y.c;\n } else if (Number.isNaN(y.h)) {\n h = x.h;\n c = x.c;\n } else {\n const xH = x.h;\n let yH = y.h;\n const deltaH = y.h - x.h;\n if (deltaH > 180) {\n yH -= 360;\n } else if (deltaH < -180) {\n yH += 360;\n }\n h = xH * (1 - d) + yH * d;\n c = x.c * (1 - d) + y.c * d;\n }\n const l = x.l * (1 - d) + y.l * d;\n const a = x.a * (1 - d) + y.a * d;\n return Color.fromOKLCH(l, c, h, a);\n};\nvar ColorScale = class {\n constructor() {\n this.type = \"color\";\n this.invalid = true;\n this.domain = [0, 1];\n this.range = [\"red\", \"blue\"];\n this.parsedRange = this.range.map(convertColorStringToOklcha);\n }\n update() {\n const {\n domain,\n range: range3\n } = this;\n if (domain.length < 2) {\n Logger.warnOnce(\"`colorDomain` should have at least 2 values.\");\n if (domain.length === 0) {\n domain.push(0, 1);\n } else if (domain.length === 1) {\n domain.push(domain[0] + 1);\n }\n }\n for (let i = 1; i < domain.length; i++) {\n const a = domain[i - 1];\n const b = domain[i];\n if (a >= b) {\n Logger.warnOnce(\"`colorDomain` values should be supplied in ascending order.\");\n domain.sort((a2, b2) => a2 - b2);\n break;\n }\n }\n if (range3.length < domain.length) {\n for (let i = range3.length; i < domain.length; i++) {\n range3.push(range3.length > 0 ? range3[0] : \"black\");\n }\n }\n this.parsedRange = this.range.map(convertColorStringToOklcha);\n }\n convert(x) {\n this.refresh();\n const {\n domain,\n range: range3,\n parsedRange\n } = this;\n const d0 = domain[0];\n const d1 = domain.at(-1);\n const r0 = range3[0];\n const r1 = range3[range3.length - 1];\n if (x <= d0) {\n return r0;\n }\n if (x >= d1) {\n return r1;\n }\n let index;\n let q;\n if (domain.length === 2) {\n const t = (x - d0) / (d1 - d0);\n const step = 1 / (range3.length - 1);\n index = range3.length <= 2 ? 0 : Math.min(Math.floor(t * (range3.length - 1)), range3.length - 2);\n q = (t - index * step) / step;\n } else {\n for (index = 0; index < domain.length - 2; index++) {\n if (x < domain[index + 1]) {\n break;\n }\n }\n const a = domain[index];\n const b = domain[index + 1];\n q = (x - a) / (b - a);\n }\n const c0 = parsedRange[index];\n const c1 = parsedRange[index + 1];\n return interpolateOklch(c0, c1, q).toRgbaString();\n }\n refresh() {\n if (!this.invalid) return;\n this.invalid = false;\n this.update();\n if (this.invalid) {\n Logger.warnOnce(\"Expected update to not invalidate scale\");\n }\n }\n};\n__decorateClass([Invalidating], ColorScale.prototype, \"domain\", 2);\n__decorateClass([Invalidating], ColorScale.prototype, \"range\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/bubbleSeriesProperties.ts\nvar BubbleSeriesMarker = class extends SeriesMarker {\n constructor() {\n super(...arguments);\n this.maxSize = 30;\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], BubbleSeriesMarker.prototype, \"maxSize\", 2);\n__decorateClass([Validate(NUMBER_ARRAY, {\n optional: true\n}), SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], BubbleSeriesMarker.prototype, \"domain\", 2);\nvar BubbleSeriesLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.placement = \"top\";\n }\n};\n__decorateClass([Validate(LABEL_PLACEMENT)], BubbleSeriesLabel.prototype, \"placement\", 2);\nvar BubbleSeriesProperties = class extends CartesianSeriesProperties {\n constructor() {\n super(...arguments);\n this.colorRange = [\"#ffff00\", \"#00ff00\", \"#0000ff\"];\n this.marker = new BubbleSeriesMarker();\n this.label = new BubbleSeriesLabel();\n this.tooltip = new SeriesTooltip();\n }\n};\n__decorateClass([Validate(STRING)], BubbleSeriesProperties.prototype, \"xKey\", 2);\n__decorateClass([Validate(STRING)], BubbleSeriesProperties.prototype, \"yKey\", 2);\n__decorateClass([Validate(STRING)], BubbleSeriesProperties.prototype, \"sizeKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"labelKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"colorKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"xName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"yName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"sizeName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"labelName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"colorName\", 2);\n__decorateClass([Validate(NUMBER_ARRAY, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"colorDomain\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], BubbleSeriesProperties.prototype, \"colorRange\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], BubbleSeriesProperties.prototype, \"title\", 2);\n__decorateClass([Validate(OBJECT)], BubbleSeriesProperties.prototype, \"marker\", 2);\n__decorateClass([Validate(OBJECT)], BubbleSeriesProperties.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], BubbleSeriesProperties.prototype, \"tooltip\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/bubbleSeries.ts\nvar BubbleSeriesNodeEvent = class extends CartesianSeriesNodeEvent {\n constructor(type, nativeEvent, datum, series) {\n super(type, nativeEvent, datum, series);\n this.sizeKey = series.properties.sizeKey;\n }\n};\nvar BubbleSeries = class extends CartesianSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n directionKeys: DEFAULT_CARTESIAN_DIRECTION_KEYS,\n directionNames: DEFAULT_CARTESIAN_DIRECTION_NAMES,\n pickModes: [2 /* NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST */, 3 /* NEAREST_NODE */, 0 /* EXACT_SHAPE_MATCH */],\n pathsPerSeries: 0,\n hasMarkers: true,\n markerSelectionGarbageCollection: false,\n animationResetFns: {\n label: resetLabelFn,\n marker: resetMarkerFn\n }\n });\n this.NodeEvent = BubbleSeriesNodeEvent;\n this.properties = new BubbleSeriesProperties();\n this.sizeScale = new LinearScale();\n this.colorScale = new ColorScale();\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b, _c, _d;\n if (!this.properties.isValid() || this.data == null || !this.visible) return;\n const xScale = (_a = this.axes[\"x\" /* X */]) == null ? void 0 : _a.scale;\n const yScale = (_b = this.axes[\"y\" /* Y */]) == null ? void 0 : _b.scale;\n const {\n xScaleType,\n yScaleType\n } = this.getScaleInformation({\n xScale,\n yScale\n });\n const colorScaleType = this.colorScale.type;\n const sizeScaleType = this.sizeScale.type;\n const {\n xKey,\n yKey,\n sizeKey,\n labelKey,\n colorDomain,\n colorRange,\n colorKey,\n marker\n } = this.properties;\n const {\n dataModel,\n processedData\n } = yield this.requestDataModel(dataController, this.data, {\n props: [keyProperty(xKey, xScaleType, {\n id: \"xKey-raw\"\n }), keyProperty(yKey, yScaleType, {\n id: \"yKey-raw\"\n }), ...(labelKey ? [keyProperty(labelKey, \"band\", {\n id: `labelKey-raw`\n })] : []), valueProperty(xKey, xScaleType, {\n id: `xValue`\n }), valueProperty(yKey, yScaleType, {\n id: `yValue`\n }), valueProperty(sizeKey, sizeScaleType, {\n id: `sizeValue`\n }), ...(colorKey ? [valueProperty(colorKey, colorScaleType, {\n id: `colorValue`\n })] : []), ...(labelKey ? [valueProperty(labelKey, \"band\", {\n id: `labelValue`\n })] : [])]\n });\n const sizeKeyIdx = dataModel.resolveProcessedDataIndexById(this, `sizeValue`);\n const processedSize = (_c = processedData.domain.values[sizeKeyIdx]) != null ? _c : [];\n this.sizeScale.domain = marker.domain ? marker.domain : processedSize;\n if (colorKey) {\n const colorKeyIdx = dataModel.resolveProcessedDataIndexById(this, `colorValue`);\n this.colorScale.domain = (_d = colorDomain != null ? colorDomain : processedData.domain.values[colorKeyIdx]) != null ? _d : [];\n this.colorScale.range = colorRange;\n this.colorScale.update();\n }\n this.animationState.transition(\"updateData\");\n });\n }\n getSeriesDomain(direction) {\n const {\n dataModel,\n processedData\n } = this;\n if (!processedData || !dataModel) return [];\n const id = direction === \"x\" /* X */ ? `xValue` : `yValue`;\n const dataDef = dataModel.resolveProcessedDataDefById(this, id);\n const domain = dataModel.getDomain(this, id, \"value\", processedData);\n if ((dataDef == null ? void 0 : dataDef.def.type) === \"value\" && (dataDef == null ? void 0 : dataDef.def.valueType) === \"category\") {\n return domain;\n }\n const axis = this.axes[direction];\n return fixNumericExtent(extent(domain), axis);\n }\n createNodeData() {\n return __async(this, null, function* () {\n var _a, _b, _c;\n const {\n axes,\n dataModel,\n processedData,\n colorScale,\n sizeScale\n } = this;\n const {\n xKey,\n yKey,\n sizeKey,\n labelKey,\n xName,\n yName,\n sizeName,\n labelName,\n label,\n colorKey,\n marker,\n visible\n } = this.properties;\n const markerShape = getMarker(marker.shape);\n const {\n placement\n } = label;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n if (!(dataModel && processedData && visible && xAxis && yAxis)) {\n return;\n }\n const xDataIdx = dataModel.resolveProcessedDataIndexById(this, `xValue`);\n const yDataIdx = dataModel.resolveProcessedDataIndexById(this, `yValue`);\n const sizeDataIdx = sizeKey ? dataModel.resolveProcessedDataIndexById(this, `sizeValue`) : -1;\n const colorDataIdx = colorKey ? dataModel.resolveProcessedDataIndexById(this, `colorValue`) : -1;\n const labelDataIdx = labelKey ? dataModel.resolveProcessedDataIndexById(this, `labelValue`) : -1;\n const xScale = xAxis.scale;\n const yScale = yAxis.scale;\n const xOffset = ((_a = xScale.bandwidth) != null ? _a : 0) / 2;\n const yOffset = ((_b = yScale.bandwidth) != null ? _b : 0) / 2;\n const nodeData = [];\n sizeScale.range = [marker.size, marker.maxSize];\n const font = label.getFont();\n for (const {\n values,\n datum\n } of (_c = processedData.data) != null ? _c : []) {\n const xDatum = values[xDataIdx];\n const yDatum = values[yDataIdx];\n const x = xScale.convert(xDatum) + xOffset;\n const y = yScale.convert(yDatum) + yOffset;\n const labelText = this.getLabelText(label, {\n value: labelKey ? values[labelDataIdx] : yDatum,\n datum,\n xKey,\n yKey,\n sizeKey,\n labelKey,\n xName,\n yName,\n sizeName,\n labelName\n });\n const size = Text.getTextSize(String(labelText), font);\n const markerSize = sizeKey ? sizeScale.convert(values[sizeDataIdx]) : marker.size;\n const fill = colorKey ? colorScale.convert(values[colorDataIdx]) : void 0;\n nodeData.push({\n series: this,\n itemId: yKey,\n yKey,\n xKey,\n datum,\n xValue: xDatum,\n yValue: yDatum,\n sizeValue: values[sizeDataIdx],\n point: {\n x,\n y,\n size: markerSize\n },\n midPoint: {\n x,\n y\n },\n fill,\n label: __spreadValues({\n text: labelText\n }, size),\n marker: markerShape,\n placement\n });\n }\n return {\n itemId: yKey,\n nodeData,\n labelData: nodeData,\n scales: this.calculateScaling(),\n visible: this.visible\n };\n });\n }\n isPathOrSelectionDirty() {\n return this.properties.marker.isDirty();\n }\n getLabelData() {\n var _a, _b;\n return (_b = (_a = this.contextNodeData) == null ? void 0 : _a.labelData) != null ? _b : [];\n }\n markerFactory() {\n const {\n shape\n } = this.properties.marker;\n const MarkerShape = getMarker(shape);\n return new MarkerShape();\n }\n updateMarkerSelection(opts) {\n return __async(this, null, function* () {\n const {\n nodeData,\n markerSelection\n } = opts;\n if (this.properties.marker.isDirty()) {\n markerSelection.clear();\n markerSelection.cleanup();\n }\n const data = this.properties.marker.enabled ? nodeData : [];\n return markerSelection.update(data, void 0, datum => createDatumId([datum.xValue, datum.yValue, datum.label.text]));\n });\n }\n updateMarkerNodes(opts) {\n return __async(this, null, function* () {\n const {\n markerSelection,\n isHighlight: highlighted\n } = opts;\n const {\n xKey,\n yKey,\n sizeKey,\n labelKey,\n marker\n } = this.properties;\n const baseStyle = mergeDefaults(highlighted && this.properties.highlightStyle.item, marker.getStyle());\n this.sizeScale.range = [marker.size, marker.maxSize];\n markerSelection.each((node, datum) => {\n this.updateMarkerStyle(node, marker, {\n datum,\n highlighted,\n xKey,\n yKey,\n sizeKey,\n labelKey\n }, baseStyle);\n });\n if (!highlighted) {\n this.properties.marker.markClean();\n }\n });\n }\n updateLabelSelection(opts) {\n return __async(this, null, function* () {\n var _a, _b;\n const placedLabels = this.properties.label.enabled ? (_b = (_a = this.chart) == null ? void 0 : _a.placeLabels().get(this)) != null ? _b : [] : [];\n return opts.labelSelection.update(placedLabels.map(v => __spreadProps(__spreadValues({}, v.datum), {\n point: {\n x: v.x,\n y: v.y,\n size: v.datum.point.size\n }\n })));\n });\n }\n updateLabelNodes(opts) {\n return __async(this, null, function* () {\n const {\n label\n } = this.properties;\n opts.labelSelection.each((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 ? void 0 : _a.x) != null ? _b : 0;\n text.y = (_d = (_c = datum.point) == null ? void 0 : _c.y) != null ? _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 });\n }\n getTooltipHtml(nodeDatum) {\n var _a;\n const xAxis = this.axes[\"x\" /* X */];\n const yAxis = this.axes[\"y\" /* Y */];\n if (!this.properties.isValid() || !xAxis || !yAxis) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n xKey,\n yKey,\n sizeKey,\n labelKey,\n xName,\n yName,\n sizeName,\n labelName,\n marker,\n tooltip\n } = this.properties;\n const title = (_a = this.properties.title) != null ? _a : yName;\n const baseStyle = mergeDefaults({\n fill: nodeDatum.fill,\n strokeWidth: this.getStrokeWidth(marker.strokeWidth)\n }, marker.getStyle());\n const {\n fill: color = \"gray\"\n } = this.getMarkerStyle(marker, {\n datum: nodeDatum,\n highlighted: false,\n xKey,\n yKey,\n sizeKey,\n labelKey\n }, baseStyle);\n const {\n datum,\n xValue,\n yValue,\n sizeValue,\n label: {\n text: labelText\n },\n itemId\n } = nodeDatum;\n const xString = sanitizeHtml(xAxis.formatDatum(xValue));\n const yString = sanitizeHtml(yAxis.formatDatum(yValue));\n let content = `${sanitizeHtml(xName != null ? xName : xKey)}: ${xString}
${sanitizeHtml(yName != null ? yName : yKey)}: ${yString}`;\n if (sizeKey) {\n content += `
${sanitizeHtml(sizeName != null ? sizeName : sizeKey)}: ${sanitizeHtml(String(sizeValue))}`;\n }\n if (labelKey) {\n content = `${sanitizeHtml(labelName != null ? labelName : labelKey)}: ${sanitizeHtml(labelText)}
` + content;\n }\n return tooltip.toTooltipHtml({\n title,\n content,\n backgroundColor: color\n }, {\n datum,\n itemId,\n xKey,\n xName,\n yKey,\n yName,\n sizeKey,\n sizeName,\n labelKey,\n labelName,\n title,\n color,\n seriesId: this.id\n });\n }\n getLegendData() {\n var _a, _b;\n if (!((_a = this.data) == null ? void 0 : _a.length) || !this.properties.isValid()) {\n return [];\n }\n const {\n yKey,\n yName,\n title,\n marker,\n visible\n } = this.properties;\n const {\n shape,\n fill,\n stroke,\n fillOpacity,\n strokeOpacity,\n strokeWidth\n } = marker;\n return [{\n legendType: \"category\",\n id: this.id,\n itemId: yKey,\n seriesId: this.id,\n enabled: visible,\n label: {\n text: (_b = title != null ? title : yName) != null ? _b : yKey\n },\n marker: {\n shape,\n fill: fill != null ? fill : \"rgba(0, 0, 0, 0)\",\n stroke: stroke != null ? stroke : \"rgba(0, 0, 0, 0)\",\n fillOpacity: fillOpacity != null ? fillOpacity : 1,\n strokeOpacity: strokeOpacity != null ? strokeOpacity : 1,\n strokeWidth: strokeWidth != null ? strokeWidth : 0\n }\n }];\n }\n animateEmptyUpdateReady({\n markerSelection,\n labelSelection\n }) {\n markerScaleInAnimation(this, this.ctx.animationManager, markerSelection);\n seriesLabelFadeInAnimation(this, \"labels\", this.ctx.animationManager, labelSelection);\n }\n isLabelEnabled() {\n return this.properties.label.enabled;\n }\n nodeFactory() {\n return new Group();\n }\n getFormattedMarkerStyle(datum) {\n const {\n xKey,\n yKey,\n sizeKey,\n labelKey\n } = this.properties;\n return this.getMarkerStyle(this.properties.marker, {\n datum,\n xKey,\n yKey,\n sizeKey,\n labelKey,\n highlighted: false\n });\n }\n computeFocusBounds(opts) {\n return computeMarkerFocusBounds(this, opts);\n }\n};\nBubbleSeries.className = \"BubbleSeries\";\nBubbleSeries.type = \"bubble\";\n\n// packages/ag-charts-community/src/chart/series/cartesian/bubbleSeriesModule.ts\nvar BubbleSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n identifier: \"bubble\",\n instanceConstructor: BubbleSeries,\n defaultAxes: [{\n type: \"number\" /* NUMBER */,\n position: \"bottom\" /* BOTTOM */\n }, {\n type: \"number\" /* NUMBER */,\n position: \"left\" /* LEFT */\n }],\n themeTemplate: {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n tooltip: {\n position: {\n type: \"node\"\n }\n },\n marker: {\n __extends__: EXTENDS_CARTESIAN_MARKER_DEFAULTS,\n maxSize: 30,\n fillOpacity: 0.8\n },\n label: {\n enabled: false,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR\n }\n }\n },\n paletteFactory: markerPaletteFactory\n};\n\n// packages/ag-charts-community/src/chart/series/cartesian/histogramSeriesProperties.ts\nvar HistogramSeriesProperties = class extends CartesianSeriesProperties {\n constructor() {\n super(...arguments);\n this.fillOpacity = 1;\n this.strokeWidth = 1;\n this.strokeOpacity = 1;\n this.lineDash = [0];\n this.lineDashOffset = 0;\n this.cornerRadius = 0;\n this.areaPlot = false;\n this.aggregation = \"sum\";\n this.shadow = new DropShadow();\n this.label = new Label();\n this.tooltip = new SeriesTooltip();\n }\n};\n__decorateClass([Validate(STRING)], HistogramSeriesProperties.prototype, \"xKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"yKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"xName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"yName\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO)], HistogramSeriesProperties.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(COLOR_STRING, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], HistogramSeriesProperties.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO)], HistogramSeriesProperties.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH)], HistogramSeriesProperties.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], HistogramSeriesProperties.prototype, \"lineDashOffset\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], HistogramSeriesProperties.prototype, \"cornerRadius\", 2);\n__decorateClass([Validate(BOOLEAN)], HistogramSeriesProperties.prototype, \"areaPlot\", 2);\n__decorateClass([Validate(ARRAY, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"bins\", 2);\n__decorateClass([Validate(UNION([\"count\", \"sum\", \"mean\"], \"a histogram aggregation\"))], HistogramSeriesProperties.prototype, \"aggregation\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], HistogramSeriesProperties.prototype, \"binCount\", 2);\n__decorateClass([Validate(OBJECT)], HistogramSeriesProperties.prototype, \"shadow\", 2);\n__decorateClass([Validate(OBJECT)], HistogramSeriesProperties.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], HistogramSeriesProperties.prototype, \"tooltip\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/histogramSeries.ts\nvar defaultBinCount = 10;\nvar HistogramSeries = class extends CartesianSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n directionKeys: DEFAULT_CARTESIAN_DIRECTION_KEYS,\n directionNames: DEFAULT_CARTESIAN_DIRECTION_NAMES,\n pickModes: [0 /* EXACT_SHAPE_MATCH */],\n datumSelectionGarbageCollection: false,\n animationResetFns: {\n datum: resetBarSelectionsFn,\n label: resetLabelFn\n }\n });\n this.properties = new HistogramSeriesProperties();\n this.calculatedBins = [];\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 deriveBins(xDomain) {\n const binStarts = ticks_default(xDomain[0], xDomain[1], defaultBinCount);\n const binSize = tickStep(xDomain[0], xDomain[1], defaultBinCount);\n const [firstBinEnd] = binStarts;\n const expandStartToBin = n => [n, n + binSize];\n return [[firstBinEnd - binSize, firstBinEnd], ...binStarts.map(expandStartToBin)];\n }\n calculateNiceBins(domain, binCount) {\n const startGuess = Math.floor(domain[0]);\n const stop = domain[1];\n const segments = binCount || 1;\n const {\n start,\n binSize\n } = this.calculateNiceStart(startGuess, stop, segments);\n return this.getBins(start, stop, binSize, segments);\n }\n getBins(start, stop, step, count) {\n const bins = [];\n const precision = this.calculatePrecision(step);\n for (let i = 0; i < count; i++) {\n const a = Math.round((start + i * step) * precision) / precision;\n let b = Math.round((start + (i + 1) * step) * precision) / precision;\n if (i === count - 1) {\n b = Math.max(b, stop);\n }\n bins[i] = [a, b];\n }\n return bins;\n }\n calculatePrecision(step) {\n let precision = 10;\n if (isFinite(step) && step > 0) {\n while (step < 1) {\n precision *= 10;\n step *= 10;\n }\n }\n return precision;\n }\n calculateNiceStart(a, b, segments) {\n const binSize = Math.abs(b - a) / segments;\n const order = Math.floor(Math.log10(binSize));\n const magnitude = Math.pow(10, order);\n const start = Math.floor(a / magnitude) * magnitude;\n return {\n start,\n binSize\n };\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b;\n if (!this.visible) {\n this.processedData = void 0;\n this.animationState.transition(\"updateData\");\n }\n const {\n xKey,\n yKey,\n areaPlot,\n aggregation\n } = this.properties;\n const xScale = (_a = this.axes[\"x\" /* X */]) == null ? void 0 : _a.scale;\n const yScale = (_b = this.axes[\"y\" /* Y */]) == null ? void 0 : _b.scale;\n const {\n xScaleType,\n yScaleType\n } = this.getScaleInformation({\n yScale,\n xScale\n });\n const props = [keyProperty(xKey, xScaleType), SORT_DOMAIN_GROUPS];\n if (yKey) {\n let aggProp = groupCount(\"groupAgg\");\n if (aggregation === \"count\") {} else if (aggregation === \"sum\") {\n aggProp = groupSum(\"groupAgg\");\n } else if (aggregation === \"mean\") {\n aggProp = groupAverage(\"groupAgg\");\n }\n if (areaPlot) {\n aggProp = area(\"groupAgg\", aggProp);\n }\n props.push(valueProperty(yKey, yScaleType, {\n invalidValue: void 0\n }), aggProp);\n } else {\n let aggProp = groupCount(\"groupAgg\");\n if (areaPlot) {\n aggProp = area(\"groupAgg\", aggProp);\n }\n props.push(aggProp);\n }\n const groupByFn = dataSet => {\n var _a2;\n const xExtent = fixNumericExtent(dataSet.domain.keys[0]);\n if (xExtent.length === 0) {\n dataSet.domain.groups = [];\n return () => [];\n }\n const bins = isNumber(this.properties.binCount) ? this.calculateNiceBins(xExtent, this.properties.binCount) : (_a2 = this.properties.bins) != null ? _a2 : this.deriveBins(xExtent);\n const binCount = bins.length;\n this.calculatedBins = [...bins];\n return item => {\n const xValue = item.keys[0];\n for (let i = 0; i < binCount; i++) {\n const nextBin = bins[i];\n if (xValue >= nextBin[0] && xValue < nextBin[1]) {\n return nextBin;\n }\n if (i === binCount - 1 && xValue <= nextBin[1]) {\n return nextBin;\n }\n }\n return [];\n };\n };\n if (!this.ctx.animationManager.isSkipped() && this.processedData) {\n props.push(diff(this.processedData, false));\n }\n yield this.requestDataModel(dataController, this.data, {\n props,\n groupByFn\n });\n this.animationState.transition(\"updateData\");\n });\n }\n getSeriesDomain(direction) {\n var _a, _b, _c, _d;\n const {\n processedData,\n dataModel\n } = this;\n if (!processedData || !dataModel || !this.calculatedBins.length) return [];\n const yDomain = dataModel.getDomain(this, `groupAgg`, \"aggregate\", processedData);\n const xDomainMin = (_a = this.calculatedBins) == null ? void 0 : _a[0][0];\n const xDomainMax = (_d = this.calculatedBins) == null ? void 0 : _d[((_c = (_b = this.calculatedBins) == null ? void 0 : _b.length) != null ? _c : 0) - 1][1];\n if (direction === \"x\" /* X */) {\n return fixNumericExtent([xDomainMin, xDomainMax]);\n }\n return fixNumericExtent(yDomain);\n }\n createNodeData() {\n return __async(this, null, function* () {\n var _a;\n const {\n id: seriesId,\n axes,\n processedData,\n ctx: {\n callbackCache\n }\n } = this;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n if (!xAxis || !yAxis) {\n return;\n }\n const {\n scale: xScale\n } = xAxis;\n const {\n scale: yScale\n } = yAxis;\n const {\n xKey,\n yKey,\n xName,\n yName,\n fill,\n stroke,\n strokeWidth,\n cornerRadius\n } = this.properties;\n const {\n formatter: labelFormatter = params => String(params.value),\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n color: labelColor\n } = this.properties.label;\n const nodeData = [];\n const context = {\n itemId: (_a = this.properties.yKey) != null ? _a : this.id,\n nodeData,\n labelData: nodeData,\n scales: this.calculateScaling(),\n animationValid: true,\n visible: this.visible\n };\n if (!this.visible || !processedData || processedData.type !== \"grouped\") return context;\n processedData.data.forEach(group2 => {\n var _a2;\n const {\n aggValues: [[negativeAgg, positiveAgg]] = [[0, 0]],\n datum,\n datum: {\n length: frequency\n },\n keys: domain,\n keys: [xDomainMin, xDomainMax]\n } = group2;\n const xMinPx = xScale.convert(xDomainMin);\n const xMaxPx = xScale.convert(xDomainMax);\n const total = negativeAgg + positiveAgg;\n const yZeroPx = yScale.convert(0);\n const yMaxPx = yScale.convert(total);\n const w = Math.abs(xMaxPx - xMinPx);\n const h = Math.abs(yMaxPx - yZeroPx);\n const x = Math.min(xMinPx, xMaxPx);\n const y = Math.min(yZeroPx, yMaxPx);\n let selectionDatumLabel = void 0;\n if (total !== 0) {\n selectionDatumLabel = {\n text: (_a2 = callbackCache.call(labelFormatter, {\n value: total,\n datum,\n seriesId,\n xKey,\n yKey,\n xName,\n yName\n })) != null ? _a2 : String(total),\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n fill: labelColor,\n x: x + w / 2,\n y: y + h / 2\n };\n }\n const nodeMidPoint = {\n x: x + w / 2,\n y: y + h / 2\n };\n const yAxisReversed = yAxis.isReversed();\n nodeData.push({\n series: this,\n datum,\n // required by SeriesNodeDatum, but might not make sense here\n // since each selection is an aggregation of multiple data.\n aggregatedValue: total,\n frequency,\n domain,\n yKey,\n xKey,\n x,\n y,\n xValue: xMinPx,\n yValue: yMaxPx,\n width: w,\n height: h,\n midPoint: nodeMidPoint,\n fill,\n stroke,\n cornerRadius,\n topLeftCornerRadius: !yAxisReversed,\n topRightCornerRadius: !yAxisReversed,\n bottomRightCornerRadius: yAxisReversed,\n bottomLeftCornerRadius: yAxisReversed,\n opacity: 1,\n strokeWidth,\n label: selectionDatumLabel\n });\n });\n nodeData.sort((a, b) => a.x - b.x);\n return context;\n });\n }\n nodeFactory() {\n return new Rect();\n }\n updateDatumSelection(opts) {\n return __async(this, null, function* () {\n const {\n nodeData,\n datumSelection\n } = opts;\n return datumSelection.update(nodeData, rect => {\n rect.tag = 0 /* Bin */;\n rect.crisp = true;\n }, datum => datum.domain.join(\"_\"));\n });\n }\n updateDatumNodes(opts) {\n return __async(this, null, function* () {\n const {\n isHighlight: isDatumHighlighted\n } = opts;\n const {\n fillOpacity: seriesFillOpacity,\n strokeOpacity,\n lineDash,\n lineDashOffset,\n shadow,\n highlightStyle: {\n item: {\n fill: highlightedFill,\n fillOpacity: highlightFillOpacity = seriesFillOpacity,\n stroke: highlightedStroke,\n strokeWidth: highlightedDatumStrokeWidth\n }\n }\n } = this.properties;\n opts.datumSelection.each((rect, datum, index) => {\n var _a, _b;\n const {\n cornerRadius,\n topLeftCornerRadius,\n topRightCornerRadius,\n bottomRightCornerRadius,\n bottomLeftCornerRadius\n } = datum;\n const strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== void 0 ? highlightedDatumStrokeWidth : datum.strokeWidth;\n const fillOpacity = isDatumHighlighted ? highlightFillOpacity : seriesFillOpacity;\n rect.fill = (_a = isDatumHighlighted ? highlightedFill : void 0) != null ? _a : datum.fill;\n rect.stroke = (_b = isDatumHighlighted ? highlightedStroke : void 0) != null ? _b : datum.stroke;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.strokeWidth = strokeWidth;\n rect.lineDash = lineDash;\n rect.lineDashOffset = lineDashOffset;\n rect.topLeftCornerRadius = topLeftCornerRadius ? cornerRadius : 0;\n rect.topRightCornerRadius = topRightCornerRadius ? cornerRadius : 0;\n rect.bottomRightCornerRadius = bottomRightCornerRadius ? cornerRadius : 0;\n rect.bottomLeftCornerRadius = bottomLeftCornerRadius ? cornerRadius : 0;\n rect.fillShadow = shadow;\n rect.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n rect.visible = datum.height > 0;\n });\n });\n }\n updateLabelSelection(opts) {\n return __async(this, null, function* () {\n const {\n labelData,\n labelSelection\n } = opts;\n return labelSelection.update(labelData, text => {\n text.tag = 1 /* Label */;\n text.pointerEvents = 1 /* None */;\n text.textAlign = \"center\";\n text.textBaseline = \"middle\";\n });\n });\n }\n updateLabelNodes(opts) {\n return __async(this, null, function* () {\n const labelEnabled = this.isLabelEnabled();\n opts.labelSelection.each((text, datum) => {\n const 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 });\n }\n initQuadTree(quadtree) {\n addHitTestersToQuadtree(quadtree, childrenIter(this.contentGroup.children[0]));\n }\n pickNodeClosestDatum(point) {\n return findQuadtreeMatch(this, point);\n }\n getTooltipHtml(nodeDatum) {\n const xAxis = this.axes[\"x\" /* X */];\n const yAxis = this.axes[\"y\" /* Y */];\n if (!this.properties.isValid() || !xAxis || !yAxis) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n xKey,\n yKey,\n xName,\n yName,\n fill: color,\n aggregation,\n tooltip\n } = this.properties;\n const {\n aggregatedValue,\n frequency,\n domain: [rangeMin, rangeMax],\n itemId\n } = nodeDatum;\n const title = `${sanitizeHtml(xName != null ? xName : xKey)}: ${xAxis.formatDatum(rangeMin)} - ${xAxis.formatDatum(rangeMax)}`;\n let content = yKey ? `${sanitizeHtml(yName != null ? yName : yKey)} (${aggregation}): ${yAxis.formatDatum(aggregatedValue)}
` : \"\";\n content += `Frequency: ${frequency}`;\n const defaults = {\n title,\n backgroundColor: color,\n content\n };\n return tooltip.toTooltipHtml(defaults, {\n datum: {\n data: nodeDatum.datum,\n aggregatedValue: nodeDatum.aggregatedValue,\n domain: nodeDatum.domain,\n frequency: nodeDatum.frequency\n },\n itemId,\n xKey,\n xName,\n yKey,\n yName,\n color,\n title,\n seriesId: this.id\n });\n }\n getLegendData(legendType) {\n var _a, _b;\n if (!((_a = this.data) == null ? void 0 : _a.length) || legendType !== \"category\") {\n return [];\n }\n const {\n xKey,\n yName,\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity,\n visible\n } = this.properties;\n return [{\n legendType: \"category\",\n id: this.id,\n itemId: xKey,\n seriesId: this.id,\n enabled: visible,\n label: {\n text: (_b = yName != null ? yName : xKey) != null ? _b : \"Frequency\"\n },\n marker: {\n fill: fill != null ? fill : \"rgba(0, 0, 0, 0)\",\n stroke: stroke != null ? stroke : \"rgba(0, 0, 0, 0)\",\n fillOpacity,\n strokeOpacity,\n strokeWidth\n }\n }];\n }\n animateEmptyUpdateReady({\n datumSelection,\n labelSelection\n }) {\n const fns = prepareBarAnimationFunctions(collapsedStartingBarPosition(true, this.axes, \"normal\"));\n fromToMotion(this.id, \"datums\", this.ctx.animationManager, [datumSelection], fns);\n seriesLabelFadeInAnimation(this, \"labels\", this.ctx.animationManager, labelSelection);\n }\n animateWaitingUpdateReady(data) {\n var _a, _b;\n const dataDiff = (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.diff;\n const fns = prepareBarAnimationFunctions(collapsedStartingBarPosition(true, this.axes, \"normal\"));\n fromToMotion(this.id, \"datums\", this.ctx.animationManager, [data.datumSelection], fns, (_, datum) => createDatumId(datum.domain), dataDiff);\n seriesLabelFadeInAnimation(this, \"labels\", this.ctx.animationManager, data.labelSelection);\n }\n isLabelEnabled() {\n return this.properties.label.enabled;\n }\n computeFocusBounds({\n datumIndex,\n seriesRect\n }) {\n var _a;\n return computeBarFocusBounds((_a = this.contextNodeData) == null ? void 0 : _a.nodeData[datumIndex], this.contentGroup, seriesRect);\n }\n};\nHistogramSeries.className = \"HistogramSeries\";\nHistogramSeries.type = \"histogram\";\n\n// packages/ag-charts-community/src/chart/series/cartesian/histogramSeriesModule.ts\nvar HistogramSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n identifier: \"histogram\",\n instanceConstructor: HistogramSeries,\n defaultAxes: [{\n type: \"number\" /* NUMBER */,\n position: \"bottom\" /* BOTTOM */\n }, {\n type: \"number\" /* NUMBER */,\n position: \"left\" /* LEFT */\n }],\n themeTemplate: {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n strokeWidth: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDash: [0],\n lineDashOffset: 0,\n label: {\n enabled: false,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_INSIDE_SERIES_LABEL_COLOUR\n },\n shadow: {\n enabled: false,\n color: DEFAULT_SHADOW_COLOUR,\n xOffset: 3,\n yOffset: 3,\n blur: 5\n }\n }\n },\n paletteFactory: ({\n takeColors\n }) => {\n const {\n fills: [fill],\n strokes: [stroke]\n } = takeColors(1);\n return {\n fill,\n stroke\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/series/cartesian/lineSeriesProperties.ts\nvar LineSeriesProperties = class extends CartesianSeriesProperties {\n constructor() {\n super(...arguments);\n this.stroke = \"#874349\";\n this.strokeWidth = 2;\n this.strokeOpacity = 1;\n this.lineDash = [0];\n this.lineDashOffset = 0;\n this.marker = new SeriesMarker();\n this.label = new Label();\n this.tooltip = new SeriesTooltip();\n this.connectMissingData = false;\n }\n};\n__decorateClass([Validate(STRING)], LineSeriesProperties.prototype, \"xKey\", 2);\n__decorateClass([Validate(STRING)], LineSeriesProperties.prototype, \"yKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], LineSeriesProperties.prototype, \"xName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], LineSeriesProperties.prototype, \"yName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], LineSeriesProperties.prototype, \"title\", 2);\n__decorateClass([Validate(COLOR_STRING)], LineSeriesProperties.prototype, \"stroke\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LineSeriesProperties.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(RATIO)], LineSeriesProperties.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH)], LineSeriesProperties.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], LineSeriesProperties.prototype, \"lineDashOffset\", 2);\n__decorateClass([Validate(OBJECT)], LineSeriesProperties.prototype, \"marker\", 2);\n__decorateClass([Validate(OBJECT)], LineSeriesProperties.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], LineSeriesProperties.prototype, \"tooltip\", 2);\n__decorateClass([Validate(BOOLEAN)], LineSeriesProperties.prototype, \"connectMissingData\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/lineSeries.ts\nvar LineSeries = class extends CartesianSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n directionKeys: DEFAULT_CARTESIAN_DIRECTION_KEYS,\n directionNames: DEFAULT_CARTESIAN_DIRECTION_NAMES,\n hasMarkers: true,\n pickModes: [2 /* NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST */, 3 /* NEAREST_NODE */, 0 /* EXACT_SHAPE_MATCH */],\n markerSelectionGarbageCollection: false,\n animationResetFns: {\n path: buildResetPathFn({\n getOpacity: () => this.getOpacity()\n }),\n label: resetLabelFn,\n marker: (node, datum) => __spreadValues(__spreadValues({}, resetMarkerFn(node)), resetMarkerPositionFn(node, datum))\n }\n });\n this.properties = new LineSeriesProperties();\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b;\n if (!this.properties.isValid() || this.data == null) {\n return;\n }\n const {\n xKey,\n yKey\n } = this.properties;\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const xScale = (_a = this.axes[\"x\" /* X */]) == null ? void 0 : _a.scale;\n const yScale = (_b = this.axes[\"y\" /* Y */]) == null ? void 0 : _b.scale;\n const {\n isContinuousX,\n xScaleType,\n yScaleType\n } = this.getScaleInformation({\n xScale,\n yScale\n });\n const props = [];\n if (!isContinuousX) {\n props.push(keyProperty(xKey, xScaleType, {\n id: \"xKey\"\n }));\n }\n if (animationEnabled) {\n props.push(animationValidation(isContinuousX ? [\"xValue\"] : void 0));\n if (this.processedData) {\n props.push(diff(this.processedData));\n }\n }\n props.push(valueProperty(xKey, xScaleType, {\n id: \"xValue\"\n }), valueProperty(yKey, yScaleType, {\n id: \"yValue\",\n invalidValue: void 0\n }));\n yield this.requestDataModel(dataController, this.data, {\n props\n });\n this.animationState.transition(\"updateData\");\n });\n }\n getSeriesDomain(direction) {\n const {\n axes,\n dataModel,\n processedData\n } = this;\n if (!processedData || !dataModel) return [];\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n const xDef = dataModel.resolveProcessedDataDefById(this, `xValue`);\n if (direction === \"x\" /* X */) {\n const domain = dataModel.getDomain(this, `xValue`, \"value\", processedData);\n if ((xDef == null ? void 0 : xDef.def.type) === \"value\" && xDef.def.valueType === \"category\") {\n return domain;\n }\n return fixNumericExtent(extent(domain), xAxis);\n } else {\n const domain = dataModel.getDomain(this, `yValue`, \"value\", processedData);\n return fixNumericExtent(domain, yAxis);\n }\n }\n createNodeData() {\n return __async(this, null, function* () {\n var _a, _b, _c;\n const {\n processedData,\n dataModel,\n axes\n } = this;\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n if (!processedData || !dataModel || !xAxis || !yAxis) {\n return;\n }\n const {\n xKey,\n yKey,\n xName,\n yName,\n marker,\n label,\n connectMissingData,\n legendItemName\n } = this.properties;\n const xScale = xAxis.scale;\n const yScale = yAxis.scale;\n const xOffset = ((_a = xScale.bandwidth) != null ? _a : 0) / 2;\n const yOffset = ((_b = yScale.bandwidth) != null ? _b : 0) / 2;\n const nodeData = [];\n const size = marker.enabled ? marker.size : 0;\n const xIdx = dataModel.resolveProcessedDataIndexById(this, `xValue`);\n const yIdx = dataModel.resolveProcessedDataIndexById(this, `yValue`);\n let moveTo = true;\n let nextPoint;\n for (let i = 0; i < processedData.data.length; i++) {\n const {\n datum,\n values\n } = nextPoint != null ? nextPoint : processedData.data[i];\n const xDatum = values[xIdx];\n const yDatum = values[yIdx];\n if (yDatum === void 0) {\n moveTo = !connectMissingData;\n } else {\n const x = xScale.convert(xDatum) + xOffset;\n if (isNaN(x)) {\n moveTo = !connectMissingData;\n nextPoint = void 0;\n continue;\n }\n nextPoint = ((_c = processedData.data[i + 1]) == null ? void 0 : _c.values[yIdx]) === void 0 ? void 0 : processedData.data[i + 1];\n const y = yScale.convert(yDatum) + yOffset;\n const labelText = this.getLabelText(label, {\n value: yDatum,\n datum,\n xKey,\n yKey,\n xName,\n yName,\n legendItemName\n }, value => isFiniteNumber(value) ? value.toFixed(2) : String(value));\n nodeData.push({\n series: this,\n datum,\n yKey,\n xKey,\n point: {\n x,\n y,\n moveTo,\n size\n },\n midPoint: {\n x,\n y\n },\n yValue: yDatum,\n xValue: xDatum,\n capDefaults: {\n lengthRatioMultiplier: this.properties.marker.getDiameter(),\n lengthMax: Infinity\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 } : void 0\n });\n moveTo = false;\n }\n }\n return {\n itemId: yKey,\n nodeData,\n labelData: nodeData,\n scales: this.calculateScaling(),\n visible: this.visible\n };\n });\n }\n isPathOrSelectionDirty() {\n return this.properties.marker.isDirty();\n }\n markerFactory() {\n const {\n shape\n } = this.properties.marker;\n const MarkerShape = getMarker(shape);\n return new MarkerShape();\n }\n updatePathNodes(opts) {\n return __async(this, null, function* () {\n const {\n paths: [lineNode],\n opacity,\n visible,\n animationEnabled\n } = opts;\n lineNode.setProperties({\n fill: void 0,\n lineJoin: \"round\",\n pointerEvents: 1 /* None */,\n opacity,\n stroke: this.properties.stroke,\n strokeWidth: this.getStrokeWidth(this.properties.strokeWidth),\n strokeOpacity: this.properties.strokeOpacity,\n lineDash: this.properties.lineDash,\n lineDashOffset: this.properties.lineDashOffset\n });\n if (!animationEnabled) {\n lineNode.visible = visible;\n }\n updateClipPath(this, lineNode);\n });\n }\n updateMarkerSelection(opts) {\n return __async(this, null, function* () {\n let {\n nodeData\n } = opts;\n const {\n markerSelection\n } = opts;\n const {\n shape,\n enabled\n } = this.properties.marker;\n nodeData = shape && enabled ? nodeData : [];\n if (this.properties.marker.isDirty()) {\n markerSelection.clear();\n markerSelection.cleanup();\n }\n return markerSelection.update(nodeData, void 0, datum => createDatumId(datum.xValue));\n });\n }\n updateMarkerNodes(opts) {\n return __async(this, null, function* () {\n const {\n markerSelection,\n isHighlight: highlighted\n } = opts;\n const {\n xKey,\n yKey,\n stroke,\n strokeWidth,\n strokeOpacity,\n marker,\n highlightStyle\n } = this.properties;\n const baseStyle = mergeDefaults(highlighted && highlightStyle.item, marker.getStyle(), {\n stroke,\n strokeWidth,\n strokeOpacity\n });\n const applyTranslation = this.ctx.animationManager.isSkipped();\n markerSelection.each((node, datum) => {\n this.updateMarkerStyle(node, marker, {\n datum,\n highlighted,\n xKey,\n yKey\n }, baseStyle, {\n applyTranslation\n });\n });\n if (!highlighted) {\n marker.markClean();\n }\n });\n }\n updateLabelSelection(opts) {\n return __async(this, null, function* () {\n return opts.labelSelection.update(this.isLabelEnabled() ? opts.labelData : []);\n });\n }\n updateLabelNodes(opts) {\n return __async(this, null, function* () {\n const {\n enabled,\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily,\n color\n } = this.properties.label;\n opts.labelSelection.each((text, datum) => {\n const {\n point,\n label\n } = datum;\n if (datum && label && enabled) {\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 });\n }\n getTooltipHtml(nodeDatum) {\n var _a;\n const xAxis = this.axes[\"x\" /* X */];\n const yAxis = this.axes[\"y\" /* Y */];\n if (!this.properties.isValid() || !xAxis || !yAxis) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n xKey,\n yKey,\n xName,\n yName,\n strokeWidth,\n marker,\n tooltip\n } = this.properties;\n const {\n datum,\n xValue,\n yValue,\n itemId\n } = nodeDatum;\n const xString = xAxis.formatDatum(xValue);\n const yString = yAxis.formatDatum(yValue);\n const title = sanitizeHtml((_a = this.properties.title) != null ? _a : yName);\n const content = sanitizeHtml(xString + \": \" + yString);\n const baseStyle = mergeDefaults({\n fill: marker.stroke\n }, marker.getStyle(), {\n strokeWidth\n });\n const {\n fill: color\n } = this.getMarkerStyle(marker, {\n datum: nodeDatum,\n xKey,\n yKey,\n highlighted: false\n }, baseStyle);\n return tooltip.toTooltipHtml({\n title,\n content,\n backgroundColor: color\n }, __spreadValues({\n datum,\n itemId,\n xKey,\n xName,\n yKey,\n yName,\n title,\n color,\n seriesId: this.id\n }, this.getModuleTooltipParams()));\n }\n getLegendData(legendType) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n if (!(((_a = this.data) == null ? void 0 : _a.length) && this.properties.isValid() && legendType === \"category\")) {\n return [];\n }\n const {\n yKey,\n yName,\n stroke,\n strokeOpacity,\n strokeWidth,\n lineDash,\n title,\n marker,\n visible,\n legendItemName\n } = this.properties;\n const color0 = \"rgba(0, 0, 0, 0)\";\n return [{\n legendType: \"category\",\n id: this.id,\n itemId: yKey,\n legendItemName,\n seriesId: this.id,\n enabled: visible,\n label: {\n text: (_c = (_b = legendItemName != null ? legendItemName : title) != null ? _b : yName) != null ? _c : yKey\n },\n marker: {\n shape: marker.shape,\n fill: (_d = marker.fill) != null ? _d : color0,\n stroke: (_f = (_e = marker.stroke) != null ? _e : stroke) != null ? _f : color0,\n fillOpacity: (_g = marker.fillOpacity) != null ? _g : 1,\n strokeOpacity: (_i = (_h = marker.strokeOpacity) != null ? _h : strokeOpacity) != null ? _i : 1,\n strokeWidth: (_j = marker.strokeWidth) != null ? _j : 0,\n enabled: marker.enabled\n },\n line: {\n stroke: stroke != null ? stroke : color0,\n strokeOpacity,\n strokeWidth,\n lineDash\n }\n }];\n }\n updatePaths(opts) {\n return __async(this, null, function* () {\n this.updateLinePaths(opts.paths, opts.contextData);\n });\n }\n updateLinePaths(paths, contextData) {\n const {\n nodeData\n } = contextData;\n const [lineNode] = paths;\n const {\n path: linePath\n } = lineNode;\n linePath.clear(true);\n for (const data of nodeData) {\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 lineNode.checkPathDirty();\n }\n animateEmptyUpdateReady(animationData) {\n const {\n markerSelection,\n labelSelection,\n annotationSelections,\n contextData,\n paths\n } = animationData;\n const {\n animationManager\n } = this.ctx;\n this.updateLinePaths(paths, contextData);\n pathSwipeInAnimation(this, animationManager, ...paths);\n resetMotion([markerSelection], resetMarkerPositionFn);\n markerSwipeScaleInAnimation(this, animationManager, markerSelection);\n seriesLabelFadeInAnimation(this, \"labels\", animationManager, labelSelection);\n seriesLabelFadeInAnimation(this, \"annotations\", animationManager, ...annotationSelections);\n }\n animateReadyResize(animationData) {\n const {\n contextData,\n paths\n } = animationData;\n this.updateLinePaths(paths, contextData);\n super.animateReadyResize(animationData);\n }\n animateWaitingUpdateReady(animationData) {\n var _a, _b;\n const {\n animationManager\n } = this.ctx;\n const {\n markerSelection: markerSelections,\n labelSelection: labelSelections,\n annotationSelections,\n contextData,\n paths,\n previousContextData\n } = animationData;\n const [path] = paths;\n super.resetAllAnimation(animationData);\n const update = () => {\n this.updateLinePaths(paths, contextData);\n };\n const skip = () => {\n animationManager.skipCurrentBatch();\n update();\n };\n if (contextData == null || previousContextData == null) {\n update();\n markerFadeInAnimation(this, animationManager, \"added\", markerSelections);\n pathFadeInAnimation(this, \"path_properties\", animationManager, \"add\", path);\n seriesLabelFadeInAnimation(this, \"labels\", animationManager, labelSelections);\n seriesLabelFadeInAnimation(this, \"annotations\", animationManager, ...annotationSelections);\n return;\n }\n const fns = prepareLinePathAnimation(contextData, previousContextData, (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.diff);\n if (fns === void 0) {\n skip();\n return;\n } else if (fns.status === \"no-op\") {\n return;\n }\n markerFadeInAnimation(this, animationManager, void 0, markerSelections);\n fromToMotion(this.id, \"path_properties\", animationManager, [path], fns.pathProperties);\n pathMotion(this.id, \"path_update\", animationManager, [path], fns.path);\n if (fns.hasMotion) {\n seriesLabelFadeInAnimation(this, \"labels\", animationManager, labelSelections);\n seriesLabelFadeInAnimation(this, \"annotations\", animationManager, ...annotationSelections);\n }\n }\n isLabelEnabled() {\n return this.properties.label.enabled;\n }\n getBandScalePadding() {\n return {\n inner: 1,\n outer: 0.1\n };\n }\n nodeFactory() {\n return new Group();\n }\n getFormattedMarkerStyle(datum) {\n const {\n xKey,\n yKey\n } = this.properties;\n return this.getMarkerStyle(this.properties.marker, {\n datum,\n xKey,\n yKey,\n highlighted: true\n });\n }\n computeFocusBounds(opts) {\n return computeMarkerFocusBounds(this, opts);\n }\n};\nLineSeries.className = \"LineSeries\";\nLineSeries.type = \"line\";\n\n// packages/ag-charts-community/src/chart/series/cartesian/lineSeriesModule.ts\nvar LineSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n identifier: \"line\",\n instanceConstructor: LineSeries,\n defaultAxes: [{\n type: \"number\" /* NUMBER */,\n position: \"left\" /* LEFT */\n }, {\n type: \"category\" /* CATEGORY */,\n position: \"bottom\" /* BOTTOM */\n }],\n themeTemplate: {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n tooltip: {\n position: {\n type: \"node\"\n }\n },\n strokeWidth: 2,\n strokeOpacity: 1,\n lineDash: [0],\n lineDashOffset: 0,\n marker: {\n __extends__: EXTENDS_CARTESIAN_MARKER_DEFAULTS,\n fillOpacity: 1,\n strokeOpacity: 1,\n strokeWidth: 0\n },\n label: {\n enabled: false,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR\n }\n }\n },\n enterpriseThemeTemplate: {\n series: {\n errorBar: {\n cap: {\n lengthRatio: 1\n }\n }\n }\n },\n paletteFactory: params => {\n const {\n marker\n } = markerPaletteFactory(params);\n return {\n stroke: marker.fill,\n marker\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/series/cartesian/scatterSeriesProperties.ts\nvar ScatterSeriesLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.placement = \"top\";\n }\n};\n__decorateClass([Validate(LABEL_PLACEMENT)], ScatterSeriesLabel.prototype, \"placement\", 2);\nvar ScatterSeriesProperties = class extends CartesianSeriesProperties {\n constructor() {\n super(...arguments);\n this.colorRange = [\"#ffff00\", \"#00ff00\", \"#0000ff\"];\n this.marker = new SeriesMarker();\n this.label = new ScatterSeriesLabel();\n this.tooltip = new SeriesTooltip();\n }\n};\n__decorateClass([Validate(STRING)], ScatterSeriesProperties.prototype, \"xKey\", 2);\n__decorateClass([Validate(STRING)], ScatterSeriesProperties.prototype, \"yKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"labelKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"colorKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"xName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"yName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"labelName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"colorName\", 2);\n__decorateClass([Validate(NUMBER_ARRAY, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"colorDomain\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], ScatterSeriesProperties.prototype, \"colorRange\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], ScatterSeriesProperties.prototype, \"title\", 2);\n__decorateClass([Validate(OBJECT)], ScatterSeriesProperties.prototype, \"marker\", 2);\n__decorateClass([Validate(OBJECT)], ScatterSeriesProperties.prototype, \"label\", 2);\n__decorateClass([Validate(OBJECT)], ScatterSeriesProperties.prototype, \"tooltip\", 2);\n\n// packages/ag-charts-community/src/chart/series/cartesian/scatterSeries.ts\nvar ScatterSeries = class extends CartesianSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n directionKeys: DEFAULT_CARTESIAN_DIRECTION_KEYS,\n directionNames: DEFAULT_CARTESIAN_DIRECTION_NAMES,\n pickModes: [2 /* NEAREST_BY_MAIN_CATEGORY_AXIS_FIRST */, 3 /* NEAREST_NODE */, 0 /* EXACT_SHAPE_MATCH */],\n pathsPerSeries: 0,\n hasMarkers: true,\n markerSelectionGarbageCollection: false,\n animationResetFns: {\n marker: resetMarkerFn,\n label: resetLabelFn\n }\n });\n this.properties = new ScatterSeriesProperties();\n this.colorScale = new ColorScale();\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b, _c;\n if (!this.properties.isValid() || this.data == null || !this.visible) return;\n const xScale = (_a = this.axes[\"x\" /* X */]) == null ? void 0 : _a.scale;\n const yScale = (_b = this.axes[\"y\" /* Y */]) == null ? void 0 : _b.scale;\n const {\n xScaleType,\n yScaleType\n } = this.getScaleInformation({\n xScale,\n yScale\n });\n const colorScaleType = this.colorScale.type;\n const {\n xKey,\n yKey,\n labelKey,\n colorKey,\n colorDomain,\n colorRange\n } = this.properties;\n const {\n dataModel,\n processedData\n } = yield this.requestDataModel(dataController, this.data, {\n props: [keyProperty(xKey, xScaleType, {\n id: \"xKey-raw\"\n }), keyProperty(yKey, yScaleType, {\n id: \"yKey-raw\"\n }), ...(labelKey ? [keyProperty(labelKey, \"band\", {\n id: `labelKey-raw`\n })] : []), valueProperty(xKey, xScaleType, {\n id: `xValue`\n }), valueProperty(yKey, yScaleType, {\n id: `yValue`\n }), ...(colorKey ? [valueProperty(colorKey, colorScaleType, {\n id: `colorValue`\n })] : []), ...(labelKey ? [valueProperty(labelKey, \"band\", {\n id: `labelValue`\n })] : [])]\n });\n if (colorKey) {\n const colorKeyIdx = dataModel.resolveProcessedDataIndexById(this, `colorValue`);\n this.colorScale.domain = (_c = colorDomain != null ? colorDomain : processedData.domain.values[colorKeyIdx]) != null ? _c : [];\n this.colorScale.range = colorRange;\n this.colorScale.update();\n }\n this.animationState.transition(\"updateData\");\n });\n }\n getSeriesDomain(direction) {\n const {\n dataModel,\n processedData\n } = this;\n if (!processedData || !dataModel) return [];\n const id = direction === \"x\" /* X */ ? `xValue` : `yValue`;\n const dataDef = dataModel.resolveProcessedDataDefById(this, id);\n const domain = dataModel.getDomain(this, id, \"value\", processedData);\n if ((dataDef == null ? void 0 : dataDef.def.type) === \"value\" && (dataDef == null ? void 0 : dataDef.def.valueType) === \"category\") {\n return domain;\n }\n const axis = this.axes[direction];\n return fixNumericExtent(extent(domain), axis);\n }\n createNodeData() {\n return __async(this, null, function* () {\n var _a, _b, _c;\n const {\n axes,\n dataModel,\n processedData,\n colorScale\n } = this;\n const {\n xKey,\n yKey,\n labelKey,\n colorKey,\n xName,\n yName,\n labelName,\n marker,\n label,\n visible\n } = this.properties;\n const {\n placement\n } = label;\n const markerShape = getMarker(marker.shape);\n const xAxis = axes[\"x\" /* X */];\n const yAxis = axes[\"y\" /* Y */];\n if (!(dataModel && processedData && visible && xAxis && yAxis)) {\n return;\n }\n const xDataIdx = dataModel.resolveProcessedDataIndexById(this, `xValue`);\n const yDataIdx = dataModel.resolveProcessedDataIndexById(this, `yValue`);\n const colorDataIdx = colorKey ? dataModel.resolveProcessedDataIndexById(this, `colorValue`) : -1;\n const labelDataIdx = labelKey ? dataModel.resolveProcessedDataIndexById(this, `labelValue`) : -1;\n const xScale = xAxis.scale;\n const yScale = yAxis.scale;\n const xOffset = ((_a = xScale.bandwidth) != null ? _a : 0) / 2;\n const yOffset = ((_b = yScale.bandwidth) != null ? _b : 0) / 2;\n const nodeData = [];\n const font = label.getFont();\n for (const {\n values,\n datum\n } of (_c = processedData.data) != null ? _c : []) {\n const xDatum = values[xDataIdx];\n const yDatum = values[yDataIdx];\n const x = xScale.convert(xDatum) + xOffset;\n const y = yScale.convert(yDatum) + yOffset;\n const labelText = this.getLabelText(label, {\n value: labelKey ? values[labelDataIdx] : yDatum,\n datum,\n xKey,\n yKey,\n labelKey,\n xName,\n yName,\n labelName\n });\n const size = Text.getTextSize(labelText, font);\n const fill = colorKey ? colorScale.convert(values[colorDataIdx]) : void 0;\n nodeData.push({\n series: this,\n itemId: yKey,\n yKey,\n xKey,\n datum,\n xValue: xDatum,\n yValue: yDatum,\n capDefaults: {\n lengthRatioMultiplier: marker.getDiameter(),\n lengthMax: Infinity\n },\n point: {\n x,\n y,\n size: marker.size\n },\n midPoint: {\n x,\n y\n },\n fill,\n label: __spreadValues({\n text: labelText\n }, size),\n marker: markerShape,\n placement\n });\n }\n return {\n itemId: yKey,\n nodeData,\n labelData: nodeData,\n scales: this.calculateScaling(),\n visible: this.visible\n };\n });\n }\n isPathOrSelectionDirty() {\n return this.properties.marker.isDirty();\n }\n getLabelData() {\n var _a, _b;\n return (_b = (_a = this.contextNodeData) == null ? void 0 : _a.labelData) != null ? _b : [];\n }\n markerFactory() {\n const {\n shape\n } = this.properties.marker;\n const MarkerShape = getMarker(shape);\n return new MarkerShape();\n }\n updateMarkerSelection(opts) {\n return __async(this, null, function* () {\n const {\n nodeData,\n markerSelection\n } = opts;\n if (this.properties.marker.isDirty()) {\n markerSelection.clear();\n markerSelection.cleanup();\n }\n return markerSelection.update(this.properties.marker.enabled ? nodeData : []);\n });\n }\n updateMarkerNodes(opts) {\n return __async(this, null, function* () {\n const {\n markerSelection,\n isHighlight: highlighted\n } = opts;\n const {\n xKey,\n yKey,\n labelKey,\n marker,\n highlightStyle\n } = this.properties;\n const baseStyle = mergeDefaults(highlighted && highlightStyle.item, marker.getStyle());\n markerSelection.each((node, datum) => {\n this.updateMarkerStyle(node, marker, {\n datum,\n highlighted,\n xKey,\n yKey,\n labelKey\n }, baseStyle);\n });\n if (!highlighted) {\n marker.markClean();\n }\n });\n }\n updateLabelSelection(opts) {\n return __async(this, null, function* () {\n var _a, _b;\n const placedLabels = this.isLabelEnabled() ? (_b = (_a = this.chart) == null ? void 0 : _a.placeLabels().get(this)) != null ? _b : [] : [];\n return opts.labelSelection.update(placedLabels.map(({\n datum,\n x,\n y\n }) => __spreadProps(__spreadValues({}, datum), {\n point: {\n x,\n y,\n size: datum.point.size\n },\n placement: \"top\"\n })), text => {\n text.pointerEvents = 1 /* None */;\n });\n });\n }\n updateLabelNodes(opts) {\n return __async(this, null, function* () {\n const {\n label\n } = this.properties;\n opts.labelSelection.each((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 ? void 0 : _a.x) != null ? _b : 0;\n text.y = (_d = (_c = datum.point) == null ? void 0 : _c.y) != null ? _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 });\n }\n getTooltipHtml(nodeDatum) {\n const xAxis = this.axes[\"x\" /* X */];\n const yAxis = this.axes[\"y\" /* Y */];\n if (!this.properties.isValid() || !xAxis || !yAxis) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n xKey,\n yKey,\n labelKey,\n xName,\n yName,\n labelName,\n title = yName,\n marker,\n tooltip\n } = this.properties;\n const {\n datum,\n xValue,\n yValue,\n label,\n itemId\n } = nodeDatum;\n const baseStyle = mergeDefaults({\n fill: nodeDatum.fill,\n strokeWidth: this.getStrokeWidth(marker.strokeWidth)\n }, marker.getStyle());\n const {\n fill: color = \"gray\"\n } = this.getMarkerStyle(marker, {\n datum: nodeDatum,\n highlighted: false,\n xKey,\n yKey,\n labelKey\n }, baseStyle);\n const xString = sanitizeHtml(xAxis.formatDatum(xValue));\n const yString = sanitizeHtml(yAxis.formatDatum(yValue));\n let content = `${sanitizeHtml(xName != null ? xName : xKey)}: ${xString}
${sanitizeHtml(yName != null ? yName : yKey)}: ${yString}`;\n if (labelKey) {\n content = `${sanitizeHtml(labelName != null ? labelName : labelKey)}: ${sanitizeHtml(label.text)}
` + content;\n }\n return tooltip.toTooltipHtml({\n title,\n content,\n backgroundColor: color\n }, __spreadValues({\n datum,\n itemId,\n xKey,\n xName,\n yKey,\n yName,\n labelKey,\n labelName,\n title,\n color,\n seriesId: this.id\n }, this.getModuleTooltipParams()));\n }\n getLegendData(legendType) {\n var _a, _b, _c, _d, _e, _f;\n const {\n yKey,\n yName,\n title,\n marker,\n visible\n } = this.properties;\n const {\n fill,\n stroke,\n fillOpacity,\n strokeOpacity,\n strokeWidth\n } = marker;\n if (!((_a = this.data) == null ? void 0 : _a.length) || !this.properties.isValid() || legendType !== \"category\") {\n return [];\n }\n return [{\n legendType: \"category\",\n id: this.id,\n itemId: yKey,\n seriesId: this.id,\n enabled: visible,\n label: {\n text: (_b = title != null ? title : yName) != null ? _b : yKey\n },\n marker: {\n shape: marker.shape,\n fill: (_d = (_c = marker.fill) != null ? _c : fill) != null ? _d : \"rgba(0, 0, 0, 0)\",\n stroke: (_f = (_e = marker.stroke) != null ? _e : stroke) != null ? _f : \"rgba(0, 0, 0, 0)\",\n fillOpacity: fillOpacity != null ? fillOpacity : 1,\n strokeOpacity: strokeOpacity != null ? strokeOpacity : 1,\n strokeWidth: strokeWidth != null ? strokeWidth : 0\n }\n }];\n }\n animateEmptyUpdateReady(data) {\n const {\n markerSelection,\n labelSelection,\n annotationSelections\n } = data;\n markerScaleInAnimation(this, this.ctx.animationManager, markerSelection);\n seriesLabelFadeInAnimation(this, \"labels\", this.ctx.animationManager, labelSelection);\n seriesLabelFadeInAnimation(this, \"annotations\", this.ctx.animationManager, ...annotationSelections);\n }\n isLabelEnabled() {\n return this.properties.label.enabled;\n }\n nodeFactory() {\n return new Group();\n }\n getFormattedMarkerStyle(datum) {\n const {\n xKey,\n yKey,\n labelKey\n } = this.properties;\n return this.getMarkerStyle(this.properties.marker, {\n datum,\n xKey,\n yKey,\n labelKey,\n highlighted: true\n });\n }\n computeFocusBounds(opts) {\n return computeMarkerFocusBounds(this, opts);\n }\n};\nScatterSeries.className = \"ScatterSeries\";\nScatterSeries.type = \"scatter\";\n\n// packages/ag-charts-community/src/chart/series/cartesian/scatterSeriesModule.ts\nvar ScatterSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n identifier: \"scatter\",\n instanceConstructor: ScatterSeries,\n defaultAxes: [{\n type: \"number\" /* NUMBER */,\n position: \"bottom\" /* BOTTOM */\n }, {\n type: \"number\" /* NUMBER */,\n position: \"left\" /* LEFT */\n }],\n themeTemplate: {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n tooltip: {\n position: {\n type: \"node\"\n }\n },\n marker: {\n __extends__: EXTENDS_CARTESIAN_MARKER_DEFAULTS,\n fillOpacity: 0.8\n },\n label: {\n enabled: false,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR\n }\n }\n },\n enterpriseThemeTemplate: {\n series: {\n errorBar: {\n cap: {\n lengthRatio: 1\n }\n }\n }\n },\n paletteFactory: markerPaletteFactory\n};\n\n// packages/ag-charts-community/src/scene/sectorBox.ts\nvar SectorBox = class _SectorBox {\n constructor(startAngle, endAngle, innerRadius, outerRadius) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.outerRadius = outerRadius;\n }\n clone() {\n const {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n } = this;\n return new _SectorBox(startAngle, endAngle, innerRadius, outerRadius);\n }\n [interpolate](other, d) {\n return new _SectorBox(this.startAngle * (1 - d) + other.startAngle * d, this.endAngle * (1 - d) + other.endAngle * d, this.innerRadius * (1 - d) + other.innerRadius * d, this.outerRadius * (1 - d) + other.outerRadius * d);\n }\n};\n\n// packages/ag-charts-community/src/scene/util/sector.ts\nfunction isPointInSector(x, y, sector) {\n const radius = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const {\n innerRadius,\n outerRadius\n } = sector;\n if (sector.startAngle === sector.endAngle || radius < Math.min(innerRadius, outerRadius) || radius > Math.max(innerRadius, outerRadius)) {\n return false;\n }\n const startAngle = normalizeAngle180(sector.startAngle);\n const endAngle = normalizeAngle180(sector.endAngle);\n const angle = Math.atan2(y, x);\n return startAngle < endAngle ? angle <= endAngle && angle >= startAngle : angle <= endAngle && angle >= -Math.PI || angle >= startAngle && angle <= Math.PI;\n}\nfunction lineCollidesSector(line, sector) {\n const {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n } = sector;\n const outerStart = {\n x: outerRadius * Math.cos(startAngle),\n y: outerRadius * Math.sin(startAngle)\n };\n const outerEnd = {\n x: outerRadius * Math.cos(endAngle),\n y: outerRadius * Math.sin(endAngle)\n };\n const innerStart = innerRadius === 0 ? {\n x: 0,\n y: 0\n } : {\n x: innerRadius * Math.cos(startAngle),\n y: innerRadius * Math.sin(startAngle)\n };\n const innerEnd = innerRadius === 0 ? {\n x: 0,\n y: 0\n } : {\n x: innerRadius * Math.cos(endAngle),\n y: innerRadius * Math.sin(endAngle)\n };\n return segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerStart.x, outerStart.y, innerStart.x, innerStart.y) || segmentIntersection(line.start.x, line.start.y, line.end.x, line.end.y, outerEnd.x, outerEnd.y, innerEnd.x, innerEnd.y) || arcIntersections(0, 0, outerRadius, startAngle, endAngle, true, line.start.x, line.start.y, line.end.x, line.end.y);\n}\nfunction boxCollidesSector(box, sector) {\n const topLeft = {\n x: box.x,\n y: box.y\n };\n const topRight = {\n x: box.x + box.width,\n y: box.y\n };\n const bottomLeft = {\n x: box.x,\n y: box.y + box.height\n };\n const bottomRight = {\n x: box.x + box.width,\n y: box.y + box.height\n };\n return lineCollidesSector({\n start: topLeft,\n end: topRight\n }, sector) || lineCollidesSector({\n start: bottomLeft,\n end: bottomRight\n }, sector);\n}\nfunction radiiScalingFactor(r, sweep, a, b) {\n if (a === 0 && b === 0) return 0;\n const fs1 = Math.asin(Math.abs(1 * a) / (r + 1 * a)) + Math.asin(Math.abs(1 * b) / (r + 1 * b)) - sweep;\n if (fs1 < 0) return 1;\n let start = 0;\n let end = 1;\n for (let i = 0; i < 8; i += 1) {\n const s = (start + end) / 2;\n const fs = Math.asin(Math.abs(s * a) / (r + s * a)) + Math.asin(Math.abs(s * b) / (r + s * b)) - sweep;\n if (fs < 0) {\n start = s;\n } else {\n end = s;\n }\n }\n return start;\n}\nvar delta = 1e-6;\nfunction clockwiseAngle(angle, relativeToStartAngle) {\n if (angleBetween(angle, relativeToStartAngle) < delta) {\n return relativeToStartAngle;\n } else {\n return normalizeAngle360(angle - relativeToStartAngle) + relativeToStartAngle;\n }\n}\nfunction clockwiseAngles(startAngle, endAngle, relativeToStartAngle = 0) {\n const fullPie = Math.abs(endAngle - startAngle) >= 2 * Math.PI;\n const sweepAngle = fullPie ? 2 * Math.PI : normalizeAngle360(endAngle - startAngle);\n startAngle = clockwiseAngle(startAngle, relativeToStartAngle);\n endAngle = startAngle + sweepAngle;\n return {\n startAngle,\n endAngle\n };\n}\nfunction arcRadialLineIntersectionAngle(cx, cy, r, startAngle, endAngle, clipAngle) {\n const sinA = Math.sin(clipAngle);\n const cosA = Math.cos(clipAngle);\n const c = __pow(cx, 2) + __pow(cy, 2) - __pow(r, 2);\n let p0x = NaN;\n let p0y = NaN;\n let p1x = NaN;\n let p1y = NaN;\n if (cosA > 0.5) {\n const tanA = sinA / cosA;\n const a = 1 + __pow(tanA, 2);\n const b = -2 * (cx + cy * tanA);\n const d = __pow(b, 2) - 4 * a * c;\n if (d < 0) return;\n const x0 = (-b + Math.sqrt(d)) / (2 * a);\n const x1 = (-b - Math.sqrt(d)) / (2 * a);\n p0x = x0;\n p0y = x0 * tanA;\n p1x = x1;\n p1y = x1 * tanA;\n } else {\n const cotA = cosA / sinA;\n const a = 1 + __pow(cotA, 2);\n const b = -2 * (cy + cx * cotA);\n const d = __pow(b, 2) - 4 * a * c;\n if (d < 0) return;\n const y0 = (-b + Math.sqrt(d)) / (2 * a);\n const y1 = (-b - Math.sqrt(d)) / (2 * a);\n p0x = y0 * cotA;\n p0y = y0;\n p1x = y1 * cotA;\n p1y = y1;\n }\n const normalisedX = cosA;\n const normalisedY = sinA;\n const p0DotNormalized = p0x * normalisedX + p0y * normalisedY;\n const p1DotNormalized = p1x * normalisedX + p1y * normalisedY;\n const a0 = p0DotNormalized > 0 ? clockwiseAngle(Math.atan2(p0y - cy, p0x - cx), startAngle) : NaN;\n const a1 = p1DotNormalized > 0 ? clockwiseAngle(Math.atan2(p1y - cy, p1x - cx), startAngle) : NaN;\n if (a0 >= startAngle && a0 <= endAngle) {\n return a0;\n } else if (a1 >= startAngle && a1 <= endAngle) {\n return a1;\n }\n}\nfunction arcCircleIntersectionAngle(cx, cy, r, startAngle, endAngle, circleR) {\n const d = Math.hypot(cx, cy);\n const d1 = (__pow(d, 2) - __pow(r, 2) + __pow(circleR, 2)) / (2 * d);\n const d2 = d - d1;\n const theta = Math.atan2(cy, cx);\n const deltaTheta = Math.acos(-d2 / r);\n const a0 = clockwiseAngle(theta + deltaTheta, startAngle);\n const a1 = clockwiseAngle(theta - deltaTheta, startAngle);\n if (a0 >= startAngle && a0 <= endAngle) {\n return a0;\n } else if (a1 >= startAngle && a1 <= endAngle) {\n return a1;\n }\n}\n\n// packages/ag-charts-community/src/scene/shape/sector.ts\nvar Arc = class {\n constructor(cx, cy, r, a0, a1) {\n this.cx = cx;\n this.cy = cy;\n this.r = r;\n this.a0 = a0;\n this.a1 = a1;\n if (this.a0 >= this.a1) {\n this.a0 = NaN;\n this.a1 = NaN;\n }\n }\n isValid() {\n return Number.isFinite(this.a0) && Number.isFinite(this.a1);\n }\n pointAt(a) {\n return {\n x: this.cx + this.r * Math.cos(a),\n y: this.cy + this.r * Math.sin(a)\n };\n }\n clipStart(a) {\n if (a == null || !this.isValid() || a < this.a0) return;\n this.a0 = a;\n if (Number.isNaN(a) || this.a0 >= this.a1) {\n this.a0 = NaN;\n this.a1 = NaN;\n }\n }\n clipEnd(a) {\n if (a == null || !this.isValid() || a > this.a1) return;\n this.a1 = a;\n if (Number.isNaN(a) || this.a0 >= this.a1) {\n this.a0 = NaN;\n this.a1 = NaN;\n }\n }\n};\nvar Sector = class extends Path {\n constructor() {\n super(...arguments);\n this.centerX = 0;\n this.centerY = 0;\n this.innerRadius = 10;\n this.outerRadius = 20;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clipSector = void 0;\n this.concentricEdgeInset = 0;\n this.radialEdgeInset = 0;\n this.startOuterCornerRadius = 0;\n this.endOuterCornerRadius = 0;\n this.startInnerCornerRadius = 0;\n this.endInnerCornerRadius = 0;\n }\n set inset(value) {\n this.concentricEdgeInset = value;\n this.radialEdgeInset = value;\n }\n set cornerRadius(value) {\n this.startOuterCornerRadius = value;\n this.endOuterCornerRadius = value;\n this.startInnerCornerRadius = value;\n this.endInnerCornerRadius = value;\n }\n computeBBox() {\n const radius = this.outerRadius;\n return new BBox(this.centerX - radius, this.centerY - radius, radius * 2, radius * 2);\n }\n normalizedRadii() {\n const {\n concentricEdgeInset\n } = this;\n return {\n innerRadius: Math.max(Math.min(this.innerRadius, this.outerRadius) + concentricEdgeInset, 0),\n outerRadius: Math.max(Math.max(this.innerRadius, this.outerRadius) - concentricEdgeInset, 0)\n };\n }\n normalizedClipSector() {\n const {\n clipSector\n } = this;\n if (clipSector == null) return;\n const {\n startAngle,\n endAngle\n } = clockwiseAngles(this.startAngle, this.endAngle);\n const {\n innerRadius,\n outerRadius\n } = this.normalizedRadii();\n const clipAngles = clockwiseAngles(clipSector.startAngle, clipSector.endAngle, startAngle);\n return new SectorBox(Math.max(startAngle, clipAngles.startAngle), Math.min(endAngle, clipAngles.endAngle), Math.max(innerRadius, clipSector.innerRadius), Math.min(outerRadius, clipSector.outerRadius));\n }\n getAngleOffset(radius) {\n return radius > 0 ? this.radialEdgeInset / radius : 0;\n }\n arc(r, angleSweep, a0, a1, outerArc, innerArc, start, inner) {\n if (r <= 0) return;\n const {\n startAngle,\n endAngle\n } = clockwiseAngles(this.startAngle, this.endAngle);\n const {\n innerRadius,\n outerRadius\n } = this.normalizedRadii();\n const clipSector = this.normalizedClipSector();\n if (inner && innerRadius <= 0) return;\n const innerAngleOffset = this.getAngleOffset(innerRadius);\n const outerAngleOffset = this.getAngleOffset(outerRadius);\n const angleOffset = inner ? this.getAngleOffset(innerRadius + r) : this.getAngleOffset(outerRadius - r);\n const angle = start ? startAngle + angleOffset + angleSweep : endAngle - angleOffset - angleSweep;\n const radius = inner ? innerRadius + r : outerRadius - r;\n const cx = radius * Math.cos(angle);\n const cy = radius * Math.sin(angle);\n if (clipSector != null) {\n const delta2 = 1e-6;\n if (!start && !(angle >= startAngle - delta2 && angle <= clipSector.endAngle - delta2)) return;\n if (start && !(angle >= clipSector.startAngle + delta2 && angle <= endAngle - delta2)) return;\n if (inner && !(radius >= clipSector.innerRadius - delta2)) return;\n if (!inner && !(radius <= clipSector.outerRadius + delta2)) return;\n }\n const arc = new Arc(cx, cy, r, a0, a1);\n if (clipSector != null) {\n if (inner) {\n arc.clipStart(arcRadialLineIntersectionAngle(cx, cy, r, a0, a1, clipSector.endAngle - innerAngleOffset));\n arc.clipEnd(arcRadialLineIntersectionAngle(cx, cy, r, a0, a1, clipSector.startAngle + innerAngleOffset));\n } else {\n arc.clipStart(arcRadialLineIntersectionAngle(cx, cy, r, a0, a1, clipSector.startAngle + outerAngleOffset));\n arc.clipEnd(arcRadialLineIntersectionAngle(cx, cy, r, a0, a1, clipSector.endAngle - outerAngleOffset));\n }\n let circleClipStart;\n let circleClipEnd;\n if (start) {\n circleClipStart = arcCircleIntersectionAngle(cx, cy, r, a0, a1, clipSector.innerRadius);\n circleClipEnd = arcCircleIntersectionAngle(cx, cy, r, a0, a1, clipSector.outerRadius);\n } else {\n circleClipStart = arcCircleIntersectionAngle(cx, cy, r, a0, a1, clipSector.outerRadius);\n circleClipEnd = arcCircleIntersectionAngle(cx, cy, r, a0, a1, clipSector.innerRadius);\n }\n arc.clipStart(circleClipStart);\n arc.clipEnd(circleClipEnd);\n if (circleClipStart != null) {\n const {\n x: x2,\n y: y2\n } = arc.pointAt(circleClipStart);\n const theta2 = clockwiseAngle(Math.atan2(y2, x2), startAngle);\n if (start) {\n innerArc == null ? void 0 : innerArc.clipStart(theta2);\n } else {\n outerArc.clipEnd(theta2);\n }\n }\n if (circleClipEnd != null) {\n const {\n x: x2,\n y: y2\n } = arc.pointAt(circleClipEnd);\n const theta2 = clockwiseAngle(Math.atan2(y2, x2), startAngle);\n if (start) {\n outerArc.clipStart(theta2);\n } else {\n innerArc == null ? void 0 : innerArc.clipEnd(theta2);\n }\n }\n }\n if (clipSector != null) {\n const {\n x: x2,\n y: y2\n } = arc.pointAt((arc.a0 + arc.a1) / 2);\n if (!isPointInSector(x2, y2, clipSector)) return;\n }\n const {\n x,\n y\n } = arc.pointAt(start === inner ? arc.a0 : arc.a1);\n const theta = clockwiseAngle(Math.atan2(y, x), startAngle);\n const radialArc = inner ? innerArc : outerArc;\n if (start) {\n radialArc == null ? void 0 : radialArc.clipStart(theta);\n } else {\n radialArc == null ? void 0 : radialArc.clipEnd(theta);\n }\n return arc;\n }\n updatePath() {\n var _a, _b, _c, _d, _e;\n const delta2 = 1e-6;\n const {\n path,\n centerX,\n centerY,\n concentricEdgeInset,\n radialEdgeInset\n } = this;\n let {\n startOuterCornerRadius,\n endOuterCornerRadius,\n startInnerCornerRadius,\n endInnerCornerRadius\n } = this;\n const {\n startAngle,\n endAngle\n } = clockwiseAngles(this.startAngle, this.endAngle);\n const {\n innerRadius,\n outerRadius\n } = this.normalizedRadii();\n const clipSector = this.normalizedClipSector();\n const sweepAngle = endAngle - startAngle;\n const fullPie = sweepAngle >= 2 * Math.PI - delta2;\n path.clear();\n if (((_a = clipSector == null ? void 0 : clipSector.startAngle) != null ? _a : startAngle) === ((_b = clipSector == null ? void 0 : clipSector.endAngle) != null ? _b : endAngle)) {\n return;\n } else if (fullPie && this.clipSector == null && startOuterCornerRadius === 0 && endOuterCornerRadius === 0 && startInnerCornerRadius === 0 && endInnerCornerRadius === 0) {\n path.moveTo(centerX + outerRadius * Math.cos(startAngle), centerY + outerRadius * Math.sin(startAngle));\n path.arc(centerX, centerY, outerRadius, startAngle, endAngle);\n if (innerRadius > concentricEdgeInset) {\n path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n path.arc(centerX, centerY, innerRadius, endAngle, startAngle, true);\n }\n path.closePath();\n return;\n }\n const innerAngleOffset = this.getAngleOffset(innerRadius);\n const outerAngleOffset = this.getAngleOffset(outerRadius);\n const outerAngleExceeded = sweepAngle < 2 * outerAngleOffset;\n if (outerAngleExceeded) return;\n const hasInnerSweep = ((_c = clipSector == null ? void 0 : clipSector.innerRadius) != null ? _c : innerRadius) > concentricEdgeInset;\n const innerAngleExceeded = innerRadius < concentricEdgeInset || sweepAngle < 2 * innerAngleOffset;\n const radialLength = outerRadius - innerRadius;\n const maxRadialLength = Math.max(startOuterCornerRadius, startInnerCornerRadius, endOuterCornerRadius, endInnerCornerRadius);\n const initialScalingFactor = maxRadialLength > 0 ? Math.min(radialLength / maxRadialLength, 1) : 1;\n startOuterCornerRadius *= initialScalingFactor;\n endOuterCornerRadius *= initialScalingFactor;\n startInnerCornerRadius *= initialScalingFactor;\n endInnerCornerRadius *= initialScalingFactor;\n const outerScalingFactor = radiiScalingFactor(outerRadius, sweepAngle - 2 * outerAngleOffset, -startOuterCornerRadius, -endOuterCornerRadius);\n startOuterCornerRadius *= outerScalingFactor;\n endOuterCornerRadius *= outerScalingFactor;\n if (!innerAngleExceeded && hasInnerSweep) {\n const innerScalingFactor = radiiScalingFactor(innerRadius, sweepAngle - 2 * innerAngleOffset, startInnerCornerRadius, endInnerCornerRadius);\n startInnerCornerRadius *= innerScalingFactor;\n endInnerCornerRadius *= innerScalingFactor;\n } else {\n startInnerCornerRadius = 0;\n endInnerCornerRadius = 0;\n }\n const maxCombinedRadialLength = Math.max(startOuterCornerRadius + startInnerCornerRadius, endOuterCornerRadius + endInnerCornerRadius);\n const edgesScalingFactor = maxCombinedRadialLength > 0 ? Math.min(radialLength / maxCombinedRadialLength, 1) : 1;\n startOuterCornerRadius *= edgesScalingFactor;\n endOuterCornerRadius *= edgesScalingFactor;\n startInnerCornerRadius *= edgesScalingFactor;\n endInnerCornerRadius *= edgesScalingFactor;\n let startOuterCornerRadiusAngleSweep = 0;\n let endOuterCornerRadiusAngleSweep = 0;\n const startOuterCornerRadiusSweep = startOuterCornerRadius / (outerRadius - startOuterCornerRadius);\n const endOuterCornerRadiusSweep = endOuterCornerRadius / (outerRadius - endOuterCornerRadius);\n if (startOuterCornerRadiusSweep >= 0 && startOuterCornerRadiusSweep < 1 - delta2) {\n startOuterCornerRadiusAngleSweep = Math.asin(startOuterCornerRadiusSweep);\n } else {\n startOuterCornerRadiusAngleSweep = sweepAngle / 2;\n const maxStartOuterCornerRadius = outerRadius / (1 / Math.sin(startOuterCornerRadiusAngleSweep) + 1);\n startOuterCornerRadius = Math.min(maxStartOuterCornerRadius, startOuterCornerRadius);\n }\n if (endOuterCornerRadiusSweep >= 0 && endOuterCornerRadiusSweep < 1 - delta2) {\n endOuterCornerRadiusAngleSweep = Math.asin(endOuterCornerRadiusSweep);\n } else {\n endOuterCornerRadiusAngleSweep = sweepAngle / 2;\n const maxEndOuterCornerRadius = outerRadius / (1 / Math.sin(endOuterCornerRadiusAngleSweep) + 1);\n endOuterCornerRadius = Math.min(maxEndOuterCornerRadius, endOuterCornerRadius);\n }\n const startInnerCornerRadiusAngleSweep = Math.asin(startInnerCornerRadius / (innerRadius + startInnerCornerRadius));\n const endInnerCornerRadiusAngleSweep = Math.asin(endInnerCornerRadius / (innerRadius + endInnerCornerRadius));\n const outerArcRadius = (_d = clipSector == null ? void 0 : clipSector.outerRadius) != null ? _d : outerRadius;\n const outerArcRadiusOffset = this.getAngleOffset(outerArcRadius);\n const outerArc = new Arc(0, 0, outerArcRadius, startAngle + outerArcRadiusOffset, endAngle - outerArcRadiusOffset);\n const innerArcRadius = (_e = clipSector == null ? void 0 : clipSector.innerRadius) != null ? _e : innerRadius;\n const innerArcRadiusOffset = this.getAngleOffset(innerArcRadius);\n const innerArc = hasInnerSweep ? new Arc(0, 0, innerArcRadius, startAngle + innerArcRadiusOffset, endAngle - innerArcRadiusOffset) : void 0;\n if (clipSector != null) {\n outerArc.clipStart(clipSector.startAngle);\n outerArc.clipEnd(clipSector.endAngle);\n innerArc == null ? void 0 : innerArc.clipStart(clipSector.startAngle);\n innerArc == null ? void 0 : innerArc.clipEnd(clipSector.endAngle);\n }\n const startOuterArc = this.arc(startOuterCornerRadius, startOuterCornerRadiusAngleSweep, startAngle - Math.PI * 0.5, startAngle + startOuterCornerRadiusAngleSweep, outerArc, innerArc, true, false);\n const endOuterArc = this.arc(endOuterCornerRadius, endOuterCornerRadiusAngleSweep, endAngle - endOuterCornerRadiusAngleSweep, endAngle + Math.PI * 0.5, outerArc, innerArc, false, false);\n const endInnerArc = this.arc(endInnerCornerRadius, endInnerCornerRadiusAngleSweep, endAngle + Math.PI * 0.5, endAngle + Math.PI - endInnerCornerRadiusAngleSweep, outerArc, innerArc, false, true);\n const startInnerArc = this.arc(startInnerCornerRadius, startInnerCornerRadiusAngleSweep, startAngle + Math.PI + startInnerCornerRadiusAngleSweep, startAngle + Math.PI * 1.5, outerArc, innerArc, true, true);\n if (innerAngleExceeded) {\n const x = sweepAngle < Math.PI * 0.5 ? radialEdgeInset * (1 + Math.cos(sweepAngle)) / Math.sin(sweepAngle) : NaN;\n let r;\n if (x > 0 && x < outerRadius) {\n r = Math.max(Math.hypot(radialEdgeInset, x), innerRadius);\n } else {\n r = innerRadius;\n }\n const midAngle = startAngle + sweepAngle * 0.5;\n path.moveTo(centerX + r * Math.cos(midAngle), centerY + r * Math.sin(midAngle));\n } else if ((startInnerArc == null ? void 0 : startInnerArc.isValid()) === true) {\n const {\n x,\n y\n } = startInnerArc.pointAt(startInnerArc.a1);\n path.moveTo(centerX + x, centerY + y);\n } else if ((innerArc == null ? void 0 : innerArc.isValid()) === true) {\n const {\n x,\n y\n } = innerArc.pointAt(innerArc.a0);\n path.moveTo(centerX + x, centerY + y);\n } else {\n const midAngle = startAngle + sweepAngle / 2;\n const cx = innerRadius * Math.cos(midAngle);\n const cy = innerRadius * Math.sin(midAngle);\n path.moveTo(centerX + cx, centerY + cy);\n }\n if ((startOuterArc == null ? void 0 : startOuterArc.isValid()) === true) {\n const {\n cx,\n cy,\n r,\n a0,\n a1\n } = startOuterArc;\n path.arc(centerX + cx, centerY + cy, r, a0, a1);\n }\n if (outerArc.isValid()) {\n const {\n r,\n a0,\n a1\n } = outerArc;\n path.arc(centerX, centerY, r, a0, a1);\n }\n if ((endOuterArc == null ? void 0 : endOuterArc.isValid()) === true) {\n const {\n cx,\n cy,\n r,\n a0,\n a1\n } = endOuterArc;\n path.arc(centerX + cx, centerY + cy, r, a0, a1);\n }\n if (!innerAngleExceeded) {\n if ((endInnerArc == null ? void 0 : endInnerArc.isValid()) === true) {\n const {\n cx,\n cy,\n r,\n a0,\n a1\n } = endInnerArc;\n path.arc(centerX + cx, centerY + cy, r, a0, a1);\n }\n if ((innerArc == null ? void 0 : innerArc.isValid()) === true) {\n const {\n r,\n a0,\n a1\n } = innerArc;\n path.arc(centerX, centerY, r, a1, a0, true);\n }\n if ((startInnerArc == null ? void 0 : startInnerArc.isValid()) === true) {\n const {\n cx,\n cy,\n r,\n a0,\n a1\n } = startInnerArc;\n path.arc(centerX + cx, centerY + cy, r, a0, a1);\n }\n }\n path.closePath();\n }\n isPointInPath(x, y) {\n var _a;\n const point = this.transformPoint(x, y);\n const {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n } = (_a = this.clipSector) != null ? _a : this;\n return isPointInSector(point.x, point.y, {\n startAngle,\n endAngle,\n innerRadius: Math.min(innerRadius, outerRadius),\n outerRadius: Math.max(innerRadius, outerRadius)\n });\n }\n};\nSector.className = \"Sector\";\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"centerX\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"centerY\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"innerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"outerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"startAngle\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"endAngle\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"clipSector\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"concentricEdgeInset\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"radialEdgeInset\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"startOuterCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"endOuterCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"startInnerCornerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], Sector.prototype, \"endInnerCornerRadius\", 2);\n\n// packages/ag-charts-community/src/chart/series/polar/donutSeriesProperties.ts\nvar DonutTitle = class extends Caption {\n constructor() {\n super(...arguments);\n this.showInLegend = false;\n }\n};\n__decorateClass([Validate(BOOLEAN)], DonutTitle.prototype, \"showInLegend\", 2);\nvar DonutInnerLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.margin = 2;\n }\n set(properties, _reset) {\n return super.set(properties);\n }\n};\n__decorateClass([Validate(STRING)], DonutInnerLabel.prototype, \"text\", 2);\n__decorateClass([Validate(NUMBER)], DonutInnerLabel.prototype, \"margin\", 2);\nvar DonutInnerCircle = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.fill = \"transparent\";\n this.fillOpacity = 1;\n }\n};\n__decorateClass([Validate(COLOR_STRING)], DonutInnerCircle.prototype, \"fill\", 2);\n__decorateClass([Validate(RATIO)], DonutInnerCircle.prototype, \"fillOpacity\", 2);\nvar DonutSeriesCalloutLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.offset = 3;\n this.minAngle = 0;\n this.minSpacing = 4;\n this.maxCollisionOffset = 50;\n this.avoidCollisions = true;\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesCalloutLabel.prototype, \"offset\", 2);\n__decorateClass([Validate(DEGREE)], DonutSeriesCalloutLabel.prototype, \"minAngle\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesCalloutLabel.prototype, \"minSpacing\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesCalloutLabel.prototype, \"maxCollisionOffset\", 2);\n__decorateClass([Validate(BOOLEAN)], DonutSeriesCalloutLabel.prototype, \"avoidCollisions\", 2);\nvar DonutSeriesSectorLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.positionOffset = 0;\n this.positionRatio = 0.5;\n }\n};\n__decorateClass([Validate(NUMBER)], DonutSeriesSectorLabel.prototype, \"positionOffset\", 2);\n__decorateClass([Validate(RATIO)], DonutSeriesSectorLabel.prototype, \"positionRatio\", 2);\nvar DonutSeriesCalloutLine = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.length = 10;\n this.strokeWidth = 1;\n }\n};\n__decorateClass([Validate(COLOR_STRING_ARRAY, {\n optional: true\n})], DonutSeriesCalloutLine.prototype, \"colors\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesCalloutLine.prototype, \"length\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesCalloutLine.prototype, \"strokeWidth\", 2);\nvar DonutSeriesProperties = class extends SeriesProperties {\n constructor() {\n super(...arguments);\n this.fills = Object.values(DEFAULT_FILLS);\n this.strokes = Object.values(DEFAULT_STROKES);\n this.fillOpacity = 1;\n this.strokeOpacity = 1;\n this.lineDash = [0];\n this.lineDashOffset = 0;\n this.cornerRadius = 0;\n this.rotation = 0;\n this.outerRadiusOffset = 0;\n this.outerRadiusRatio = 1;\n this.strokeWidth = 1;\n this.sectorSpacing = void 0;\n this.innerLabels = new PropertiesArray(DonutInnerLabel);\n this.title = new DonutTitle();\n this.innerCircle = new DonutInnerCircle();\n this.shadow = new DropShadow();\n this.calloutLabel = new DonutSeriesCalloutLabel();\n this.sectorLabel = new DonutSeriesSectorLabel();\n this.calloutLine = new DonutSeriesCalloutLine();\n this.tooltip = new SeriesTooltip();\n this.__BACKGROUND_COLOR_DO_NOT_USE = void 0;\n }\n isValid() {\n const superIsValid = super.isValid();\n if (this.innerRadiusRatio == null && this.innerRadiusOffset == null) {\n Logger.warnOnce(\"Either an [innerRadiusRatio] or an [innerRadiusOffset] must be set to render a donut series.\");\n return false;\n }\n return superIsValid;\n }\n};\n__decorateClass([Validate(STRING)], DonutSeriesProperties.prototype, \"angleKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"angleName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"radiusKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"radiusName\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], DonutSeriesProperties.prototype, \"radiusMin\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], DonutSeriesProperties.prototype, \"radiusMax\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"calloutLabelKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"calloutLabelName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"sectorLabelKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"sectorLabelName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"legendItemKey\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], DonutSeriesProperties.prototype, \"fills\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], DonutSeriesProperties.prototype, \"strokes\", 2);\n__decorateClass([Validate(RATIO)], DonutSeriesProperties.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(RATIO)], DonutSeriesProperties.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH)], DonutSeriesProperties.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesProperties.prototype, \"lineDashOffset\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesProperties.prototype, \"cornerRadius\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], DonutSeriesProperties.prototype, \"formatter\", 2);\n__decorateClass([Validate(DEGREE)], DonutSeriesProperties.prototype, \"rotation\", 2);\n__decorateClass([Validate(NUMBER)], DonutSeriesProperties.prototype, \"outerRadiusOffset\", 2);\n__decorateClass([Validate(RATIO)], DonutSeriesProperties.prototype, \"outerRadiusRatio\", 2);\n__decorateClass([Validate(NUMBER, {\n optional: true\n})], DonutSeriesProperties.prototype, \"innerRadiusOffset\", 2);\n__decorateClass([Validate(RATIO, {\n optional: true\n})], DonutSeriesProperties.prototype, \"innerRadiusRatio\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], DonutSeriesProperties.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], DonutSeriesProperties.prototype, \"sectorSpacing\", 2);\n__decorateClass([Validate(OBJECT_ARRAY)], DonutSeriesProperties.prototype, \"innerLabels\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"title\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"innerCircle\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"shadow\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"calloutLabel\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"sectorLabel\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"calloutLine\", 2);\n__decorateClass([Validate(OBJECT)], DonutSeriesProperties.prototype, \"tooltip\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], DonutSeriesProperties.prototype, \"__BACKGROUND_COLOR_DO_NOT_USE\", 2);\n\n// packages/ag-charts-community/src/chart/series/polar/pieUtil.ts\nfunction preparePieSeriesAnimationFunctions(initialLoad, rotationDegrees, scaleFn, oldScaleFn) {\n const scale2 = [scaleFn.convert(0), scaleFn.convert(1)];\n const oldScale = [oldScaleFn.convert(0), oldScaleFn.convert(1)];\n const rotation = Math.PI / -2 + toRadians(rotationDegrees);\n const phase = initialLoad ? \"initial\" : \"update\";\n const scaleToNewRadius = ({\n radius\n }) => {\n return {\n innerRadius: scale2[0],\n outerRadius: scale2[0] + (scale2[1] - scale2[0]) * radius\n };\n };\n const scaleToOldRadius = ({\n radius\n }) => {\n return {\n innerRadius: oldScale[0],\n outerRadius: oldScale[0] + (oldScale[1] - oldScale[0]) * radius\n };\n };\n const fromFn = (sect, datum, status, {\n prevFromProps\n }) => {\n var _a, _b, _c, _d, _e, _f;\n let {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n } = sect;\n let {\n fill,\n stroke\n } = datum.sectorFormat;\n if (status === \"unknown\" || status === \"added\" && !prevFromProps) {\n startAngle = rotation;\n endAngle = rotation;\n innerRadius = datum.innerRadius;\n outerRadius = datum.outerRadius;\n } else if (status === \"added\" && prevFromProps) {\n startAngle = (_a = prevFromProps.endAngle) != null ? _a : rotation;\n endAngle = (_b = prevFromProps.endAngle) != null ? _b : rotation;\n innerRadius = (_c = prevFromProps.innerRadius) != null ? _c : datum.innerRadius;\n outerRadius = (_d = prevFromProps.outerRadius) != null ? _d : datum.outerRadius;\n }\n if (status === \"added\" && !initialLoad) {\n const radii = scaleToOldRadius(datum);\n innerRadius = radii.innerRadius;\n outerRadius = radii.outerRadius;\n }\n if (status === \"updated\") {\n fill = (_e = sect.fill) != null ? _e : fill;\n stroke = (_f = sect.stroke) != null ? _f : stroke;\n }\n return {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n fill,\n stroke,\n phase\n };\n };\n const toFn = (_sect, datum, status, {\n prevLive\n }) => {\n var _a, _b;\n let {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n } = datum;\n const {\n stroke,\n fill\n } = datum.sectorFormat;\n if (status === \"removed\" && prevLive) {\n startAngle = (_a = prevLive.datum) == null ? void 0 : _a.endAngle;\n endAngle = (_b = prevLive.datum) == null ? void 0 : _b.endAngle;\n } else if (status === \"removed\" && !prevLive) {\n startAngle = rotation;\n endAngle = rotation;\n }\n if (status === \"removed\") {\n const radii = scaleToNewRadius(datum);\n innerRadius = radii.innerRadius;\n outerRadius = radii.outerRadius;\n }\n return {\n startAngle,\n endAngle,\n outerRadius,\n innerRadius,\n stroke,\n fill\n };\n };\n const innerCircleFromFn = (node, _) => {\n var _a, _b, _c;\n return {\n size: (_c = (_b = (_a = node.previousDatum) == null ? void 0 : _a.radius) != null ? _b : node.size) != null ? _c : 0,\n phase\n };\n };\n const innerCircleToFn = (_, datum) => {\n var _a;\n return {\n size: (_a = datum.radius) != null ? _a : 0\n };\n };\n return {\n nodes: {\n toFn,\n fromFn\n },\n innerCircle: {\n fromFn: innerCircleFromFn,\n toFn: innerCircleToFn\n }\n };\n}\nfunction resetPieSelectionsFn(_node, datum) {\n return {\n startAngle: datum.startAngle,\n endAngle: datum.endAngle,\n innerRadius: datum.innerRadius,\n outerRadius: datum.outerRadius,\n fill: datum.sectorFormat.fill,\n stroke: datum.sectorFormat.stroke\n };\n}\nfunction pickByMatchingAngle(series, point) {\n const dy = point.y - series.centerY;\n const dx = point.x - series.centerX;\n const angle = Math.atan2(dy, dx);\n const sectors = series.getItemNodes();\n for (const sector of sectors) {\n if (sector.datum.missing === true) continue;\n if (isBetweenAngles(angle, sector.startAngle, sector.endAngle)) {\n const radius = Math.sqrt(dx * dx + dy * dy);\n let distance2 = 0;\n if (radius < sector.innerRadius) {\n distance2 = sector.innerRadius - radius;\n } else if (radius > sector.outerRadius) {\n distance2 = radius - sector.outerRadius;\n }\n return {\n datum: sector.datum,\n distance: distance2\n };\n }\n }\n return void 0;\n}\nfunction computeSectorFocusBounds(series, opts) {\n const nodeData = series.getNodeData();\n if (nodeData === void 0) return void 0;\n const {\n centerX,\n centerY\n } = series;\n const datum = nodeData[opts.datumIndex];\n const pointVars = [{\n radius: datum.innerRadius,\n angle: datum.startAngle\n }, {\n radius: datum.innerRadius,\n angle: datum.endAngle\n }, {\n radius: datum.outerRadius,\n angle: datum.startAngle\n }, {\n radius: datum.outerRadius,\n angle: datum.endAngle\n }];\n const rightAngles = [0, Math.PI / 2, Math.PI, 3 * Math.PI / 2];\n for (const rightAngle of rightAngles) {\n if (isBetweenAngles(rightAngle, datum.startAngle, datum.endAngle)) {\n pointVars.push({\n radius: datum.outerRadius,\n angle: rightAngle\n });\n }\n }\n const points = pointVars.map(({\n radius,\n angle\n }) => displacePointFromVector(centerX, centerY, radius, angle));\n const xs = points.map(p => p.x);\n const ys = points.map(p => p.y);\n const x = Math.min(...xs);\n const y = Math.min(...ys);\n const width = Math.max(...xs) - x;\n const height = Math.max(...ys) - y;\n return new BBox(x, y, width, height);\n}\n\n// packages/ag-charts-community/src/chart/series/polar/polarSeries.ts\nvar PolarSeries = class extends DataModelSeries {\n constructor(_a) {\n var _b = _a,\n {\n useLabelLayer = false,\n pickModes = [0 /* EXACT_SHAPE_MATCH */],\n canHaveAxes = false,\n animationResetFns\n } = _b,\n opts = __objRest(_b, [\"useLabelLayer\", \"pickModes\", \"canHaveAxes\", \"animationResetFns\"]);\n super(__spreadProps(__spreadValues({}, opts), {\n useLabelLayer,\n pickModes,\n contentGroupVirtual: false,\n directionKeys: {\n [\"x\" /* X */]: [\"angleKey\"],\n [\"y\" /* Y */]: [\"radiusKey\"]\n },\n directionNames: {\n [\"x\" /* X */]: [\"angleName\"],\n [\"y\" /* Y */]: [\"radiusName\"]\n },\n canHaveAxes\n }));\n this.itemGroup = this.contentGroup.appendChild(new Group());\n this.nodeData = [];\n this.itemSelection = Selection.select(this.itemGroup, () => this.nodeFactory(), false);\n this.labelSelection = Selection.select(this.labelGroup, Text, false);\n this.highlightSelection = Selection.select(this.highlightGroup, () => this.nodeFactory());\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 this.showFocusBox = false;\n this.itemGroup.zIndexSubOrder = [() => this._declarationOrder, 1];\n this.animationResetFns = animationResetFns;\n this.animationState = new StateMachine(\"empty\", {\n empty: {\n update: {\n target: \"ready\",\n action: data => this.animateEmptyUpdateReady(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n },\n ready: {\n updateData: \"waiting\",\n clear: \"clearing\",\n highlight: data => this.animateReadyHighlight(data),\n highlightMarkers: data => this.animateReadyHighlightMarkers(data),\n resize: data => this.animateReadyResize(data),\n reset: \"empty\",\n skip: \"ready\"\n },\n waiting: {\n update: {\n target: \"ready\",\n action: data => this.animateWaitingUpdateReady(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n },\n clearing: {\n update: {\n target: \"empty\",\n action: data => this.animateClearingUpdateEmpty(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n }\n }, () => this.checkProcessedDataAnimatable());\n }\n getItemNodes() {\n return this.itemGroup.children;\n }\n getNodeData() {\n return this.nodeData;\n }\n resetAnimation(phase) {\n if (phase === \"initial\") {\n this.animationState.transition(\"reset\");\n } else if (phase === \"ready\") {\n this.animationState.transition(\"skip\");\n }\n }\n getLabelData() {\n return [];\n }\n computeLabelsBBox(_options, _seriesRect) {\n return null;\n }\n resetAllAnimation() {\n var _a;\n const {\n item,\n label\n } = (_a = this.animationResetFns) != null ? _a : {};\n this.ctx.animationManager.stopByAnimationGroupId(this.id);\n if (item) {\n resetMotion([this.itemSelection, this.highlightSelection], item);\n }\n if (label) {\n resetMotion([this.labelSelection], label);\n }\n this.itemSelection.cleanup();\n this.labelSelection.cleanup();\n this.highlightSelection.cleanup();\n }\n animateEmptyUpdateReady(_data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation();\n }\n animateWaitingUpdateReady(_data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation();\n }\n animateReadyHighlight(_data) {\n var _a;\n const {\n item\n } = (_a = this.animationResetFns) != null ? _a : {};\n if (item) {\n resetMotion([this.highlightSelection], item);\n }\n }\n animateReadyHighlightMarkers(_data) {}\n animateReadyResize(_data) {\n this.resetAllAnimation();\n }\n animateClearingUpdateEmpty(_data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation();\n }\n animationTransitionClear() {\n this.animationState.transition(\"clear\", this.getAnimationData());\n }\n getAnimationData(seriesRect) {\n return {\n seriesRect\n };\n }\n};\n\n// packages/ag-charts-community/src/chart/series/polar/donutSeries.ts\nvar DonutSeriesNodeEvent = class extends SeriesNodeEvent {\n constructor(type, nativeEvent, datum, series) {\n super(type, nativeEvent, datum, series);\n this.angleKey = series.properties.angleKey;\n this.radiusKey = series.properties.radiusKey;\n this.calloutLabelKey = series.properties.calloutLabelKey;\n this.sectorLabelKey = series.properties.sectorLabelKey;\n }\n};\nvar DonutSeries = class extends PolarSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n pickModes: [0 /* EXACT_SHAPE_MATCH */],\n useLabelLayer: true,\n animationResetFns: {\n item: resetPieSelectionsFn,\n label: resetLabelFn\n }\n });\n this.properties = new DonutSeriesProperties();\n this.previousRadiusScale = new LinearScale();\n this.radiusScale = new LinearScale();\n // The group node that contains the background graphics.\n this.backgroundGroup = this.rootGroup.appendChild(new Group({\n name: `${this.id}-background`,\n layer: true,\n zIndex: 0 /* SERIES_BACKGROUND_ZINDEX */\n }));\n // AG-6193 If the sum of all datums is 0, then we'll draw 1 or 2 rings to represent the empty series.\n this.zerosumRingsGroup = this.backgroundGroup.appendChild(new Group({\n name: `${this.id}-zerosumRings`\n }));\n this.zerosumOuterRing = this.zerosumRingsGroup.appendChild(new Circle());\n this.zerosumInnerRing = this.zerosumRingsGroup.appendChild(new Circle());\n this.innerCircleGroup = this.backgroundGroup.appendChild(new Group({\n name: `${this.id}-innerCircle`\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.surroundingRadius = void 0;\n this.NodeEvent = DonutSeriesNodeEvent;\n this.angleScale = new LinearScale();\n this.angleScale.domain = [0, 1];\n this.angleScale.range = [-Math.PI, Math.PI].map(angle => angle + Math.PI / 2);\n const pieCalloutLabels = new Group({\n name: \"pieCalloutLabels\"\n });\n const pieSectorLabels = new Group({\n name: \"pieSectorLabels\"\n });\n const innerLabels = new Group({\n name: \"innerLabels\"\n });\n this.labelGroup.append(pieCalloutLabels);\n this.labelGroup.append(pieSectorLabels);\n this.labelGroup.append(innerLabels);\n this.calloutLabelSelection = Selection.select(pieCalloutLabels, Group);\n this.sectorLabelSelection = Selection.select(pieSectorLabels, Text);\n this.innerLabelsSelection = Selection.select(innerLabels, Text);\n this.innerCircleSelection = Selection.select(this.innerCircleGroup, Circle);\n }\n addChartEventListeners() {\n var _a;\n this.destroyFns.push((_a = this.ctx.chartEventManager) == null ? void 0 : _a.addListener(\"legend-item-click\", event => this.onLegendItemClick(event)));\n }\n get visible() {\n return super.visible && (this.seriesItemEnabled.length === 0 || this.seriesItemEnabled.some(visible => visible));\n }\n nodeFactory() {\n return new Sector();\n }\n getSeriesDomain(direction) {\n if (direction === \"x\" /* X */) {\n return this.angleScale.domain;\n } else {\n return this.radiusScale.domain;\n }\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b, _c, _d, _e;\n if (this.data == null || !this.properties.isValid()) {\n return;\n }\n let {\n data\n } = this;\n const {\n visible,\n seriesItemEnabled\n } = this;\n const {\n angleKey,\n radiusKey,\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const extraKeyProps = [];\n const extraProps = [];\n if (legendItemKey) {\n extraKeyProps.push(keyProperty(legendItemKey, \"band\", {\n id: `legendItemKey`\n }));\n } else if (calloutLabelKey) {\n extraKeyProps.push(keyProperty(calloutLabelKey, \"band\", {\n id: `calloutLabelKey`\n }));\n } else if (sectorLabelKey) {\n extraKeyProps.push(keyProperty(sectorLabelKey, \"band\", {\n id: `sectorLabelKey`\n }));\n }\n const radiusScaleType = this.radiusScale.type;\n const angleScaleType = this.radiusScale.type;\n if (radiusKey) {\n extraProps.push(rangedValueProperty(radiusKey, {\n id: \"radiusValue\",\n min: (_a = this.properties.radiusMin) != null ? _a : 0,\n max: this.properties.radiusMax\n }), valueProperty(radiusKey, radiusScaleType, {\n id: `radiusRaw`\n }),\n // Raw value pass-through.\n normalisePropertyTo({\n id: \"radiusValue\"\n }, [0, 1], 1, (_b = this.properties.radiusMin) != null ? _b : 0, this.properties.radiusMax));\n }\n if (calloutLabelKey) {\n extraProps.push(valueProperty(calloutLabelKey, \"band\", {\n id: `calloutLabelValue`\n }));\n }\n if (sectorLabelKey) {\n extraProps.push(valueProperty(sectorLabelKey, \"band\", {\n id: `sectorLabelValue`\n }));\n }\n if (legendItemKey) {\n extraProps.push(valueProperty(legendItemKey, \"band\", {\n id: `legendItemValue`\n }));\n }\n if (animationEnabled && this.processedData && extraKeyProps.length > 0) {\n extraProps.push(diff(this.processedData));\n }\n extraProps.push(animationValidation());\n data = data.map((d, idx) => visible && seriesItemEnabled[idx] ? d : __spreadProps(__spreadValues({}, d), {\n [angleKey]: 0\n }));\n yield this.requestDataModel(dataController, data, {\n props: [...extraKeyProps, accumulativeValueProperty(angleKey, angleScaleType, {\n id: `angleValue`,\n onlyPositive: true\n }), valueProperty(angleKey, angleScaleType, {\n id: `angleRaw`\n }),\n // Raw value pass-through.\n normalisePropertyTo({\n id: \"angleValue\"\n }, [0, 1], 0, 0), ...extraProps]\n });\n for (const valueDef of (_e = (_d = (_c = this.processedData) == null ? void 0 : _c.defs) == null ? void 0 : _d.values) != null ? _e : []) {\n const {\n id,\n missing,\n property\n } = valueDef;\n const missCount = getMissCount(this, missing);\n if (id !== \"angleRaw\" && missCount > 0) {\n Logger.warnOnce(`no value was found for the key '${String(property)}' on ${missCount} data element${missCount > 1 ? \"s\" : \"\"}`);\n }\n }\n this.animationState.transition(\"updateData\");\n });\n }\n maybeRefreshNodeData() {\n return __async(this, null, function* () {\n var _a;\n if (!this.nodeDataRefresh) return;\n const {\n nodeData = []\n } = (_a = yield this.createNodeData()) != null ? _a : {};\n this.nodeData = nodeData;\n this.nodeDataRefresh = false;\n });\n }\n getProcessedDataIndexes(dataModel) {\n const angleIdx = dataModel.resolveProcessedDataIndexById(this, `angleValue`);\n const radiusIdx = this.properties.radiusKey ? dataModel.resolveProcessedDataIndexById(this, `radiusValue`) : -1;\n const calloutLabelIdx = this.properties.calloutLabelKey ? dataModel.resolveProcessedDataIndexById(this, `calloutLabelValue`) : -1;\n const sectorLabelIdx = this.properties.sectorLabelKey ? dataModel.resolveProcessedDataIndexById(this, `sectorLabelValue`) : -1;\n const legendItemIdx = this.properties.legendItemKey ? dataModel.resolveProcessedDataIndexById(this, `legendItemValue`) : -1;\n return {\n angleIdx,\n radiusIdx,\n calloutLabelIdx,\n sectorLabelIdx,\n legendItemIdx\n };\n }\n createNodeData() {\n return __async(this, null, function* () {\n const {\n id: seriesId,\n processedData,\n dataModel,\n angleScale\n } = this;\n const {\n rotation,\n innerRadiusRatio\n } = this.properties;\n if (!this.properties.isValid()) {\n this.zerosumOuterRing.visible = true;\n this.zerosumInnerRing.visible = true;\n return {\n itemId: seriesId,\n nodeData: [],\n labelData: []\n };\n }\n if (!processedData || !dataModel || processedData.type !== \"ungrouped\") return;\n const {\n angleIdx,\n radiusIdx,\n calloutLabelIdx,\n sectorLabelIdx,\n legendItemIdx\n } = this.getProcessedDataIndexes(dataModel);\n let currentStart = 0;\n let sum2 = 0;\n const nodeData = processedData.data.map((group2, index) => {\n var _a;\n const {\n datum,\n values\n } = group2;\n const currentValue = values[angleIdx];\n const startAngle = angleScale.convert(currentStart) + toRadians(rotation);\n currentStart = currentValue;\n sum2 += currentValue;\n const endAngle = angleScale.convert(currentStart) + toRadians(rotation);\n const span = Math.abs(endAngle - startAngle);\n const midAngle = startAngle + span / 2;\n const angleValue = values[angleIdx + 1];\n const radius = radiusIdx >= 0 ? (_a = values[radiusIdx]) != null ? _a : 1 : 1;\n const radiusValue = radiusIdx >= 0 ? values[radiusIdx + 1] : void 0;\n const legendItemValue = legendItemIdx >= 0 ? values[legendItemIdx] : void 0;\n const labels = this.getLabels(datum, midAngle, span, true, values[calloutLabelIdx], values[sectorLabelIdx], legendItemValue);\n const sectorFormat = this.getSectorFormat(datum, index, false);\n return __spreadValues({\n itemId: index,\n series: this,\n datum,\n index,\n angleValue,\n midAngle,\n midCos: Math.cos(midAngle),\n midSin: Math.sin(midAngle),\n startAngle,\n endAngle,\n sectorFormat,\n radiusValue,\n radius,\n innerRadius: Math.max(this.radiusScale.convert(0), 0),\n outerRadius: Math.max(this.radiusScale.convert(radius), 0),\n legendItemValue\n }, labels);\n });\n this.zerosumOuterRing.visible = sum2 === 0;\n this.zerosumInnerRing.visible = sum2 === 0 && innerRadiusRatio != null && innerRadiusRatio !== 1 && innerRadiusRatio > 0;\n return {\n itemId: seriesId,\n nodeData,\n labelData: nodeData\n };\n });\n }\n getLabels(datum, midAngle, span, skipDisabled, calloutLabelValue, sectorLabelValue, legendItemValue) {\n const {\n calloutLabel,\n sectorLabel,\n legendItemKey\n } = this.properties;\n const calloutLabelKey = !skipDisabled || calloutLabel.enabled ? this.properties.calloutLabelKey : void 0;\n const sectorLabelKey = !skipDisabled || sectorLabel.enabled ? this.properties.sectorLabelKey : void 0;\n if (!calloutLabelKey && !sectorLabelKey && !legendItemKey) {\n return {};\n }\n const labelFormatterParams = {\n datum,\n angleKey: this.properties.angleKey,\n angleName: this.properties.angleName,\n radiusKey: this.properties.radiusKey,\n radiusName: this.properties.radiusName,\n calloutLabelKey: this.properties.calloutLabelKey,\n calloutLabelName: this.properties.calloutLabelName,\n sectorLabelKey: this.properties.sectorLabelKey,\n sectorLabelName: this.properties.sectorLabelName,\n legendItemKey: this.properties.legendItemKey\n };\n const result = {};\n if (calloutLabelKey && span > toRadians(calloutLabel.minAngle)) {\n result.calloutLabel = __spreadProps(__spreadValues({}, this.getTextAlignment(midAngle)), {\n text: this.getLabelText(calloutLabel, __spreadProps(__spreadValues({}, labelFormatterParams), {\n value: calloutLabelValue\n })),\n hidden: false,\n collisionTextAlign: void 0,\n collisionOffsetY: 0,\n box: void 0\n });\n }\n if (sectorLabelKey) {\n result.sectorLabel = {\n text: this.getLabelText(sectorLabel, __spreadProps(__spreadValues({}, labelFormatterParams), {\n value: sectorLabelValue\n }))\n };\n }\n if (legendItemKey != null && legendItemValue != null) {\n result.legendItem = {\n key: legendItemKey,\n text: legendItemValue\n };\n }\n return result;\n }\n getTextAlignment(midAngle) {\n const 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 const midAngle180 = normalizeAngle180(midAngle);\n const quadrantStart = -0.75 * Math.PI;\n const quadrantOffset = midAngle180 - quadrantStart;\n const quadrant = Math.floor(quadrantOffset / (Math.PI / 2));\n const quadrantIndex = mod(quadrant, quadrantTextOpts.length);\n return quadrantTextOpts[quadrantIndex];\n }\n getSectorFormat(datum, formatIndex, highlight) {\n var _a, _b, _c, _d, _e;\n const {\n callbackCache,\n highlightManager\n } = this.ctx;\n const {\n angleKey,\n radiusKey,\n fills,\n strokes,\n formatter,\n sectorSpacing,\n __BACKGROUND_COLOR_DO_NOT_USE\n } = this.properties;\n const highlightedDatum = highlightManager.getActiveHighlight();\n const isDatumHighlighted = highlight && (highlightedDatum == null ? void 0 : highlightedDatum.series) === this && formatIndex === highlightedDatum.itemId;\n let defaultStroke = strokes[formatIndex % strokes.length];\n if (sectorSpacing == null && defaultStroke == null) {\n defaultStroke = __BACKGROUND_COLOR_DO_NOT_USE;\n }\n const {\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity\n } = mergeDefaults(isDatumHighlighted && this.properties.highlightStyle.item, {\n fill: fills.length > 0 ? fills[formatIndex % fills.length] : void 0,\n fillOpacity: this.properties.fillOpacity,\n stroke: defaultStroke,\n strokeWidth: this.getStrokeWidth(this.properties.strokeWidth),\n strokeOpacity: this.getOpacity()\n });\n let format2;\n if (formatter) {\n format2 = callbackCache.call(formatter, {\n datum,\n angleKey,\n radiusKey,\n fill,\n stroke,\n fills,\n strokes,\n strokeWidth,\n highlighted: isDatumHighlighted,\n seriesId: this.id\n });\n }\n return {\n fill: (_a = format2 == null ? void 0 : format2.fill) != null ? _a : fill,\n fillOpacity: (_b = format2 == null ? void 0 : format2.fillOpacity) != null ? _b : fillOpacity,\n stroke: (_c = format2 == null ? void 0 : format2.stroke) != null ? _c : stroke,\n strokeWidth: (_d = format2 == null ? void 0 : format2.strokeWidth) != null ? _d : strokeWidth,\n strokeOpacity: (_e = format2 == null ? void 0 : format2.strokeOpacity) != null ? _e : strokeOpacity\n };\n }\n getInnerRadius() {\n const {\n radius\n } = this;\n const {\n innerRadiusRatio = 1,\n innerRadiusOffset = 0\n } = this.properties;\n const innerRadius = radius * innerRadiusRatio + innerRadiusOffset;\n if (innerRadius === radius || innerRadius < 0) {\n return 0;\n }\n return innerRadius;\n }\n getOuterRadius() {\n const {\n outerRadiusRatio,\n outerRadiusOffset\n } = this.properties;\n return Math.max(this.radius * outerRadiusRatio + outerRadiusOffset, 0);\n }\n updateRadiusScale(resize) {\n const newRange = [this.getInnerRadius(), this.getOuterRadius()];\n this.radiusScale.range = newRange;\n if (resize) {\n this.previousRadiusScale.range = newRange;\n }\n this.nodeData = this.nodeData.map(_a => {\n var _b = _a,\n {\n radius\n } = _b,\n d = __objRest(_b, [\"radius\"]);\n return __spreadProps(__spreadValues({}, d), {\n radius,\n innerRadius: Math.max(this.radiusScale.convert(0), 0),\n outerRadius: Math.max(this.radiusScale.convert(radius), 0)\n });\n });\n }\n getTitleTranslationY() {\n var _a, _b;\n const outerRadius = Math.max(0, this.radiusScale.range[1]);\n if (outerRadius === 0) {\n return NaN;\n }\n const spacing = (_b = (_a = this.properties.title) == null ? void 0 : _a.spacing) != null ? _b : 0;\n const titleOffset = 2 + spacing;\n const dy = Math.max(0, -outerRadius);\n return -outerRadius - titleOffset - dy;\n }\n update(_0) {\n return __async(this, arguments, function* ({\n seriesRect\n }) {\n const {\n title\n } = this.properties;\n const newNodeDataDependencies = {\n seriesRectWidth: seriesRect == null ? void 0 : seriesRect.width,\n seriesRectHeight: seriesRect == null ? void 0 : seriesRect.height\n };\n const resize = jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null;\n if (resize) {\n this._nodeDataDependencies = newNodeDataDependencies;\n }\n yield this.maybeRefreshNodeData();\n this.updateTitleNodes();\n this.updateRadiusScale(resize);\n this.contentGroup.translationX = this.centerX;\n this.contentGroup.translationY = this.centerY;\n this.highlightGroup.translationX = this.centerX;\n this.highlightGroup.translationY = this.centerY;\n this.backgroundGroup.translationX = this.centerX;\n this.backgroundGroup.translationY = this.centerY;\n if (this.labelGroup) {\n this.labelGroup.translationX = this.centerX;\n this.labelGroup.translationY = this.centerY;\n }\n if (title) {\n const dy = this.getTitleTranslationY();\n const titleBox = title.node.computeBBox();\n title.node.visible = title.enabled && isFinite(dy) && !this.bboxIntersectsSurroundingSeries(titleBox, 0, dy);\n title.node.translationY = isFinite(dy) ? dy : 0;\n }\n for (const circle of [this.zerosumInnerRing, this.zerosumOuterRing]) {\n circle.fillOpacity = 0;\n circle.stroke = this.properties.calloutLabel.color;\n circle.strokeWidth = 1;\n circle.strokeOpacity = 1;\n }\n this.updateNodeMidPoint();\n yield this.updateSelections();\n yield this.updateNodes(seriesRect);\n });\n }\n updateTitleNodes() {\n var _a, _b;\n const {\n oldTitle\n } = this;\n const {\n title\n } = this.properties;\n if (oldTitle !== title) {\n if (oldTitle) {\n (_a = this.labelGroup) == null ? void 0 : _a.removeChild(oldTitle.node);\n }\n if (title) {\n title.node.textBaseline = \"bottom\";\n (_b = this.labelGroup) == null ? void 0 : _b.appendChild(title.node);\n }\n this.oldTitle = title;\n }\n }\n updateNodeMidPoint() {\n this.nodeData.forEach(d => {\n const radius = d.innerRadius + (d.outerRadius - d.innerRadius) / 2;\n d.midPoint = {\n x: d.midCos * Math.max(0, radius),\n y: d.midSin * Math.max(0, radius)\n };\n });\n }\n updateSelections() {\n return __async(this, null, function* () {\n yield this.updateGroupSelection();\n this.updateInnerCircleSelection();\n });\n }\n updateGroupSelection() {\n return __async(this, null, function* () {\n const {\n itemSelection,\n highlightSelection,\n calloutLabelSelection,\n sectorLabelSelection,\n innerLabelsSelection\n } = this;\n const update = (selection, clone) => {\n let nodeData = this.nodeData;\n if (clone) {\n nodeData = nodeData.map(datum => __spreadProps(__spreadValues({}, datum), {\n sectorFormat: __spreadValues({}, datum.sectorFormat)\n }));\n }\n selection.update(nodeData, void 0, datum => this.getDatumId(datum));\n if (this.ctx.animationManager.isSkipped()) {\n selection.cleanup();\n }\n };\n update(itemSelection, false);\n update(highlightSelection, true);\n calloutLabelSelection.update(this.nodeData, group2 => {\n const line = new Line();\n line.tag = 0 /* Callout */;\n line.pointerEvents = 1 /* None */;\n group2.appendChild(line);\n const text = new Text();\n text.tag = 1 /* Label */;\n text.pointerEvents = 1 /* None */;\n group2.appendChild(text);\n });\n sectorLabelSelection.update(this.nodeData, node => {\n node.pointerEvents = 1 /* None */;\n });\n innerLabelsSelection.update(this.properties.innerLabels, node => {\n node.pointerEvents = 1 /* None */;\n });\n });\n }\n updateInnerCircleSelection() {\n const {\n innerCircle\n } = this.properties;\n let radius = 0;\n const innerRadius = this.getInnerRadius();\n if (innerRadius > 0) {\n const circleRadius = Math.min(innerRadius, this.getOuterRadius());\n const antiAliasingPadding = 1;\n radius = Math.ceil(circleRadius * 2 + antiAliasingPadding);\n }\n const datums = innerCircle ? [{\n radius\n }] : [];\n this.innerCircleSelection.update(datums);\n }\n updateNodes(seriesRect) {\n return __async(this, null, function* () {\n const highlightedDatum = this.ctx.highlightManager.getActiveHighlight();\n const isVisible = this.visible && this.seriesItemEnabled.indexOf(true) >= 0;\n this.rootGroup.visible = isVisible;\n this.backgroundGroup.visible = isVisible;\n this.contentGroup.visible = isVisible;\n this.highlightGroup.visible = isVisible && (highlightedDatum == null ? void 0 : highlightedDatum.series) === this;\n if (this.labelGroup) {\n this.labelGroup.visible = isVisible;\n }\n this.contentGroup.opacity = this.getOpacity();\n this.innerCircleSelection.each((node, {\n radius\n }) => {\n var _a, _b;\n node.setProperties({\n fill: (_a = this.properties.innerCircle) == null ? void 0 : _a.fill,\n opacity: (_b = this.properties.innerCircle) == null ? void 0 : _b.fillOpacity,\n size: radius\n });\n });\n const updateSectorFn = (sector, datum, _index, isDatumHighlighted) => {\n const format2 = this.getSectorFormat(datum.datum, datum.itemId, isDatumHighlighted);\n datum.sectorFormat.fill = format2.fill;\n datum.sectorFormat.stroke = format2.stroke;\n const animationDisabled = this.ctx.animationManager.isSkipped();\n if (animationDisabled) {\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n sector.innerRadius = datum.innerRadius;\n sector.outerRadius = datum.outerRadius;\n }\n if (isDatumHighlighted || animationDisabled) {\n sector.fill = format2.fill;\n sector.stroke = format2.stroke;\n }\n sector.strokeWidth = format2.strokeWidth;\n sector.fillOpacity = format2.fillOpacity;\n sector.strokeOpacity = this.properties.strokeOpacity;\n sector.lineDash = this.properties.lineDash;\n sector.lineDashOffset = this.properties.lineDashOffset;\n sector.fillShadow = this.properties.shadow;\n sector.cornerRadius = this.properties.cornerRadius;\n sector.inset = this.properties.sectorSpacing != null ? (this.properties.sectorSpacing + (format2.stroke != null ? format2.strokeWidth : 0)) / 2 : 0;\n sector.lineJoin = this.properties.sectorSpacing != null ? \"miter\" : \"round\";\n };\n this.itemSelection.each((node, datum, index) => updateSectorFn(node, datum, index, false));\n this.highlightSelection.each((node, datum, index) => {\n const isDatumHighlighted = (highlightedDatum == null ? void 0 : highlightedDatum.series) === this && node.datum.itemId === highlightedDatum.itemId;\n updateSectorFn(node, datum, index, true);\n node.visible = isDatumHighlighted;\n });\n this.updateCalloutLineNodes();\n this.updateCalloutLabelNodes(seriesRect);\n this.updateSectorLabelNodes();\n this.updateInnerLabelNodes();\n this.updateZerosumRings();\n this.animationState.transition(\"update\");\n });\n }\n updateCalloutLineNodes() {\n var _a;\n const {\n calloutLine\n } = this.properties;\n const calloutLength = calloutLine.length;\n const calloutStrokeWidth = calloutLine.strokeWidth;\n const calloutColors = (_a = calloutLine.colors) != null ? _a : this.properties.strokes;\n const {\n offset: offset4\n } = this.properties.calloutLabel;\n this.calloutLabelSelection.selectByTag(0 /* Callout */).forEach((line, index) => {\n var _a2;\n const datum = line.datum;\n const {\n calloutLabel: label,\n outerRadius\n } = datum;\n if ((label == null ? void 0 : label.text) && !label.hidden && outerRadius !== 0) {\n line.visible = true;\n line.strokeWidth = calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.fill = void 0;\n const x1 = datum.midCos * outerRadius;\n const y1 = datum.midSin * outerRadius;\n let x2 = datum.midCos * (outerRadius + calloutLength);\n let y2 = datum.midSin * (outerRadius + calloutLength);\n const isMoved = (_a2 = label.collisionTextAlign) != null ? _a2 : label.collisionOffsetY !== 0;\n if (isMoved && label.box != null) {\n const box = label.box;\n let cx = x2;\n let cy = y2;\n if (x2 < box.x) {\n cx = box.x;\n } else if (x2 > box.x + box.width) {\n cx = box.x + box.width;\n }\n if (y2 < box.y) {\n cy = box.y;\n } else if (y2 > box.y + box.height) {\n cy = box.y + box.height;\n }\n const dx = cx - x2;\n const dy = cy - y2;\n const length = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n const paddedLength = length - offset4;\n if (paddedLength > 0) {\n x2 = x2 + dx * paddedLength / length;\n y2 = y2 + dy * paddedLength / length;\n }\n }\n line.x1 = x1;\n line.y1 = y1;\n line.x2 = x2;\n line.y2 = y2;\n } else {\n line.visible = false;\n }\n });\n }\n getLabelOverflow(text, box, seriesRect) {\n const seriesLeft = seriesRect.x - this.centerX;\n const seriesRight = seriesRect.x + seriesRect.width - this.centerX;\n const seriesTop = seriesRect.y - this.centerY;\n const seriesBottom = seriesRect.y + seriesRect.height - this.centerY;\n const errPx = 1;\n let visibleTextPart = 1;\n if (box.x + errPx < seriesLeft) {\n visibleTextPart = (box.x + box.width - seriesLeft) / box.width;\n } else if (box.x + box.width - errPx > seriesRight) {\n visibleTextPart = (seriesRight - box.x) / box.width;\n }\n const hasVerticalOverflow = box.y + errPx < seriesTop || box.y + box.height - errPx > seriesBottom;\n const textLength = visibleTextPart === 1 ? text.length : Math.floor(text.length * visibleTextPart) - 1;\n const hasSurroundingSeriesOverflow = this.bboxIntersectsSurroundingSeries(box);\n return {\n textLength,\n hasVerticalOverflow,\n hasSurroundingSeriesOverflow\n };\n }\n bboxIntersectsSurroundingSeries(box, dx = 0, dy = 0) {\n const {\n surroundingRadius\n } = this;\n if (surroundingRadius == null) {\n return false;\n }\n const corners = [{\n x: box.x + dx,\n y: box.y + dy\n }, {\n x: box.x + box.width + dx,\n y: box.y + dy\n }, {\n x: box.x + box.width + dx,\n y: box.y + box.height + dy\n }, {\n x: box.x + dx,\n y: box.y + box.height + dy\n }];\n const sur2 = __pow(surroundingRadius, 2);\n return corners.some(corner => __pow(corner.x, 2) + __pow(corner.y, 2) > sur2);\n }\n computeCalloutLabelCollisionOffsets() {\n const {\n radiusScale\n } = this;\n const {\n calloutLabel,\n calloutLine\n } = this.properties;\n const {\n offset: offset4,\n minSpacing\n } = calloutLabel;\n const innerRadius = radiusScale.convert(0);\n const shouldSkip = datum => {\n const label = datum.calloutLabel;\n return !label || datum.outerRadius === 0;\n };\n const fullData = this.nodeData;\n const data = this.nodeData.filter(t => !shouldSkip(t));\n data.forEach(datum => {\n const label = datum.calloutLabel;\n if (label == null) return;\n label.hidden = false;\n label.collisionTextAlign = void 0;\n label.collisionOffsetY = 0;\n });\n if (data.length <= 1) {\n return;\n }\n const leftLabels = data.filter(d => d.midCos < 0).sort((a, b) => a.midSin - b.midSin);\n const rightLabels = data.filter(d => d.midCos >= 0).sort((a, b) => a.midSin - b.midSin);\n const topLabels = data.filter(d => {\n var _a;\n return d.midSin < 0 && ((_a = d.calloutLabel) == null ? void 0 : _a.textAlign) === \"center\";\n }).sort((a, b) => a.midCos - b.midCos);\n const bottomLabels = data.filter(d => {\n var _a;\n return d.midSin >= 0 && ((_a = d.calloutLabel) == null ? void 0 : _a.textAlign) === \"center\";\n }).sort((a, b) => a.midCos - b.midCos);\n const tempTextNode = new Text();\n const getTextBBox = datum => {\n var _a;\n const label = datum.calloutLabel;\n if (label == null) return new BBox(0, 0, 0, 0);\n const labelRadius = datum.outerRadius + calloutLine.length + offset4;\n const x = datum.midCos * labelRadius;\n const y = datum.midSin * labelRadius + label.collisionOffsetY;\n tempTextNode.text = label.text;\n tempTextNode.x = x;\n tempTextNode.y = y;\n tempTextNode.setFont(this.properties.calloutLabel);\n tempTextNode.setAlign({\n textAlign: (_a = label.collisionTextAlign) != null ? _a : label.textAlign,\n textBaseline: label.textBaseline\n });\n return tempTextNode.computeBBox();\n };\n const avoidNeighbourYCollision = (label, next, direction) => {\n const box = getTextBBox(label).grow(minSpacing / 2);\n const other = getTextBBox(next).grow(minSpacing / 2);\n const collidesOrBehind = box.x < other.x + other.width && box.x + box.width > other.x && (direction === \"to-top\" ? box.y < other.y + other.height : box.y + box.height > other.y);\n if (collidesOrBehind) {\n const dy = direction === \"to-top\" ? box.y - other.y - other.height : box.y + box.height - other.y;\n next.calloutLabel.collisionOffsetY = dy;\n }\n };\n const avoidYCollisions = labels => {\n const midLabel = labels.slice().sort((a, b) => Math.abs(a.midSin) - Math.abs(b.midSin))[0];\n const midIndex = labels.indexOf(midLabel);\n for (let i = midIndex - 1; i >= 0; i--) {\n const prev = labels[i + 1];\n const next = labels[i];\n avoidNeighbourYCollision(prev, next, \"to-top\");\n }\n for (let i = midIndex + 1; i < labels.length; i++) {\n const prev = labels[i - 1];\n const next = labels[i];\n avoidNeighbourYCollision(prev, next, \"to-bottom\");\n }\n };\n const avoidXCollisions = labels => {\n const labelsCollideLabelsByY = data.some(datum => datum.calloutLabel.collisionOffsetY !== 0);\n const boxes = labels.map(label => getTextBBox(label));\n const paddedBoxes = boxes.map(box => box.clone().grow(minSpacing / 2));\n let labelsCollideLabelsByX = false;\n for (let i = 0; i < paddedBoxes.length && !labelsCollideLabelsByX; i++) {\n const box = paddedBoxes[i];\n for (let j = i + 1; j < labels.length; j++) {\n const other = paddedBoxes[j];\n if (box.collidesBBox(other)) {\n labelsCollideLabelsByX = true;\n break;\n }\n }\n }\n const sectors = fullData.map(datum => {\n const {\n startAngle,\n endAngle,\n outerRadius\n } = datum;\n return {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n };\n });\n const labelsCollideSectors = boxes.some(box => {\n return sectors.some(sector => boxCollidesSector(box, sector));\n });\n if (!labelsCollideLabelsByX && !labelsCollideLabelsByY && !labelsCollideSectors) {\n return;\n }\n labels.filter(d => d.calloutLabel.textAlign === \"center\").forEach(d => {\n const label = d.calloutLabel;\n if (d.midCos < 0) {\n label.collisionTextAlign = \"right\";\n } else if (d.midCos > 0) {\n label.collisionTextAlign = \"left\";\n } else {\n label.collisionTextAlign = \"center\";\n }\n });\n };\n avoidYCollisions(leftLabels);\n avoidYCollisions(rightLabels);\n avoidXCollisions(topLabels);\n avoidXCollisions(bottomLabels);\n }\n updateCalloutLabelNodes(seriesRect) {\n const {\n radiusScale\n } = this;\n const {\n calloutLabel,\n calloutLine\n } = this.properties;\n const calloutLength = calloutLine.length;\n const {\n offset: offset4,\n color\n } = calloutLabel;\n const tempTextNode = new Text();\n this.calloutLabelSelection.selectByTag(1 /* Label */).forEach(text => {\n var _a;\n const {\n datum\n } = text;\n const label = datum.calloutLabel;\n const radius = radiusScale.convert(datum.radius);\n const outerRadius = Math.max(0, radius);\n if (!(label == null ? void 0 : label.text) || outerRadius === 0 || label.hidden) {\n text.visible = false;\n return;\n }\n const labelRadius = outerRadius + calloutLength + offset4;\n const x = datum.midCos * labelRadius;\n const y = datum.midSin * labelRadius + label.collisionOffsetY;\n const align = {\n textAlign: (_a = label.collisionTextAlign) != null ? _a : label.textAlign,\n textBaseline: label.textBaseline\n };\n tempTextNode.text = label.text;\n tempTextNode.x = x;\n tempTextNode.y = y;\n tempTextNode.setFont(this.properties.calloutLabel);\n tempTextNode.setAlign(align);\n const box = tempTextNode.computeBBox();\n let displayText = label.text;\n let visible = true;\n if (calloutLabel.avoidCollisions) {\n const {\n textLength,\n hasVerticalOverflow\n } = this.getLabelOverflow(label.text, box, seriesRect);\n displayText = label.text.length === textLength ? label.text : `${label.text.substring(0, textLength)}\\u2026`;\n visible = !hasVerticalOverflow;\n }\n text.text = displayText;\n text.x = x;\n text.y = y;\n text.setFont(this.properties.calloutLabel);\n text.setAlign(align);\n text.fill = color;\n text.visible = visible;\n });\n }\n computeLabelsBBox(options, seriesRect) {\n return __async(this, null, function* () {\n const {\n calloutLabel,\n calloutLine\n } = this.properties;\n const calloutLength = calloutLine.length;\n const {\n offset: offset4,\n maxCollisionOffset,\n minSpacing\n } = calloutLabel;\n if (!calloutLabel.avoidCollisions) {\n return null;\n }\n yield this.maybeRefreshNodeData();\n this.updateRadiusScale(false);\n this.computeCalloutLabelCollisionOffsets();\n const textBoxes = [];\n const text = new Text();\n let titleBox;\n const {\n title\n } = this.properties;\n if ((title == null ? void 0 : title.text) && title.enabled) {\n const dy = this.getTitleTranslationY();\n if (isFinite(dy)) {\n text.text = title.text;\n text.x = 0;\n text.y = dy;\n text.setFont(title);\n text.setAlign({\n textBaseline: \"bottom\",\n textAlign: \"center\"\n });\n titleBox = text.computeBBox();\n textBoxes.push(titleBox);\n }\n }\n this.nodeData.forEach(datum => {\n var _a;\n const label = datum.calloutLabel;\n if (!label || datum.outerRadius === 0) {\n return null;\n }\n const labelRadius = datum.outerRadius + calloutLength + offset4;\n const x = datum.midCos * labelRadius;\n const y = datum.midSin * labelRadius + label.collisionOffsetY;\n text.text = label.text;\n text.x = x;\n text.y = y;\n text.setFont(this.properties.calloutLabel);\n text.setAlign({\n textAlign: (_a = label.collisionTextAlign) != null ? _a : label.textAlign,\n textBaseline: label.textBaseline\n });\n const box = text.computeBBox();\n label.box = box;\n if (Math.abs(label.collisionOffsetY) > maxCollisionOffset) {\n label.hidden = true;\n return;\n }\n if (titleBox) {\n const seriesTop = seriesRect.y - this.centerY;\n const titleCleanArea = new BBox(titleBox.x - minSpacing, seriesTop, titleBox.width + 2 * minSpacing, titleBox.y + titleBox.height + minSpacing - seriesTop);\n if (box.collidesBBox(titleCleanArea)) {\n label.hidden = true;\n return;\n }\n }\n if (options.hideWhenNecessary) {\n const {\n textLength,\n hasVerticalOverflow,\n hasSurroundingSeriesOverflow\n } = this.getLabelOverflow(label.text, box, seriesRect);\n const isTooShort = label.text.length > 2 && textLength < 2;\n if (hasVerticalOverflow || isTooShort || hasSurroundingSeriesOverflow) {\n label.hidden = true;\n return;\n }\n }\n label.hidden = false;\n textBoxes.push(box);\n });\n if (textBoxes.length === 0) {\n return null;\n }\n return BBox.merge(textBoxes);\n });\n }\n updateSectorLabelNodes() {\n const {\n radiusScale\n } = this;\n const innerRadius = radiusScale.convert(0);\n const {\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n positionOffset,\n positionRatio,\n color\n } = this.properties.sectorLabel;\n this.sectorLabelSelection.each((text, datum) => {\n const {\n sectorLabel,\n outerRadius\n } = datum;\n let isTextVisible = false;\n if (sectorLabel && outerRadius !== 0) {\n const labelRadius = innerRadius * (1 - positionRatio) + outerRadius * 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 text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n text.textAlign = \"center\";\n text.textBaseline = \"middle\";\n const bbox = text.computeBBox();\n const 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 const {\n startAngle,\n endAngle\n } = datum;\n const sectorBounds = {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n };\n if (corners.every(([x, y]) => isPointInSector(x, y, sectorBounds))) {\n isTextVisible = true;\n }\n }\n text.visible = isTextVisible;\n });\n }\n updateInnerLabelNodes() {\n const textBBoxes = [];\n const margins = [];\n this.innerLabelsSelection.each((text, datum) => {\n const {\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily,\n color\n } = datum;\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 const getMarginTop = index => index === 0 ? 0 : margins[index];\n const getMarginBottom = index => index === margins.length - 1 ? 0 : margins[index];\n const totalHeight = textBBoxes.reduce((sum2, bbox, i) => {\n return sum2 + bbox.height + getMarginTop(i) + getMarginBottom(i);\n }, 0);\n const totalWidth = Math.max(...textBBoxes.map(bbox => bbox.width));\n const innerRadius = this.getInnerRadius();\n const labelRadius = Math.sqrt(Math.pow(totalWidth / 2, 2) + Math.pow(totalHeight / 2, 2));\n const labelsVisible = labelRadius <= (innerRadius > 0 ? innerRadius : this.getOuterRadius());\n const textBottoms = [];\n for (let i = 0, prev = -totalHeight / 2; i < textBBoxes.length; i++) {\n const bbox = textBBoxes[i];\n const bottom = bbox.height + prev + getMarginTop(i);\n textBottoms.push(bottom);\n prev = bottom + getMarginBottom(i);\n }\n this.innerLabelsSelection.each((text, _datum, index) => {\n text.y = textBottoms[index];\n text.visible = labelsVisible;\n });\n }\n updateZerosumRings() {\n this.zerosumOuterRing.size = this.getOuterRadius() * 2;\n this.zerosumInnerRing.size = this.getInnerRadius() * 2;\n }\n getDatumLegendName(nodeDatum) {\n const {\n angleKey,\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n const {\n sectorLabel,\n calloutLabel,\n legendItem\n } = nodeDatum;\n if (legendItemKey && legendItem !== void 0) {\n return legendItem.text;\n } else if (calloutLabelKey && calloutLabelKey !== angleKey && (calloutLabel == null ? void 0 : calloutLabel.text) !== void 0) {\n return calloutLabel.text;\n } else if (sectorLabelKey && sectorLabelKey !== angleKey && (sectorLabel == null ? void 0 : sectorLabel.text) !== void 0) {\n return sectorLabel.text;\n }\n }\n pickNodeClosestDatum(point) {\n return pickByMatchingAngle(this, point);\n }\n getTooltipHtml(nodeDatum) {\n var _a;\n if (!this.properties.isValid()) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n datum,\n angleValue,\n sectorFormat: {\n fill: color\n },\n itemId\n } = nodeDatum;\n const title = sanitizeHtml((_a = this.properties.title) == null ? void 0 : _a.text);\n const content = isFiniteNumber(angleValue) ? toFixed(angleValue) : String(angleValue);\n const labelText = this.getDatumLegendName(nodeDatum);\n return this.properties.tooltip.toTooltipHtml({\n title: title != null ? title : labelText,\n content: title && labelText ? `${labelText}: ${content}` : content,\n backgroundColor: color\n }, {\n datum,\n itemId,\n title,\n color,\n seriesId: this.id,\n angleKey: this.properties.angleKey,\n angleName: this.properties.angleName,\n radiusKey: this.properties.radiusKey,\n radiusName: this.properties.radiusName,\n calloutLabelKey: this.properties.calloutLabelKey,\n calloutLabelName: this.properties.calloutLabelName,\n sectorLabelKey: this.properties.sectorLabelKey,\n sectorLabelName: this.properties.sectorLabelName,\n legendItemKey: this.properties.legendItemKey\n });\n }\n getLegendData(legendType) {\n var _a, _b, _c, _d, _e;\n const {\n visible,\n processedData,\n dataModel\n } = this;\n if (!dataModel || !(processedData == null ? void 0 : processedData.data.length) || !this.properties.isValid() || legendType !== \"category\") {\n return [];\n }\n const {\n angleKey,\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n if (!legendItemKey && (!calloutLabelKey || calloutLabelKey === angleKey) && (!sectorLabelKey || sectorLabelKey === angleKey)) return [];\n const {\n calloutLabelIdx,\n sectorLabelIdx,\n legendItemIdx\n } = this.getProcessedDataIndexes(dataModel);\n const titleText = ((_a = this.properties.title) == null ? void 0 : _a.showInLegend) && this.properties.title.text;\n const legendData = [];\n for (let index = 0; index < processedData.data.length; index++) {\n const {\n datum,\n values\n } = processedData.data[index];\n const labelParts = [];\n if (titleText) {\n labelParts.push(titleText);\n }\n const labels = this.getLabels(datum, 2 * Math.PI, 2 * Math.PI, false, values[calloutLabelIdx], values[sectorLabelIdx], values[legendItemIdx]);\n if (legendItemKey && labels.legendItem !== void 0) {\n labelParts.push(labels.legendItem.text);\n } else if (calloutLabelKey && calloutLabelKey !== angleKey && ((_b = labels.calloutLabel) == null ? void 0 : _b.text) !== void 0) {\n labelParts.push((_c = labels.calloutLabel) == null ? void 0 : _c.text);\n } else if (sectorLabelKey && sectorLabelKey !== angleKey && ((_d = labels.sectorLabel) == null ? void 0 : _d.text) !== void 0) {\n labelParts.push((_e = labels.sectorLabel) == null ? void 0 : _e.text);\n }\n if (labelParts.length === 0) continue;\n const sectorFormat = this.getSectorFormat(datum, index, false);\n legendData.push({\n legendType: \"category\",\n id: this.id,\n itemId: index,\n seriesId: this.id,\n enabled: visible && this.seriesItemEnabled[index],\n label: {\n text: labelParts.join(\" - \")\n },\n marker: {\n fill: sectorFormat.fill,\n stroke: sectorFormat.stroke,\n fillOpacity: this.properties.fillOpacity,\n strokeOpacity: this.properties.strokeOpacity,\n strokeWidth: this.properties.strokeWidth\n },\n legendItemName: legendItemKey != null ? datum[legendItemKey] : void 0\n });\n }\n return legendData;\n }\n onLegendItemClick(event) {\n const {\n enabled,\n itemId,\n series,\n legendItemName\n } = event;\n if (series.id === this.id) {\n this.toggleSeriesItem(itemId, enabled);\n } else if (legendItemName != null) {\n this.toggleOtherSeriesItems(legendItemName, enabled);\n }\n }\n toggleSeriesItem(itemId, enabled) {\n this.seriesItemEnabled[itemId] = enabled;\n this.nodeDataRefresh = true;\n }\n toggleOtherSeriesItems(legendItemName, enabled) {\n var _a;\n if (!this.properties.legendItemKey || !this.dataModel) {\n return;\n }\n const legendItemIdx = this.dataModel.resolveProcessedDataIndexById(this, `legendItemValue`);\n (_a = this.processedData) == null ? void 0 : _a.data.forEach(({\n values\n }, datumItemId) => {\n if (values[legendItemIdx] === legendItemName) {\n this.toggleSeriesItem(datumItemId, enabled);\n }\n });\n }\n animateEmptyUpdateReady(_data) {\n const {\n animationManager\n } = this.ctx;\n const fns = preparePieSeriesAnimationFunctions(true, this.properties.rotation, this.radiusScale, this.previousRadiusScale);\n fromToMotion(this.id, \"nodes\", animationManager, [this.itemSelection, this.highlightSelection], fns.nodes);\n fromToMotion(this.id, `innerCircle`, animationManager, [this.innerCircleSelection], fns.innerCircle);\n seriesLabelFadeInAnimation(this, \"callout\", animationManager, this.calloutLabelSelection);\n seriesLabelFadeInAnimation(this, \"sector\", animationManager, this.sectorLabelSelection);\n seriesLabelFadeInAnimation(this, \"inner\", animationManager, this.innerLabelsSelection);\n this.previousRadiusScale.range = this.radiusScale.range;\n }\n animateWaitingUpdateReady() {\n var _a, _b, _c, _d, _e, _f;\n const {\n itemSelection,\n highlightSelection,\n processedData,\n radiusScale,\n previousRadiusScale\n } = this;\n const {\n animationManager\n } = this.ctx;\n const dataDiff = (_a = processedData == null ? void 0 : processedData.reduced) == null ? void 0 : _a.diff;\n this.ctx.animationManager.stopByAnimationGroupId(this.id);\n const supportedDiff = ((_b = dataDiff == null ? void 0 : dataDiff.moved.size) != null ? _b : 0) === 0;\n const hasKeys = ((_c = processedData == null ? void 0 : processedData.defs.keys.length) != null ? _c : 0) > 0;\n const hasUniqueKeys = (_f = (_e = (_d = processedData == null ? void 0 : processedData.reduced) == null ? void 0 : _d.animationValidation) == null ? void 0 : _e.uniqueKeys) != null ? _f : true;\n if (!supportedDiff || !hasKeys || !hasUniqueKeys) {\n this.ctx.animationManager.skipCurrentBatch();\n }\n const fns = preparePieSeriesAnimationFunctions(false, this.properties.rotation, radiusScale, previousRadiusScale);\n fromToMotion(this.id, \"nodes\", animationManager, [itemSelection, highlightSelection], fns.nodes, (_, datum) => this.getDatumId(datum), dataDiff);\n fromToMotion(this.id, `innerCircle`, animationManager, [this.innerCircleSelection], fns.innerCircle);\n seriesLabelFadeInAnimation(this, \"callout\", this.ctx.animationManager, this.calloutLabelSelection);\n seriesLabelFadeInAnimation(this, \"sector\", this.ctx.animationManager, this.sectorLabelSelection);\n seriesLabelFadeInAnimation(this, \"inner\", this.ctx.animationManager, this.innerLabelsSelection);\n this.previousRadiusScale.range = this.radiusScale.range;\n }\n animateClearingUpdateEmpty() {\n const {\n itemSelection,\n highlightSelection,\n radiusScale,\n previousRadiusScale\n } = this;\n const {\n animationManager\n } = this.ctx;\n const fns = preparePieSeriesAnimationFunctions(false, this.properties.rotation, radiusScale, previousRadiusScale);\n fromToMotion(this.id, \"nodes\", animationManager, [itemSelection, highlightSelection], fns.nodes);\n fromToMotion(this.id, `innerCircle`, animationManager, [this.innerCircleSelection], fns.innerCircle);\n seriesLabelFadeOutAnimation(this, \"callout\", this.ctx.animationManager, this.calloutLabelSelection);\n seriesLabelFadeOutAnimation(this, \"sector\", this.ctx.animationManager, this.sectorLabelSelection);\n seriesLabelFadeOutAnimation(this, \"inner\", this.ctx.animationManager, this.innerLabelsSelection);\n this.previousRadiusScale.range = this.radiusScale.range;\n }\n getDatumIdFromData(datum) {\n var _a, _b, _c;\n const {\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n if (!((_c = (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.animationValidation) == null ? void 0 : _c.uniqueKeys)) {\n return;\n }\n if (legendItemKey) {\n return datum[legendItemKey];\n } else if (calloutLabelKey) {\n return datum[calloutLabelKey];\n } else if (sectorLabelKey) {\n return datum[sectorLabelKey];\n }\n }\n getDatumId(datum) {\n const {\n index\n } = datum;\n const datumId = this.getDatumIdFromData(datum.datum);\n return datumId != null ? String(datumId) : `${index}`;\n }\n onDataChange() {\n var _a;\n const {\n data,\n seriesItemEnabled\n } = this;\n this.seriesItemEnabled = (_a = data == null ? void 0 : data.map((_, index) => {\n var _a2;\n return (_a2 = seriesItemEnabled[index]) != null ? _a2 : true;\n })) != null ? _a : [];\n }\n computeFocusBounds(opts) {\n return computeSectorFocusBounds(this, opts);\n }\n};\nDonutSeries.className = \"DonutSeries\";\nDonutSeries.type = \"donut\";\n\n// packages/ag-charts-community/src/chart/series/polar/pieTheme.ts\nvar pieTheme = {\n series: {\n __extends__: EXTENDS_SERIES_DEFAULTS,\n title: {\n enabled: true,\n fontStyle: void 0,\n fontWeight: \"normal\" /* NORMAL */,\n fontSize: 14,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_MUTED_LABEL_COLOUR,\n spacing: 5\n },\n calloutLabel: {\n enabled: true,\n fontStyle: void 0,\n fontWeight: void 0,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR,\n offset: 3,\n minAngle: 0\n },\n sectorLabel: {\n enabled: true,\n fontStyle: void 0,\n fontWeight: \"normal\" /* NORMAL */,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_INSIDE_SERIES_LABEL_COLOUR,\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 // @todo(AG-10275) Uncomment this\n // sectorSpacing: 1,\n shadow: {\n enabled: false,\n color: DEFAULT_SHADOW_COLOUR,\n xOffset: 3,\n yOffset: 3,\n blur: 5\n },\n innerLabels: {\n fontStyle: void 0,\n fontWeight: void 0,\n fontSize: 12,\n fontFamily: DEFAULT_FONT_FAMILY,\n color: DEFAULT_LABEL_COLOUR,\n margin: 2\n },\n // @todo(AG-10275) Remove this\n // @ts-expect-error\n __BACKGROUND_COLOR_DO_NOT_USE: DEFAULT_BACKGROUND_COLOUR\n }\n};\nvar piePaletteFactory = ({\n takeColors,\n colorsCount,\n userPalette\n}) => {\n const {\n fills,\n strokes\n } = takeColors(colorsCount);\n return {\n fills,\n strokes: userPalette ? strokes : [],\n calloutLine: {\n colors: strokes\n }\n };\n};\n\n// packages/ag-charts-community/src/chart/series/polar/donutSeriesModule.ts\nvar DonutSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"polar\"],\n identifier: \"donut\",\n instanceConstructor: DonutSeries,\n themeTemplate: pieTheme,\n paletteFactory: piePaletteFactory\n};\n\n// packages/ag-charts-community/src/chart/series/polar/pieSeriesProperties.ts\nvar PieTitle = class extends Caption {\n constructor() {\n super(...arguments);\n this.showInLegend = false;\n }\n};\n__decorateClass([Validate(BOOLEAN)], PieTitle.prototype, \"showInLegend\", 2);\nvar DonutInnerLabel2 = class extends Label {\n set(properties, _reset) {\n return super.set(properties);\n }\n};\n__decorateClass([Deprecated(\"Use a Donut Series instead\"), Validate(STRING, {\n optional: true\n})], DonutInnerLabel2.prototype, \"text\", 2);\n__decorateClass([Deprecated(\"Use a Donut Series instead\"), Validate(NUMBER, {\n optional: true\n})], DonutInnerLabel2.prototype, \"margin\", 2);\nvar DonutInnerCircle2 = class extends BaseProperties {};\n__decorateClass([Deprecated(\"Use a Donut Series instead\"), Validate(COLOR_STRING, {\n optional: true\n})], DonutInnerCircle2.prototype, \"fill\", 2);\n__decorateClass([Deprecated(\"Use a Donut Series instead\"), Validate(RATIO, {\n optional: true\n})], DonutInnerCircle2.prototype, \"fillOpacity\", 2);\nvar PieSeriesCalloutLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.offset = 3;\n this.minAngle = 0;\n this.minSpacing = 4;\n this.maxCollisionOffset = 50;\n this.avoidCollisions = true;\n }\n};\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesCalloutLabel.prototype, \"offset\", 2);\n__decorateClass([Validate(DEGREE)], PieSeriesCalloutLabel.prototype, \"minAngle\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesCalloutLabel.prototype, \"minSpacing\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesCalloutLabel.prototype, \"maxCollisionOffset\", 2);\n__decorateClass([Validate(BOOLEAN)], PieSeriesCalloutLabel.prototype, \"avoidCollisions\", 2);\nvar PieSeriesSectorLabel = class extends Label {\n constructor() {\n super(...arguments);\n this.positionOffset = 0;\n this.positionRatio = 0.5;\n }\n};\n__decorateClass([Validate(NUMBER)], PieSeriesSectorLabel.prototype, \"positionOffset\", 2);\n__decorateClass([Validate(RATIO)], PieSeriesSectorLabel.prototype, \"positionRatio\", 2);\nvar PieSeriesCalloutLine = class extends BaseProperties {\n constructor() {\n super(...arguments);\n this.length = 10;\n this.strokeWidth = 1;\n }\n};\n__decorateClass([Validate(COLOR_STRING_ARRAY, {\n optional: true\n})], PieSeriesCalloutLine.prototype, \"colors\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesCalloutLine.prototype, \"length\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesCalloutLine.prototype, \"strokeWidth\", 2);\nvar PieSeriesProperties = class extends SeriesProperties {\n constructor() {\n super(...arguments);\n this.fills = Object.values(DEFAULT_FILLS);\n this.strokes = Object.values(DEFAULT_STROKES);\n this.fillOpacity = 1;\n this.strokeOpacity = 1;\n this.lineDash = [0];\n this.lineDashOffset = 0;\n this.cornerRadius = 0;\n this.rotation = 0;\n this.outerRadiusOffset = 0;\n this.outerRadiusRatio = 1;\n this.strokeWidth = 1;\n this.sectorSpacing = void 0;\n this.innerLabels = new PropertiesArray(DonutInnerLabel2);\n this.title = new PieTitle();\n this.innerCircle = new DonutInnerCircle2();\n this.shadow = new DropShadow();\n this.calloutLabel = new PieSeriesCalloutLabel();\n this.sectorLabel = new PieSeriesSectorLabel();\n this.calloutLine = new PieSeriesCalloutLine();\n this.tooltip = new SeriesTooltip();\n this.__BACKGROUND_COLOR_DO_NOT_USE = void 0;\n }\n};\n__decorateClass([Validate(STRING)], PieSeriesProperties.prototype, \"angleKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"angleName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"radiusKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"radiusName\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], PieSeriesProperties.prototype, \"radiusMin\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], PieSeriesProperties.prototype, \"radiusMax\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"calloutLabelKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"calloutLabelName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"sectorLabelKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"sectorLabelName\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"legendItemKey\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], PieSeriesProperties.prototype, \"fills\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], PieSeriesProperties.prototype, \"strokes\", 2);\n__decorateClass([Validate(RATIO)], PieSeriesProperties.prototype, \"fillOpacity\", 2);\n__decorateClass([Validate(RATIO)], PieSeriesProperties.prototype, \"strokeOpacity\", 2);\n__decorateClass([Validate(LINE_DASH)], PieSeriesProperties.prototype, \"lineDash\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesProperties.prototype, \"lineDashOffset\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesProperties.prototype, \"cornerRadius\", 2);\n__decorateClass([Validate(FUNCTION, {\n optional: true\n})], PieSeriesProperties.prototype, \"formatter\", 2);\n__decorateClass([Validate(DEGREE)], PieSeriesProperties.prototype, \"rotation\", 2);\n__decorateClass([Validate(NUMBER)], PieSeriesProperties.prototype, \"outerRadiusOffset\", 2);\n__decorateClass([Validate(RATIO)], PieSeriesProperties.prototype, \"outerRadiusRatio\", 2);\n__decorateClass([Deprecated(\"Use a Donut Series instead\"), Validate(NUMBER, {\n optional: true\n})], PieSeriesProperties.prototype, \"innerRadiusOffset\", 2);\n__decorateClass([Deprecated(\"Use a Donut Series instead\"), Validate(RATIO, {\n optional: true\n})], PieSeriesProperties.prototype, \"innerRadiusRatio\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER)], PieSeriesProperties.prototype, \"strokeWidth\", 2);\n__decorateClass([Validate(POSITIVE_NUMBER, {\n optional: true\n})], PieSeriesProperties.prototype, \"sectorSpacing\", 2);\n__decorateClass([Validate(OBJECT_ARRAY)], PieSeriesProperties.prototype, \"innerLabels\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"title\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"innerCircle\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"shadow\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"calloutLabel\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"sectorLabel\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"calloutLine\", 2);\n__decorateClass([Validate(OBJECT)], PieSeriesProperties.prototype, \"tooltip\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], PieSeriesProperties.prototype, \"__BACKGROUND_COLOR_DO_NOT_USE\", 2);\n\n// packages/ag-charts-community/src/chart/series/polar/pieSeries.ts\nvar PieSeriesNodeEvent = class extends SeriesNodeEvent {\n constructor(type, nativeEvent, datum, series) {\n super(type, nativeEvent, datum, series);\n this.angleKey = series.properties.angleKey;\n this.radiusKey = series.properties.radiusKey;\n this.calloutLabelKey = series.properties.calloutLabelKey;\n this.sectorLabelKey = series.properties.sectorLabelKey;\n }\n};\nvar PieSeries = class extends PolarSeries {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n pickModes: [0 /* EXACT_SHAPE_MATCH */],\n useLabelLayer: true,\n animationResetFns: {\n item: resetPieSelectionsFn,\n label: resetLabelFn\n }\n });\n this.properties = new PieSeriesProperties();\n this.previousRadiusScale = new LinearScale();\n this.radiusScale = new LinearScale();\n // The group node that contains the background graphics.\n this.backgroundGroup = this.rootGroup.appendChild(new Group({\n name: `${this.id}-background`,\n layer: true,\n zIndex: 0 /* SERIES_BACKGROUND_ZINDEX */\n }));\n // AG-6193 If the sum of all datums is 0, then we'll draw 1 or 2 rings to represent the empty series.\n this.zerosumRingsGroup = this.backgroundGroup.appendChild(new Group({\n name: `${this.id}-zerosumRings`\n }));\n this.zerosumOuterRing = this.zerosumRingsGroup.appendChild(new Circle());\n this.zerosumInnerRing = this.zerosumRingsGroup.appendChild(new Circle());\n this.innerCircleGroup = this.backgroundGroup.appendChild(new Group({\n name: `${this.id}-innerCircle`\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.surroundingRadius = void 0;\n this.NodeEvent = PieSeriesNodeEvent;\n this.angleScale = new LinearScale();\n this.angleScale.domain = [0, 1];\n this.angleScale.range = [-Math.PI, Math.PI].map(angle => angle + Math.PI / 2);\n const pieCalloutLabels = new Group({\n name: \"pieCalloutLabels\"\n });\n const pieSectorLabels = new Group({\n name: \"pieSectorLabels\"\n });\n const innerLabels = new Group({\n name: \"innerLabels\"\n });\n this.labelGroup.append(pieCalloutLabels);\n this.labelGroup.append(pieSectorLabels);\n this.labelGroup.append(innerLabels);\n this.calloutLabelSelection = Selection.select(pieCalloutLabels, Group);\n this.sectorLabelSelection = Selection.select(pieSectorLabels, Text);\n this.innerLabelsSelection = Selection.select(innerLabels, Text);\n this.innerCircleSelection = Selection.select(this.innerCircleGroup, Circle);\n }\n addChartEventListeners() {\n var _a;\n this.destroyFns.push((_a = this.ctx.chartEventManager) == null ? void 0 : _a.addListener(\"legend-item-click\", event => this.onLegendItemClick(event)));\n }\n get visible() {\n return super.visible && (this.seriesItemEnabled.length === 0 || this.seriesItemEnabled.some(visible => visible));\n }\n nodeFactory() {\n return new Sector();\n }\n getSeriesDomain(direction) {\n if (direction === \"x\" /* X */) {\n return this.angleScale.domain;\n } else {\n return this.radiusScale.domain;\n }\n }\n processData(dataController) {\n return __async(this, null, function* () {\n var _a, _b, _c, _d, _e;\n if (this.data == null || !this.properties.isValid()) {\n return;\n }\n let {\n data\n } = this;\n const {\n visible,\n seriesItemEnabled\n } = this;\n const {\n angleKey,\n radiusKey,\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n const animationEnabled = !this.ctx.animationManager.isSkipped();\n const extraKeyProps = [];\n const extraProps = [];\n if (legendItemKey) {\n extraKeyProps.push(keyProperty(legendItemKey, \"band\", {\n id: `legendItemKey`\n }));\n } else if (calloutLabelKey) {\n extraKeyProps.push(keyProperty(calloutLabelKey, \"band\", {\n id: `calloutLabelKey`\n }));\n } else if (sectorLabelKey) {\n extraKeyProps.push(keyProperty(sectorLabelKey, \"band\", {\n id: `sectorLabelKey`\n }));\n }\n const radiusScaleType = this.radiusScale.type;\n const angleScaleType = this.radiusScale.type;\n if (radiusKey) {\n extraProps.push(rangedValueProperty(radiusKey, {\n id: \"radiusValue\",\n min: (_a = this.properties.radiusMin) != null ? _a : 0,\n max: this.properties.radiusMax\n }), valueProperty(radiusKey, radiusScaleType, {\n id: `radiusRaw`\n }),\n // Raw value pass-through.\n normalisePropertyTo({\n id: \"radiusValue\"\n }, [0, 1], 1, (_b = this.properties.radiusMin) != null ? _b : 0, this.properties.radiusMax));\n }\n if (calloutLabelKey) {\n extraProps.push(valueProperty(calloutLabelKey, \"band\", {\n id: `calloutLabelValue`\n }));\n }\n if (sectorLabelKey) {\n extraProps.push(valueProperty(sectorLabelKey, \"band\", {\n id: `sectorLabelValue`\n }));\n }\n if (legendItemKey) {\n extraProps.push(valueProperty(legendItemKey, \"band\", {\n id: `legendItemValue`\n }));\n }\n if (animationEnabled && this.processedData && extraKeyProps.length > 0) {\n extraProps.push(diff(this.processedData));\n }\n extraProps.push(animationValidation());\n data = data.map((d, idx) => visible && seriesItemEnabled[idx] ? d : __spreadProps(__spreadValues({}, d), {\n [angleKey]: 0\n }));\n yield this.requestDataModel(dataController, data, {\n props: [...extraKeyProps, accumulativeValueProperty(angleKey, angleScaleType, {\n id: `angleValue`,\n onlyPositive: true\n }), valueProperty(angleKey, angleScaleType, {\n id: `angleRaw`\n }),\n // Raw value pass-through.\n normalisePropertyTo({\n id: \"angleValue\"\n }, [0, 1], 0, 0), ...extraProps]\n });\n for (const valueDef of (_e = (_d = (_c = this.processedData) == null ? void 0 : _c.defs) == null ? void 0 : _d.values) != null ? _e : []) {\n const {\n id,\n missing,\n property\n } = valueDef;\n const missCount = getMissCount(this, missing);\n if (id !== \"angleRaw\" && missCount > 0) {\n Logger.warnOnce(`no value was found for the key '${String(property)}' on ${missCount} data element${missCount > 1 ? \"s\" : \"\"}`);\n }\n }\n this.animationState.transition(\"updateData\");\n });\n }\n maybeRefreshNodeData() {\n return __async(this, null, function* () {\n var _a;\n if (!this.nodeDataRefresh) return;\n const {\n nodeData = []\n } = (_a = yield this.createNodeData()) != null ? _a : {};\n this.nodeData = nodeData;\n this.nodeDataRefresh = false;\n });\n }\n getProcessedDataIndexes(dataModel) {\n const angleIdx = dataModel.resolveProcessedDataIndexById(this, `angleValue`);\n const radiusIdx = this.properties.radiusKey ? dataModel.resolveProcessedDataIndexById(this, `radiusValue`) : -1;\n const calloutLabelIdx = this.properties.calloutLabelKey ? dataModel.resolveProcessedDataIndexById(this, `calloutLabelValue`) : -1;\n const sectorLabelIdx = this.properties.sectorLabelKey ? dataModel.resolveProcessedDataIndexById(this, `sectorLabelValue`) : -1;\n const legendItemIdx = this.properties.legendItemKey ? dataModel.resolveProcessedDataIndexById(this, `legendItemValue`) : -1;\n return {\n angleIdx,\n radiusIdx,\n calloutLabelIdx,\n sectorLabelIdx,\n legendItemIdx\n };\n }\n createNodeData() {\n return __async(this, null, function* () {\n const {\n id: seriesId,\n processedData,\n dataModel,\n angleScale\n } = this;\n const {\n rotation\n } = this.properties;\n if (!processedData || !dataModel || processedData.type !== \"ungrouped\") return;\n const {\n angleIdx,\n radiusIdx,\n calloutLabelIdx,\n sectorLabelIdx,\n legendItemIdx\n } = this.getProcessedDataIndexes(dataModel);\n let currentStart = 0;\n let sum2 = 0;\n const nodeData = processedData.data.map((group2, index) => {\n var _a;\n const {\n datum,\n values\n } = group2;\n const currentValue = values[angleIdx];\n const startAngle = angleScale.convert(currentStart) + toRadians(rotation);\n currentStart = currentValue;\n sum2 += currentValue;\n const endAngle = angleScale.convert(currentStart) + toRadians(rotation);\n const span = Math.abs(endAngle - startAngle);\n const midAngle = startAngle + span / 2;\n const angleValue = values[angleIdx + 1];\n const radius = radiusIdx >= 0 ? (_a = values[radiusIdx]) != null ? _a : 1 : 1;\n const radiusValue = radiusIdx >= 0 ? values[radiusIdx + 1] : void 0;\n const legendItemValue = legendItemIdx >= 0 ? values[legendItemIdx] : void 0;\n const labels = this.getLabels(datum, midAngle, span, true, values[calloutLabelIdx], values[sectorLabelIdx], legendItemValue);\n const sectorFormat = this.getSectorFormat(datum, index, false);\n return __spreadValues({\n itemId: index,\n series: this,\n datum,\n index,\n angleValue,\n midAngle,\n midCos: Math.cos(midAngle),\n midSin: Math.sin(midAngle),\n startAngle,\n endAngle,\n sectorFormat,\n radiusValue,\n radius,\n innerRadius: Math.max(this.radiusScale.convert(0), 0),\n outerRadius: Math.max(this.radiusScale.convert(radius), 0),\n legendItemValue\n }, labels);\n });\n this.zerosumOuterRing.visible = sum2 === 0;\n const {\n innerRadiusRatio = 1\n } = this.properties;\n this.zerosumInnerRing.visible = sum2 === 0 && innerRadiusRatio !== 1 && innerRadiusRatio > 0;\n return {\n itemId: seriesId,\n nodeData,\n labelData: nodeData\n };\n });\n }\n getLabels(datum, midAngle, span, skipDisabled, calloutLabelValue, sectorLabelValue, legendItemValue) {\n const {\n calloutLabel,\n sectorLabel,\n legendItemKey\n } = this.properties;\n const calloutLabelKey = !skipDisabled || calloutLabel.enabled ? this.properties.calloutLabelKey : void 0;\n const sectorLabelKey = !skipDisabled || sectorLabel.enabled ? this.properties.sectorLabelKey : void 0;\n if (!calloutLabelKey && !sectorLabelKey && !legendItemKey) {\n return {};\n }\n const labelFormatterParams = {\n datum,\n angleKey: this.properties.angleKey,\n angleName: this.properties.angleName,\n radiusKey: this.properties.radiusKey,\n radiusName: this.properties.radiusName,\n calloutLabelKey: this.properties.calloutLabelKey,\n calloutLabelName: this.properties.calloutLabelName,\n sectorLabelKey: this.properties.sectorLabelKey,\n sectorLabelName: this.properties.sectorLabelName,\n legendItemKey: this.properties.legendItemKey\n };\n const result = {};\n if (calloutLabelKey && span > toRadians(calloutLabel.minAngle)) {\n result.calloutLabel = __spreadProps(__spreadValues({}, this.getTextAlignment(midAngle)), {\n text: this.getLabelText(calloutLabel, __spreadProps(__spreadValues({}, labelFormatterParams), {\n value: calloutLabelValue\n })),\n hidden: false,\n collisionTextAlign: void 0,\n collisionOffsetY: 0,\n box: void 0\n });\n }\n if (sectorLabelKey) {\n result.sectorLabel = {\n text: this.getLabelText(sectorLabel, __spreadProps(__spreadValues({}, labelFormatterParams), {\n value: sectorLabelValue\n }))\n };\n }\n if (legendItemKey != null && legendItemValue != null) {\n result.legendItem = {\n key: legendItemKey,\n text: legendItemValue\n };\n }\n return result;\n }\n getTextAlignment(midAngle) {\n const 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 const midAngle180 = normalizeAngle180(midAngle);\n const quadrantStart = -0.75 * Math.PI;\n const quadrantOffset = midAngle180 - quadrantStart;\n const quadrant = Math.floor(quadrantOffset / (Math.PI / 2));\n const quadrantIndex = mod(quadrant, quadrantTextOpts.length);\n return quadrantTextOpts[quadrantIndex];\n }\n getSectorFormat(datum, formatIndex, highlight) {\n var _a, _b, _c, _d, _e;\n const {\n callbackCache,\n highlightManager\n } = this.ctx;\n const {\n angleKey,\n radiusKey,\n fills,\n strokes,\n formatter,\n sectorSpacing,\n __BACKGROUND_COLOR_DO_NOT_USE\n } = this.properties;\n const highlightedDatum = highlightManager.getActiveHighlight();\n const isDatumHighlighted = highlight && (highlightedDatum == null ? void 0 : highlightedDatum.series) === this && formatIndex === highlightedDatum.itemId;\n let defaultStroke = strokes[formatIndex % strokes.length];\n if (sectorSpacing != null) {\n defaultStroke != null ? defaultStroke : defaultStroke = __BACKGROUND_COLOR_DO_NOT_USE;\n }\n const {\n fill,\n fillOpacity,\n stroke,\n strokeWidth,\n strokeOpacity\n } = mergeDefaults(isDatumHighlighted && this.properties.highlightStyle.item, {\n fill: fills.length > 0 ? fills[formatIndex % fills.length] : void 0,\n fillOpacity: this.properties.fillOpacity,\n stroke: defaultStroke,\n strokeWidth: this.getStrokeWidth(this.properties.strokeWidth),\n strokeOpacity: this.getOpacity()\n });\n let format2;\n if (formatter) {\n format2 = callbackCache.call(formatter, {\n datum,\n angleKey,\n radiusKey,\n fill,\n stroke,\n fills,\n strokes,\n strokeWidth,\n highlighted: isDatumHighlighted,\n seriesId: this.id\n });\n }\n return {\n fill: (_a = format2 == null ? void 0 : format2.fill) != null ? _a : fill,\n fillOpacity: (_b = format2 == null ? void 0 : format2.fillOpacity) != null ? _b : fillOpacity,\n stroke: (_c = format2 == null ? void 0 : format2.stroke) != null ? _c : stroke,\n strokeWidth: (_d = format2 == null ? void 0 : format2.strokeWidth) != null ? _d : strokeWidth,\n strokeOpacity: (_e = format2 == null ? void 0 : format2.strokeOpacity) != null ? _e : strokeOpacity\n };\n }\n getInnerRadius() {\n const {\n radius\n } = this;\n const {\n innerRadiusRatio = 1,\n innerRadiusOffset = 0\n } = this.properties;\n const innerRadius = radius * innerRadiusRatio + innerRadiusOffset;\n if (innerRadius === radius || innerRadius < 0) {\n return 0;\n }\n return innerRadius;\n }\n getOuterRadius() {\n return Math.max(this.radius * this.properties.outerRadiusRatio + this.properties.outerRadiusOffset, 0);\n }\n updateRadiusScale(resize) {\n const newRange = [this.getInnerRadius(), this.getOuterRadius()];\n this.radiusScale.range = newRange;\n if (resize) {\n this.previousRadiusScale.range = newRange;\n }\n this.nodeData = this.nodeData.map(_a => {\n var _b = _a,\n {\n radius\n } = _b,\n d = __objRest(_b, [\"radius\"]);\n return __spreadProps(__spreadValues({}, d), {\n radius,\n innerRadius: Math.max(this.radiusScale.convert(0), 0),\n outerRadius: Math.max(this.radiusScale.convert(radius), 0)\n });\n });\n }\n getTitleTranslationY() {\n var _a, _b;\n const outerRadius = Math.max(0, this.radiusScale.range[1]);\n if (outerRadius === 0) {\n return NaN;\n }\n const spacing = (_b = (_a = this.properties.title) == null ? void 0 : _a.spacing) != null ? _b : 0;\n const titleOffset = 2 + spacing;\n const dy = Math.max(0, -outerRadius);\n return -outerRadius - titleOffset - dy;\n }\n update(_0) {\n return __async(this, arguments, function* ({\n seriesRect\n }) {\n const {\n title\n } = this.properties;\n const newNodeDataDependencies = {\n seriesRectWidth: seriesRect == null ? void 0 : seriesRect.width,\n seriesRectHeight: seriesRect == null ? void 0 : seriesRect.height\n };\n const resize = jsonDiff(this.nodeDataDependencies, newNodeDataDependencies) != null;\n if (resize) {\n this._nodeDataDependencies = newNodeDataDependencies;\n }\n yield this.maybeRefreshNodeData();\n this.updateTitleNodes();\n this.updateRadiusScale(resize);\n this.contentGroup.translationX = this.centerX;\n this.contentGroup.translationY = this.centerY;\n this.highlightGroup.translationX = this.centerX;\n this.highlightGroup.translationY = this.centerY;\n this.backgroundGroup.translationX = this.centerX;\n this.backgroundGroup.translationY = this.centerY;\n if (this.labelGroup) {\n this.labelGroup.translationX = this.centerX;\n this.labelGroup.translationY = this.centerY;\n }\n if (title) {\n const dy = this.getTitleTranslationY();\n const titleBox = title.node.computeBBox();\n title.node.visible = title.enabled && isFinite(dy) && !this.bboxIntersectsSurroundingSeries(titleBox, 0, dy);\n title.node.translationY = isFinite(dy) ? dy : 0;\n }\n for (const circle of [this.zerosumInnerRing, this.zerosumOuterRing]) {\n circle.fillOpacity = 0;\n circle.stroke = this.properties.calloutLabel.color;\n circle.strokeWidth = 1;\n circle.strokeOpacity = 1;\n }\n this.updateNodeMidPoint();\n yield this.updateSelections();\n yield this.updateNodes(seriesRect);\n });\n }\n updateTitleNodes() {\n var _a, _b;\n const {\n oldTitle\n } = this;\n const {\n title\n } = this.properties;\n if (oldTitle !== title) {\n if (oldTitle) {\n (_a = this.labelGroup) == null ? void 0 : _a.removeChild(oldTitle.node);\n }\n if (title) {\n title.node.textBaseline = \"bottom\";\n (_b = this.labelGroup) == null ? void 0 : _b.appendChild(title.node);\n }\n this.oldTitle = title;\n }\n }\n updateNodeMidPoint() {\n this.nodeData.forEach(d => {\n const radius = d.innerRadius + (d.outerRadius - d.innerRadius) / 2;\n d.midPoint = {\n x: d.midCos * Math.max(0, radius),\n y: d.midSin * Math.max(0, radius)\n };\n });\n }\n updateSelections() {\n return __async(this, null, function* () {\n yield this.updateGroupSelection();\n this.updateInnerCircleSelection();\n });\n }\n updateGroupSelection() {\n return __async(this, null, function* () {\n const {\n itemSelection,\n highlightSelection,\n calloutLabelSelection,\n sectorLabelSelection,\n innerLabelsSelection\n } = this;\n const update = (selection, clone) => {\n let nodeData = this.nodeData;\n if (clone) {\n nodeData = nodeData.map(datum => __spreadProps(__spreadValues({}, datum), {\n sectorFormat: __spreadValues({}, datum.sectorFormat)\n }));\n }\n selection.update(nodeData, void 0, datum => this.getDatumId(datum));\n if (this.ctx.animationManager.isSkipped()) {\n selection.cleanup();\n }\n };\n update(itemSelection, false);\n update(highlightSelection, true);\n calloutLabelSelection.update(this.nodeData, group2 => {\n const line = new Line();\n line.tag = 0 /* Callout */;\n line.pointerEvents = 1 /* None */;\n group2.appendChild(line);\n const text = new Text();\n text.tag = 1 /* Label */;\n text.pointerEvents = 1 /* None */;\n group2.appendChild(text);\n });\n sectorLabelSelection.update(this.nodeData, node => {\n node.pointerEvents = 1 /* None */;\n });\n innerLabelsSelection.update(this.properties.innerLabels, node => {\n node.pointerEvents = 1 /* None */;\n });\n });\n }\n updateInnerCircleSelection() {\n const {\n innerCircle\n } = this.properties;\n let radius = 0;\n const innerRadius = this.getInnerRadius();\n if (innerRadius > 0) {\n const circleRadius = Math.min(innerRadius, this.getOuterRadius());\n const antiAliasingPadding = 1;\n radius = Math.ceil(circleRadius * 2 + antiAliasingPadding);\n }\n const datums = innerCircle ? [{\n radius\n }] : [];\n this.innerCircleSelection.update(datums);\n }\n updateNodes(seriesRect) {\n return __async(this, null, function* () {\n const highlightedDatum = this.ctx.highlightManager.getActiveHighlight();\n const isVisible = this.visible && this.seriesItemEnabled.indexOf(true) >= 0;\n this.rootGroup.visible = isVisible;\n this.backgroundGroup.visible = isVisible;\n this.contentGroup.visible = isVisible;\n this.highlightGroup.visible = isVisible && (highlightedDatum == null ? void 0 : highlightedDatum.series) === this;\n if (this.labelGroup) {\n this.labelGroup.visible = isVisible;\n }\n this.contentGroup.opacity = this.getOpacity();\n this.innerCircleSelection.each((node, {\n radius\n }) => {\n var _a, _b;\n node.setProperties({\n fill: (_a = this.properties.innerCircle) == null ? void 0 : _a.fill,\n opacity: (_b = this.properties.innerCircle) == null ? void 0 : _b.fillOpacity,\n size: radius\n });\n });\n const updateSectorFn = (sector, datum, _index, isDatumHighlighted) => {\n const format2 = this.getSectorFormat(datum.datum, datum.itemId, isDatumHighlighted);\n datum.sectorFormat.fill = format2.fill;\n datum.sectorFormat.stroke = format2.stroke;\n const animationDisabled = this.ctx.animationManager.isSkipped();\n if (animationDisabled) {\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n sector.innerRadius = datum.innerRadius;\n sector.outerRadius = datum.outerRadius;\n }\n if (isDatumHighlighted || animationDisabled) {\n sector.fill = format2.fill;\n sector.stroke = format2.stroke;\n }\n sector.strokeWidth = format2.strokeWidth;\n sector.fillOpacity = format2.fillOpacity;\n sector.strokeOpacity = this.properties.strokeOpacity;\n sector.lineDash = this.properties.lineDash;\n sector.lineDashOffset = this.properties.lineDashOffset;\n sector.fillShadow = this.properties.shadow;\n sector.cornerRadius = this.properties.cornerRadius;\n sector.inset = this.properties.sectorSpacing != null ? (this.properties.sectorSpacing + (format2.stroke != null ? format2.strokeWidth : 0)) / 2 : 0;\n sector.lineJoin = this.properties.sectorSpacing != null ? \"miter\" : \"round\";\n };\n this.itemSelection.each((node, datum, index) => updateSectorFn(node, datum, index, false));\n this.highlightSelection.each((node, datum, index) => {\n const isDatumHighlighted = (highlightedDatum == null ? void 0 : highlightedDatum.series) === this && node.datum.itemId === highlightedDatum.itemId;\n updateSectorFn(node, datum, index, true);\n node.visible = isDatumHighlighted;\n });\n this.updateCalloutLineNodes();\n this.updateCalloutLabelNodes(seriesRect);\n this.updateSectorLabelNodes();\n this.updateInnerLabelNodes();\n this.updateZerosumRings();\n this.animationState.transition(\"update\");\n });\n }\n updateCalloutLineNodes() {\n var _a;\n const {\n calloutLine\n } = this.properties;\n const calloutLength = calloutLine.length;\n const calloutStrokeWidth = calloutLine.strokeWidth;\n const calloutColors = (_a = calloutLine.colors) != null ? _a : this.properties.strokes;\n const {\n offset: offset4\n } = this.properties.calloutLabel;\n this.calloutLabelSelection.selectByTag(0 /* Callout */).forEach((line, index) => {\n var _a2;\n const datum = line.datum;\n const {\n calloutLabel: label,\n outerRadius\n } = datum;\n if ((label == null ? void 0 : label.text) && !label.hidden && outerRadius !== 0) {\n line.visible = true;\n line.strokeWidth = calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.fill = void 0;\n const x1 = datum.midCos * outerRadius;\n const y1 = datum.midSin * outerRadius;\n let x2 = datum.midCos * (outerRadius + calloutLength);\n let y2 = datum.midSin * (outerRadius + calloutLength);\n const isMoved = (_a2 = label.collisionTextAlign) != null ? _a2 : label.collisionOffsetY !== 0;\n if (isMoved && label.box != null) {\n const box = label.box;\n let cx = x2;\n let cy = y2;\n if (x2 < box.x) {\n cx = box.x;\n } else if (x2 > box.x + box.width) {\n cx = box.x + box.width;\n }\n if (y2 < box.y) {\n cy = box.y;\n } else if (y2 > box.y + box.height) {\n cy = box.y + box.height;\n }\n const dx = cx - x2;\n const dy = cy - y2;\n const length = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n const paddedLength = length - offset4;\n if (paddedLength > 0) {\n x2 = x2 + dx * paddedLength / length;\n y2 = y2 + dy * paddedLength / length;\n }\n }\n line.x1 = x1;\n line.y1 = y1;\n line.x2 = x2;\n line.y2 = y2;\n } else {\n line.visible = false;\n }\n });\n }\n getLabelOverflow(text, box, seriesRect) {\n const seriesLeft = seriesRect.x - this.centerX;\n const seriesRight = seriesRect.x + seriesRect.width - this.centerX;\n const seriesTop = seriesRect.y - this.centerY;\n const seriesBottom = seriesRect.y + seriesRect.height - this.centerY;\n const errPx = 1;\n let visibleTextPart = 1;\n if (box.x + errPx < seriesLeft) {\n visibleTextPart = (box.x + box.width - seriesLeft) / box.width;\n } else if (box.x + box.width - errPx > seriesRight) {\n visibleTextPart = (seriesRight - box.x) / box.width;\n }\n const hasVerticalOverflow = box.y + errPx < seriesTop || box.y + box.height - errPx > seriesBottom;\n const textLength = visibleTextPart === 1 ? text.length : Math.floor(text.length * visibleTextPart) - 1;\n const hasSurroundingSeriesOverflow = this.bboxIntersectsSurroundingSeries(box);\n return {\n textLength,\n hasVerticalOverflow,\n hasSurroundingSeriesOverflow\n };\n }\n bboxIntersectsSurroundingSeries(box, dx = 0, dy = 0) {\n const {\n surroundingRadius\n } = this;\n if (surroundingRadius == null) {\n return false;\n }\n const corners = [{\n x: box.x + dx,\n y: box.y + dy\n }, {\n x: box.x + box.width + dx,\n y: box.y + dy\n }, {\n x: box.x + box.width + dx,\n y: box.y + box.height + dy\n }, {\n x: box.x + dx,\n y: box.y + box.height + dy\n }];\n const sur2 = __pow(surroundingRadius, 2);\n return corners.some(corner => __pow(corner.x, 2) + __pow(corner.y, 2) > sur2);\n }\n computeCalloutLabelCollisionOffsets() {\n const {\n radiusScale\n } = this;\n const {\n calloutLabel,\n calloutLine\n } = this.properties;\n const {\n offset: offset4,\n minSpacing\n } = calloutLabel;\n const innerRadius = radiusScale.convert(0);\n const shouldSkip = datum => {\n const label = datum.calloutLabel;\n return !label || datum.outerRadius === 0;\n };\n const fullData = this.nodeData;\n const data = this.nodeData.filter(t => !shouldSkip(t));\n data.forEach(datum => {\n const label = datum.calloutLabel;\n if (label == null) return;\n label.hidden = false;\n label.collisionTextAlign = void 0;\n label.collisionOffsetY = 0;\n });\n if (data.length <= 1) {\n return;\n }\n const leftLabels = data.filter(d => d.midCos < 0).sort((a, b) => a.midSin - b.midSin);\n const rightLabels = data.filter(d => d.midCos >= 0).sort((a, b) => a.midSin - b.midSin);\n const topLabels = data.filter(d => {\n var _a;\n return d.midSin < 0 && ((_a = d.calloutLabel) == null ? void 0 : _a.textAlign) === \"center\";\n }).sort((a, b) => a.midCos - b.midCos);\n const bottomLabels = data.filter(d => {\n var _a;\n return d.midSin >= 0 && ((_a = d.calloutLabel) == null ? void 0 : _a.textAlign) === \"center\";\n }).sort((a, b) => a.midCos - b.midCos);\n const tempTextNode = new Text();\n const getTextBBox = datum => {\n var _a;\n const label = datum.calloutLabel;\n if (label == null) return new BBox(0, 0, 0, 0);\n const labelRadius = datum.outerRadius + calloutLine.length + offset4;\n const x = datum.midCos * labelRadius;\n const y = datum.midSin * labelRadius + label.collisionOffsetY;\n tempTextNode.text = label.text;\n tempTextNode.x = x;\n tempTextNode.y = y;\n tempTextNode.setFont(this.properties.calloutLabel);\n tempTextNode.setAlign({\n textAlign: (_a = label.collisionTextAlign) != null ? _a : label.textAlign,\n textBaseline: label.textBaseline\n });\n return tempTextNode.computeBBox();\n };\n const avoidNeighbourYCollision = (label, next, direction) => {\n const box = getTextBBox(label).grow(minSpacing / 2);\n const other = getTextBBox(next).grow(minSpacing / 2);\n const collidesOrBehind = box.x < other.x + other.width && box.x + box.width > other.x && (direction === \"to-top\" ? box.y < other.y + other.height : box.y + box.height > other.y);\n if (collidesOrBehind) {\n const dy = direction === \"to-top\" ? box.y - other.y - other.height : box.y + box.height - other.y;\n next.calloutLabel.collisionOffsetY = dy;\n }\n };\n const avoidYCollisions = labels => {\n const midLabel = labels.slice().sort((a, b) => Math.abs(a.midSin) - Math.abs(b.midSin))[0];\n const midIndex = labels.indexOf(midLabel);\n for (let i = midIndex - 1; i >= 0; i--) {\n const prev = labels[i + 1];\n const next = labels[i];\n avoidNeighbourYCollision(prev, next, \"to-top\");\n }\n for (let i = midIndex + 1; i < labels.length; i++) {\n const prev = labels[i - 1];\n const next = labels[i];\n avoidNeighbourYCollision(prev, next, \"to-bottom\");\n }\n };\n const avoidXCollisions = labels => {\n const labelsCollideLabelsByY = data.some(datum => datum.calloutLabel.collisionOffsetY !== 0);\n const boxes = labels.map(label => getTextBBox(label));\n const paddedBoxes = boxes.map(box => box.clone().grow(minSpacing / 2));\n let labelsCollideLabelsByX = false;\n for (let i = 0; i < paddedBoxes.length && !labelsCollideLabelsByX; i++) {\n const box = paddedBoxes[i];\n for (let j = i + 1; j < labels.length; j++) {\n const other = paddedBoxes[j];\n if (box.collidesBBox(other)) {\n labelsCollideLabelsByX = true;\n break;\n }\n }\n }\n const sectors = fullData.map(datum => {\n const {\n startAngle,\n endAngle,\n outerRadius\n } = datum;\n return {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n };\n });\n const labelsCollideSectors = boxes.some(box => {\n return sectors.some(sector => boxCollidesSector(box, sector));\n });\n if (!labelsCollideLabelsByX && !labelsCollideLabelsByY && !labelsCollideSectors) {\n return;\n }\n labels.filter(d => d.calloutLabel.textAlign === \"center\").forEach(d => {\n const label = d.calloutLabel;\n if (d.midCos < 0) {\n label.collisionTextAlign = \"right\";\n } else if (d.midCos > 0) {\n label.collisionTextAlign = \"left\";\n } else {\n label.collisionTextAlign = \"center\";\n }\n });\n };\n avoidYCollisions(leftLabels);\n avoidYCollisions(rightLabels);\n avoidXCollisions(topLabels);\n avoidXCollisions(bottomLabels);\n }\n updateCalloutLabelNodes(seriesRect) {\n const {\n radiusScale\n } = this;\n const {\n calloutLabel,\n calloutLine\n } = this.properties;\n const calloutLength = calloutLine.length;\n const {\n offset: offset4,\n color\n } = calloutLabel;\n const tempTextNode = new Text();\n this.calloutLabelSelection.selectByTag(1 /* Label */).forEach(text => {\n var _a;\n const {\n datum\n } = text;\n const label = datum.calloutLabel;\n const radius = radiusScale.convert(datum.radius);\n const outerRadius = Math.max(0, radius);\n if (!(label == null ? void 0 : label.text) || outerRadius === 0 || label.hidden) {\n text.visible = false;\n return;\n }\n const labelRadius = outerRadius + calloutLength + offset4;\n const x = datum.midCos * labelRadius;\n const y = datum.midSin * labelRadius + label.collisionOffsetY;\n const align = {\n textAlign: (_a = label.collisionTextAlign) != null ? _a : label.textAlign,\n textBaseline: label.textBaseline\n };\n tempTextNode.text = label.text;\n tempTextNode.x = x;\n tempTextNode.y = y;\n tempTextNode.setFont(this.properties.calloutLabel);\n tempTextNode.setAlign(align);\n const box = tempTextNode.computeBBox();\n let displayText = label.text;\n let visible = true;\n if (calloutLabel.avoidCollisions) {\n const {\n textLength,\n hasVerticalOverflow\n } = this.getLabelOverflow(label.text, box, seriesRect);\n displayText = label.text.length === textLength ? label.text : `${label.text.substring(0, textLength)}\\u2026`;\n visible = !hasVerticalOverflow;\n }\n text.text = displayText;\n text.x = x;\n text.y = y;\n text.setFont(this.properties.calloutLabel);\n text.setAlign(align);\n text.fill = color;\n text.visible = visible;\n });\n }\n computeLabelsBBox(options, seriesRect) {\n return __async(this, null, function* () {\n const {\n calloutLabel,\n calloutLine\n } = this.properties;\n const calloutLength = calloutLine.length;\n const {\n offset: offset4,\n maxCollisionOffset,\n minSpacing\n } = calloutLabel;\n if (!calloutLabel.avoidCollisions) {\n return null;\n }\n yield this.maybeRefreshNodeData();\n this.updateRadiusScale(false);\n this.computeCalloutLabelCollisionOffsets();\n const textBoxes = [];\n const text = new Text();\n let titleBox;\n const {\n title\n } = this.properties;\n if ((title == null ? void 0 : title.text) && title.enabled) {\n const dy = this.getTitleTranslationY();\n if (isFinite(dy)) {\n text.text = title.text;\n text.x = 0;\n text.y = dy;\n text.setFont(title);\n text.setAlign({\n textBaseline: \"bottom\",\n textAlign: \"center\"\n });\n titleBox = text.computeBBox();\n textBoxes.push(titleBox);\n }\n }\n this.nodeData.forEach(datum => {\n var _a;\n const label = datum.calloutLabel;\n if (!label || datum.outerRadius === 0) {\n return null;\n }\n const labelRadius = datum.outerRadius + calloutLength + offset4;\n const x = datum.midCos * labelRadius;\n const y = datum.midSin * labelRadius + label.collisionOffsetY;\n text.text = label.text;\n text.x = x;\n text.y = y;\n text.setFont(this.properties.calloutLabel);\n text.setAlign({\n textAlign: (_a = label.collisionTextAlign) != null ? _a : label.textAlign,\n textBaseline: label.textBaseline\n });\n const box = text.computeBBox();\n label.box = box;\n if (Math.abs(label.collisionOffsetY) > maxCollisionOffset) {\n label.hidden = true;\n return;\n }\n if (titleBox) {\n const seriesTop = seriesRect.y - this.centerY;\n const titleCleanArea = new BBox(titleBox.x - minSpacing, seriesTop, titleBox.width + 2 * minSpacing, titleBox.y + titleBox.height + minSpacing - seriesTop);\n if (box.collidesBBox(titleCleanArea)) {\n label.hidden = true;\n return;\n }\n }\n if (options.hideWhenNecessary) {\n const {\n textLength,\n hasVerticalOverflow,\n hasSurroundingSeriesOverflow\n } = this.getLabelOverflow(label.text, box, seriesRect);\n const isTooShort = label.text.length > 2 && textLength < 2;\n if (hasVerticalOverflow || isTooShort || hasSurroundingSeriesOverflow) {\n label.hidden = true;\n return;\n }\n }\n label.hidden = false;\n textBoxes.push(box);\n });\n if (textBoxes.length === 0) {\n return null;\n }\n return BBox.merge(textBoxes);\n });\n }\n updateSectorLabelNodes() {\n const {\n radiusScale\n } = this;\n const innerRadius = radiusScale.convert(0);\n const {\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n positionOffset,\n positionRatio,\n color\n } = this.properties.sectorLabel;\n const isDonut = innerRadius > 0;\n const singleVisibleSector = this.seriesItemEnabled.filter(Boolean).length === 1;\n this.sectorLabelSelection.each((text, datum) => {\n const {\n sectorLabel,\n outerRadius\n } = datum;\n let isTextVisible = false;\n if (sectorLabel && outerRadius !== 0) {\n const labelRadius = innerRadius * (1 - positionRatio) + outerRadius * 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 const shouldPutTextInCenter = !isDonut && 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 const bbox = text.computeBBox();\n const 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 const {\n startAngle,\n endAngle\n } = datum;\n const sectorBounds = {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n };\n if (corners.every(([x, y]) => isPointInSector(x, y, sectorBounds))) {\n isTextVisible = true;\n }\n }\n text.visible = isTextVisible;\n });\n }\n updateInnerLabelNodes() {\n const textBBoxes = [];\n const margins = [];\n this.innerLabelsSelection.each((text, datum) => {\n const {\n fontStyle,\n fontWeight,\n fontSize,\n fontFamily,\n color,\n margin = 2\n } = datum;\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(margin);\n });\n const getMarginTop = index => index === 0 ? 0 : margins[index];\n const getMarginBottom = index => index === margins.length - 1 ? 0 : margins[index];\n const totalHeight = textBBoxes.reduce((sum2, bbox, i) => {\n return sum2 + bbox.height + getMarginTop(i) + getMarginBottom(i);\n }, 0);\n const totalWidth = Math.max(...textBBoxes.map(bbox => bbox.width));\n const innerRadius = this.getInnerRadius();\n const labelRadius = Math.sqrt(Math.pow(totalWidth / 2, 2) + Math.pow(totalHeight / 2, 2));\n const labelsVisible = labelRadius <= (innerRadius > 0 ? innerRadius : this.getOuterRadius());\n const textBottoms = [];\n for (let i = 0, prev = -totalHeight / 2; i < textBBoxes.length; i++) {\n const bbox = textBBoxes[i];\n const bottom = bbox.height + prev + getMarginTop(i);\n textBottoms.push(bottom);\n prev = bottom + getMarginBottom(i);\n }\n this.innerLabelsSelection.each((text, _datum, index) => {\n text.y = textBottoms[index];\n text.visible = labelsVisible;\n });\n }\n updateZerosumRings() {\n this.zerosumOuterRing.size = this.getOuterRadius() * 2;\n this.zerosumInnerRing.size = this.getInnerRadius() * 2;\n }\n getDatumLegendName(nodeDatum) {\n const {\n angleKey,\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n const {\n sectorLabel,\n calloutLabel,\n legendItem\n } = nodeDatum;\n if (legendItemKey && legendItem !== void 0) {\n return legendItem.text;\n } else if (calloutLabelKey && calloutLabelKey !== angleKey && (calloutLabel == null ? void 0 : calloutLabel.text) !== void 0) {\n return calloutLabel.text;\n } else if (sectorLabelKey && sectorLabelKey !== angleKey && (sectorLabel == null ? void 0 : sectorLabel.text) !== void 0) {\n return sectorLabel.text;\n }\n }\n pickNodeClosestDatum(point) {\n return pickByMatchingAngle(this, point);\n }\n getTooltipHtml(nodeDatum) {\n var _a;\n if (!this.properties.isValid()) {\n return EMPTY_TOOLTIP_CONTENT;\n }\n const {\n datum,\n angleValue,\n sectorFormat: {\n fill: color\n },\n itemId\n } = nodeDatum;\n const title = sanitizeHtml((_a = this.properties.title) == null ? void 0 : _a.text);\n const content = isFiniteNumber(angleValue) ? toFixed(angleValue) : String(angleValue);\n const labelText = this.getDatumLegendName(nodeDatum);\n return this.properties.tooltip.toTooltipHtml({\n title: title != null ? title : labelText,\n content: title && labelText ? `${labelText}: ${content}` : content,\n backgroundColor: color\n }, {\n datum,\n itemId,\n title,\n color,\n seriesId: this.id,\n angleKey: this.properties.angleKey,\n angleName: this.properties.angleName,\n radiusKey: this.properties.radiusKey,\n radiusName: this.properties.radiusName,\n calloutLabelKey: this.properties.calloutLabelKey,\n calloutLabelName: this.properties.calloutLabelName,\n sectorLabelKey: this.properties.sectorLabelKey,\n sectorLabelName: this.properties.sectorLabelName,\n legendItemKey: this.properties.legendItemKey\n });\n }\n getLegendData(legendType) {\n var _a, _b, _c, _d, _e;\n const {\n visible,\n processedData,\n dataModel\n } = this;\n if (!dataModel || !(processedData == null ? void 0 : processedData.data.length) || legendType !== \"category\") {\n return [];\n }\n const {\n angleKey,\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n if (!legendItemKey && (!calloutLabelKey || calloutLabelKey === angleKey) && (!sectorLabelKey || sectorLabelKey === angleKey)) {\n return [];\n }\n const {\n calloutLabelIdx,\n sectorLabelIdx,\n legendItemIdx\n } = this.getProcessedDataIndexes(dataModel);\n const titleText = ((_a = this.properties.title) == null ? void 0 : _a.showInLegend) && this.properties.title.text;\n const legendData = [];\n for (let index = 0; index < processedData.data.length; index++) {\n const {\n datum,\n values\n } = processedData.data[index];\n const labelParts = [];\n if (titleText) {\n labelParts.push(titleText);\n }\n const labels = this.getLabels(datum, 2 * Math.PI, 2 * Math.PI, false, values[calloutLabelIdx], values[sectorLabelIdx], values[legendItemIdx]);\n if (legendItemKey && labels.legendItem !== void 0) {\n labelParts.push(labels.legendItem.text);\n } else if (calloutLabelKey && calloutLabelKey !== angleKey && ((_b = labels.calloutLabel) == null ? void 0 : _b.text) !== void 0) {\n labelParts.push((_c = labels.calloutLabel) == null ? void 0 : _c.text);\n } else if (sectorLabelKey && sectorLabelKey !== angleKey && ((_d = labels.sectorLabel) == null ? void 0 : _d.text) !== void 0) {\n labelParts.push((_e = labels.sectorLabel) == null ? void 0 : _e.text);\n }\n if (labelParts.length === 0) continue;\n const sectorFormat = this.getSectorFormat(datum, index, false);\n legendData.push({\n legendType: \"category\",\n id: this.id,\n itemId: index,\n seriesId: this.id,\n enabled: visible && this.seriesItemEnabled[index],\n label: {\n text: labelParts.join(\" - \")\n },\n marker: {\n fill: sectorFormat.fill,\n stroke: sectorFormat.stroke,\n fillOpacity: this.properties.fillOpacity,\n strokeOpacity: this.properties.strokeOpacity,\n strokeWidth: this.properties.strokeWidth\n },\n legendItemName: legendItemKey != null ? datum[legendItemKey] : void 0\n });\n }\n return legendData;\n }\n onLegendItemClick(event) {\n const {\n enabled,\n itemId,\n series,\n legendItemName\n } = event;\n if (series.id === this.id) {\n this.toggleSeriesItem(itemId, enabled);\n } else if (legendItemName != null) {\n this.toggleOtherSeriesItems(legendItemName, enabled);\n }\n }\n toggleSeriesItem(itemId, enabled) {\n this.seriesItemEnabled[itemId] = enabled;\n this.nodeDataRefresh = true;\n }\n toggleOtherSeriesItems(legendItemName, enabled) {\n var _a;\n if (!this.properties.legendItemKey || !this.dataModel) {\n return;\n }\n const legendItemIdx = this.dataModel.resolveProcessedDataIndexById(this, `legendItemValue`);\n (_a = this.processedData) == null ? void 0 : _a.data.forEach(({\n values\n }, datumItemId) => {\n if (values[legendItemIdx] === legendItemName) {\n this.toggleSeriesItem(datumItemId, enabled);\n }\n });\n }\n animateEmptyUpdateReady(_data) {\n const {\n animationManager\n } = this.ctx;\n const fns = preparePieSeriesAnimationFunctions(true, this.properties.rotation, this.radiusScale, this.previousRadiusScale);\n fromToMotion(this.id, \"nodes\", animationManager, [this.itemSelection, this.highlightSelection], fns.nodes);\n fromToMotion(this.id, `innerCircle`, animationManager, [this.innerCircleSelection], fns.innerCircle);\n seriesLabelFadeInAnimation(this, \"callout\", animationManager, this.calloutLabelSelection);\n seriesLabelFadeInAnimation(this, \"sector\", animationManager, this.sectorLabelSelection);\n seriesLabelFadeInAnimation(this, \"inner\", animationManager, this.innerLabelsSelection);\n this.previousRadiusScale.range = this.radiusScale.range;\n }\n animateWaitingUpdateReady() {\n var _a, _b, _c, _d, _e, _f;\n const {\n itemSelection,\n highlightSelection,\n processedData,\n radiusScale,\n previousRadiusScale\n } = this;\n const {\n animationManager\n } = this.ctx;\n const dataDiff = (_a = processedData == null ? void 0 : processedData.reduced) == null ? void 0 : _a.diff;\n this.ctx.animationManager.stopByAnimationGroupId(this.id);\n const supportedDiff = ((_b = dataDiff == null ? void 0 : dataDiff.moved.size) != null ? _b : 0) === 0;\n const hasKeys = ((_c = processedData == null ? void 0 : processedData.defs.keys.length) != null ? _c : 0) > 0;\n const hasUniqueKeys = (_f = (_e = (_d = processedData == null ? void 0 : processedData.reduced) == null ? void 0 : _d.animationValidation) == null ? void 0 : _e.uniqueKeys) != null ? _f : true;\n if (!supportedDiff || !hasKeys || !hasUniqueKeys) {\n this.ctx.animationManager.skipCurrentBatch();\n }\n const fns = preparePieSeriesAnimationFunctions(false, this.properties.rotation, radiusScale, previousRadiusScale);\n fromToMotion(this.id, \"nodes\", animationManager, [itemSelection, highlightSelection], fns.nodes, (_, datum) => this.getDatumId(datum), dataDiff);\n fromToMotion(this.id, `innerCircle`, animationManager, [this.innerCircleSelection], fns.innerCircle);\n seriesLabelFadeInAnimation(this, \"callout\", this.ctx.animationManager, this.calloutLabelSelection);\n seriesLabelFadeInAnimation(this, \"sector\", this.ctx.animationManager, this.sectorLabelSelection);\n seriesLabelFadeInAnimation(this, \"inner\", this.ctx.animationManager, this.innerLabelsSelection);\n this.previousRadiusScale.range = this.radiusScale.range;\n }\n animateClearingUpdateEmpty() {\n const {\n itemSelection,\n highlightSelection,\n radiusScale,\n previousRadiusScale\n } = this;\n const {\n animationManager\n } = this.ctx;\n const fns = preparePieSeriesAnimationFunctions(false, this.properties.rotation, radiusScale, previousRadiusScale);\n fromToMotion(this.id, \"nodes\", animationManager, [itemSelection, highlightSelection], fns.nodes);\n fromToMotion(this.id, `innerCircle`, animationManager, [this.innerCircleSelection], fns.innerCircle);\n seriesLabelFadeOutAnimation(this, \"callout\", this.ctx.animationManager, this.calloutLabelSelection);\n seriesLabelFadeOutAnimation(this, \"sector\", this.ctx.animationManager, this.sectorLabelSelection);\n seriesLabelFadeOutAnimation(this, \"inner\", this.ctx.animationManager, this.innerLabelsSelection);\n this.previousRadiusScale.range = this.radiusScale.range;\n }\n getDatumIdFromData(datum) {\n var _a, _b, _c;\n const {\n calloutLabelKey,\n sectorLabelKey,\n legendItemKey\n } = this.properties;\n if (!((_c = (_b = (_a = this.processedData) == null ? void 0 : _a.reduced) == null ? void 0 : _b.animationValidation) == null ? void 0 : _c.uniqueKeys)) {\n return;\n }\n if (legendItemKey) {\n return datum[legendItemKey];\n } else if (calloutLabelKey) {\n return datum[calloutLabelKey];\n } else if (sectorLabelKey) {\n return datum[sectorLabelKey];\n }\n }\n getDatumId(datum) {\n const {\n index\n } = datum;\n const datumId = this.getDatumIdFromData(datum.datum);\n return datumId != null ? String(datumId) : `${index}`;\n }\n onDataChange() {\n var _a;\n const {\n data,\n seriesItemEnabled\n } = this;\n this.seriesItemEnabled = (_a = data == null ? void 0 : data.map((_, index) => {\n var _a2;\n return (_a2 = seriesItemEnabled[index]) != null ? _a2 : true;\n })) != null ? _a : [];\n }\n computeFocusBounds(opts) {\n return computeSectorFocusBounds(this, opts);\n }\n};\nPieSeries.className = \"PieSeries\";\nPieSeries.type = \"pie\";\n\n// packages/ag-charts-community/src/chart/series/polar/pieSeriesModule.ts\nvar PieSeriesModule = {\n type: \"series\",\n optionsKey: \"series[]\",\n packageType: \"community\",\n chartTypes: [\"polar\"],\n identifier: \"pie\",\n instanceConstructor: PieSeries,\n themeTemplate: pieTheme,\n paletteFactory: piePaletteFactory\n};\n\n// packages/ag-charts-community/src/chart/toolbar/toolbarTypes.ts\nvar TOOLBAR_ALIGNMENTS = [\"start\", \"center\", \"end\"];\nvar TOOLBAR_GROUPS = [\"annotations\", \"ranges\", \"zoom\"];\nvar ToolbarPosition = /* @__PURE__ */(ToolbarPosition2 => {\n ToolbarPosition2[\"Top\"] = \"top\";\n ToolbarPosition2[\"Right\"] = \"right\";\n ToolbarPosition2[\"Bottom\"] = \"bottom\";\n ToolbarPosition2[\"Left\"] = \"left\";\n ToolbarPosition2[\"FloatingTop\"] = \"floating-top\";\n ToolbarPosition2[\"FloatingBottom\"] = \"floating-bottom\";\n return ToolbarPosition2;\n})(ToolbarPosition || {});\nvar TOOLBAR_POSITIONS = Object.values(ToolbarPosition);\n\n// packages/ag-charts-community/src/chart/toolbar/toolbarProperties.ts\nvar ToolbarGroupProperties = class extends BaseProperties {\n constructor(onChange, onButtonsChange) {\n super();\n this.onChange = onChange;\n this.onButtonsChange = onButtonsChange;\n this.align = \"start\";\n this.position = \"top\" /* Top */;\n }\n};\n__decorateClass([ObserveChanges(target => {\n target.onChange(target.enabled);\n}), Validate(BOOLEAN)], ToolbarGroupProperties.prototype, \"enabled\", 2);\n__decorateClass([ObserveChanges(target => {\n target.onChange(target.enabled);\n}), Validate(UNION([\"start\", \"center\", \"end\"]), {\n optional: true\n})], ToolbarGroupProperties.prototype, \"align\", 2);\n__decorateClass([ObserveChanges(target => {\n target.onChange(target.enabled);\n}), Validate(UNION([\"top\", \"right\", \"bottom\", \"left\", \"floating-top\", \"floating-bottom\"]), {\n optional: true\n})], ToolbarGroupProperties.prototype, \"position\", 2);\n__decorateClass([ObserveChanges(target => {\n target.onButtonsChange(target.buttons);\n}), Validate(ARRAY, {\n optional: true\n})], ToolbarGroupProperties.prototype, \"buttons\", 2);\n\n// packages/ag-charts-community/src/chart/toolbar/toolbarStyles.ts\nvar block2 = \"ag-charts-toolbar\";\nvar elements2 = {\n align: `${block2}__align`,\n button: `${block2}__button`,\n icon: `${block2}__icon`,\n label: `${block2}__label`\n};\nvar modifiers2 = {\n [\"top\" /* Top */]: `${block2}--top`,\n [\"right\" /* Right */]: `${block2}--right`,\n [\"bottom\" /* Bottom */]: `${block2}--bottom`,\n [\"left\" /* Left */]: `${block2}--left`,\n [\"floating-top\" /* FloatingTop */]: `${block2}--floating-top`,\n [\"floating-bottom\" /* FloatingBottom */]: `${block2}--floating-bottom`,\n hidden: `${block2}--hidden`,\n preventFlash: `${block2}--prevent-flash`,\n floatingHidden: `${block2}--floating-hidden`,\n align: {\n start: `${elements2.align}--start`,\n center: `${elements2.align}--center`,\n end: `${elements2.align}--end`\n },\n button: {\n hidden: `${elements2.button}--hidden`\n }\n};\nvar css2 = `\n.${block2} {\n align-items: center;\n background: var(--ag-charts-toolbar-background-color);\n border-bottom: var(--ag-charts-toolbar-border-critical);\n border-top: var(--ag-charts-toolbar-border-critical);\n border-left: var(--ag-charts-toolbar-border);\n border-right: var(--ag-charts-toolbar-border);\n display: flex;\n flex-wrap: nowrap;\n opacity: 1;\n position: absolute;\n transform: translateY(0);\n transition: opacity 0.2s ease-in-out, transform 0.2s ease-in-out;\n}\n\n.${modifiers2.hidden},\n.${modifiers2.preventFlash} {\n visibility: hidden;\n}\n\n.${modifiers2.floatingHidden} {\n opacity: 0;\n transition: opacity 0.4s ease-in-out;\n}\n\n.${modifiers2[\"top\" /* Top */]},\n.${modifiers2[\"bottom\" /* Bottom */]} {\n flex-direction: row;\n height: var(--ag-charts-toolbar-size);\n padding: 0 var(--ag-charts-toolbar-padding);\n width: 100%;\n}\n\n.${modifiers2[\"left\" /* Left */]},\n.${modifiers2[\"right\" /* Right */]} {\n flex-direction: column;\n padding: var(--ag-charts-toolbar-padding) 0;\n width: var(--ag-charts-toolbar-size);\n}\n\n.${modifiers2[\"floating-top\" /* FloatingTop */]},\n.${modifiers2[\"floating-bottom\" /* FloatingBottom */]} {\n background: none;\n border: none;\n flex-direction: row;\n height: var(--ag-charts-toolbar-size);\n overflow: hidden;\n padding: 0 var(--ag-charts-toolbar-padding);\n pointer-events: none;\n width: 100%;\n}\n\n.${elements2.align} {\n display: flex;\n flex-direction: inherit;\n flex-wrap: inherit;\n max-width: 100%;\n}\n\n.${modifiers2.align.center},\n.${modifiers2.align.end} {\n margin-left: auto;\n}\n\n.${modifiers2[\"left\" /* Left */]} .${modifiers2.align.center},\n.${modifiers2[\"left\" /* Left */]} .${modifiers2.align.end},\n.${modifiers2[\"right\" /* Right */]} .${modifiers2.align.center},\n.${modifiers2[\"right\" /* Right */]} .${modifiers2.align.end} {\n margin-left: 0;\n margin-top: auto;\n}\n\n.${modifiers2[\"floating-top\" /* FloatingTop */]} .${elements2.align},\n.${modifiers2[\"floating-bottom\" /* FloatingBottom */]} .${elements2.align} {\n gap: var(--ag-charts-toolbar-gap);\n transition: transform 0.4s ease-in-out;\n}\n\n.${elements2.button} {\n align-items: center;\n border-radius: var(--ag-charts-button-radius);\n color: var(--ag-charts-toolbar-foreground-color);\n display: flex;\n font-size: 14px;\n font-weight: 500;\n justify-content: center;\n margin: 0;\n padding: var(--ag-charts-button-padding);\n pointer-events: all;\n transition: background-color .25s ease-in-out;\n}\n\n.${modifiers2[\"left\" /* Left */]} .${elements2.button},\n.${modifiers2[\"right\" /* Right */]} .${elements2.button} {\n height: var(--ag-charts-toolbar-size);\n max-width: 100%;\n overflow: hidden;\n}\n\n.${modifiers2[\"floating-top\" /* FloatingTop */]} .${elements2.button},\n.${modifiers2[\"floating-bottom\" /* FloatingBottom */]} .${elements2.button} {\n background: var(--ag-charts-toolbar-background-color);\n border: var(--ag-charts-toolbar-border-critical);\n}\n\n.${modifiers2.button.hidden} {\n display: none;\n}\n\n.${elements2.button}:hover {\n background: var(--ag-charts-toolbar-hover-color);\n}\n\n.${elements2.button}:disabled {\n background: var(--ag-charts-toolbar-disabled-background-color);\n color: var(--ag-charts-toolbar-disabled-foreground-color);\n}\n\n.${elements2.button}:not([disabled]) {\n cursor: pointer;\n}\n\n.${elements2.icon} {\n height: 1.2em;\n width: 1.2em;\n}\n\n.${elements2.icon} + .${elements2.label} {\n margin-left: var(--ag-charts-size);\n}\n\n.${elements2.icon},\n.${elements2.label} {\n pointer-events: none;\n}\n\n`;\n\n// packages/ag-charts-community/src/chart/toolbar/toolbar.ts\nvar Toolbar = class extends BaseModuleInstance {\n constructor(ctx) {\n super();\n this.ctx = ctx;\n this.enabled = true;\n this.annotations = new ToolbarGroupProperties(this.onGroupChanged.bind(this, \"annotations\"), this.onGroupButtonsChanged.bind(this, \"annotations\"));\n this.ranges = new ToolbarGroupProperties(this.onGroupChanged.bind(this, \"ranges\"), this.onGroupButtonsChanged.bind(this, \"ranges\"));\n this.zoom = new ToolbarGroupProperties(this.onGroupChanged.bind(this, \"zoom\"), this.onGroupButtonsChanged.bind(this, \"zoom\"));\n this.margin = 10;\n this.floatingDetectionRange = 28;\n this.positions = {\n [\"top\" /* Top */]: /* @__PURE__ */new Set(),\n [\"right\" /* Right */]: /* @__PURE__ */new Set(),\n [\"bottom\" /* Bottom */]: /* @__PURE__ */new Set(),\n [\"left\" /* Left */]: /* @__PURE__ */new Set(),\n [\"floating-top\" /* FloatingTop */]: /* @__PURE__ */new Set(),\n [\"floating-bottom\" /* FloatingBottom */]: /* @__PURE__ */new Set()\n };\n this.positionAlignments = {\n [\"top\" /* Top */]: {},\n [\"right\" /* Right */]: {},\n [\"bottom\" /* Bottom */]: {},\n [\"left\" /* Left */]: {},\n [\"floating-top\" /* FloatingTop */]: {},\n [\"floating-bottom\" /* FloatingBottom */]: {}\n };\n this.groupCallers = {\n annotations: 0,\n ranges: 0,\n zoom: 0\n };\n this.groupButtons = {\n annotations: [],\n ranges: [],\n zoom: []\n };\n this.pendingButtonToggledEvents = [];\n this.groupProxied = /* @__PURE__ */new Set();\n this.container = ctx.toolbarManager.element;\n this.elements = {\n [\"top\" /* Top */]: this.container.appendChild(createElement(\"div\")),\n [\"right\" /* Right */]: this.container.appendChild(createElement(\"div\")),\n [\"bottom\" /* Bottom */]: this.container.appendChild(createElement(\"div\")),\n [\"left\" /* Left */]: this.container.appendChild(createElement(\"div\")),\n [\"floating-top\" /* FloatingTop */]: this.container.appendChild(createElement(\"div\")),\n [\"floating-bottom\" /* FloatingBottom */]: this.container.appendChild(createElement(\"div\"))\n };\n injectStyle(css2, block2);\n this.renderToolbar(\"top\" /* Top */);\n this.renderToolbar(\"right\" /* Right */);\n this.renderToolbar(\"bottom\" /* Bottom */);\n this.renderToolbar(\"left\" /* Left */);\n this.renderToolbar(\"floating-top\" /* FloatingTop */);\n this.renderToolbar(\"floating-bottom\" /* FloatingBottom */);\n this.toggleVisibilities();\n this.destroyFns.push(ctx.interactionManager.addListener(\"hover\", this.onHover.bind(this), 31 /* All */), ctx.interactionManager.addListener(\"leave\", this.onLeave.bind(this), 31 /* All */), ctx.toolbarManager.addListener(\"button-toggled\", this.onButtonToggled.bind(this)), ctx.toolbarManager.addListener(\"group-toggled\", this.onGroupToggled.bind(this)), ctx.toolbarManager.addListener(\"proxy-group-options\", this.onProxyGroupOptions.bind(this)), ctx.layoutService.addListener(\"layout-complete\", this.onLayoutComplete.bind(this)), () => this.destroyElements());\n }\n destroyElements() {\n for (const element2 of Object.values(this.elements)) {\n element2.remove();\n }\n }\n onHover(event) {\n const {\n enabled,\n elements: elements3,\n floatingDetectionRange,\n ctx: {\n scene\n }\n } = this;\n const {\n offsetY,\n sourceEvent: {\n target\n }\n } = event;\n const {\n FloatingBottom,\n FloatingTop\n } = ToolbarPosition;\n if (!enabled) return;\n const bottom = elements3[FloatingBottom];\n const top = elements3[FloatingTop];\n const bottomDetectionY = bottom.offsetTop - floatingDetectionRange;\n const bottomVisible = offsetY > bottomDetectionY && offsetY < scene.canvas.element.offsetHeight || target === bottom;\n const topDetectionY = top.offsetTop + top.offsetHeight + floatingDetectionRange;\n const topVisible = offsetY > 0 && offsetY < topDetectionY || target === top;\n bottom.classList.toggle(modifiers2.floatingHidden, !bottomVisible);\n top.classList.toggle(modifiers2.floatingHidden, !topVisible);\n this.translateFloatingElements(FloatingBottom, bottomVisible);\n this.translateFloatingElements(FloatingTop, topVisible);\n }\n onLeave(event) {\n const {\n enabled,\n elements: elements3,\n ctx: {\n scene\n }\n } = this;\n const {\n relatedTarget,\n target\n } = event.sourceEvent;\n const {\n FloatingBottom,\n FloatingTop\n } = ToolbarPosition;\n if (!enabled || target !== scene.canvas.element) return;\n const isTargetButton = TOOLBAR_GROUPS.some(group2 => this.groupButtons[group2].some(button => button === relatedTarget));\n if (isTargetButton) return;\n elements3[FloatingBottom].classList.add(modifiers2.floatingHidden);\n elements3[FloatingTop].classList.add(modifiers2.floatingHidden);\n this.translateFloatingElements(FloatingBottom, false);\n this.translateFloatingElements(FloatingTop, false);\n }\n onGroupChanged(group2) {\n if (this[group2] == null || this.groupProxied.has(group2)) return;\n this.createGroup(group2);\n this.toggleVisibilities();\n }\n onGroupButtonsChanged(group2, buttons) {\n if (!this.enabled || this.groupProxied.has(group2)) return;\n this.createGroupButtons(group2, buttons);\n this.toggleVisibilities();\n }\n onLayoutComplete() {\n for (const position of TOOLBAR_POSITIONS) {\n this.elements[position].classList.remove(modifiers2.preventFlash);\n }\n }\n onButtonToggled(event) {\n const {\n group: group2,\n value,\n enabled\n } = event;\n if (this.groupButtons[group2].length === 0) {\n this.pendingButtonToggledEvents.push(event);\n return;\n }\n for (const button of this.groupButtons[group2]) {\n if (button.dataset.toolbarValue !== `${value}`) continue;\n button.disabled = !enabled;\n }\n }\n onGroupToggled(event) {\n const {\n group: group2,\n visible\n } = event;\n this.toggleGroup(group2, visible);\n this.toggleVisibilities();\n }\n onProxyGroupOptions(event) {\n const {\n group: group2,\n options\n } = event;\n this.groupProxied.add(group2);\n this.createGroup(group2, options.enabled, options.position);\n this.createGroupButtons(group2, options.buttons);\n this.toggleGroup(group2, options.enabled);\n this[group2].set(options);\n }\n createGroup(group2, enabled, position) {\n enabled != null ? enabled : enabled = this[group2].enabled;\n position != null ? position : position = this[group2].position;\n for (const pos of TOOLBAR_POSITIONS) {\n if (enabled && position === pos) {\n this.positions[pos].add(group2);\n } else {\n this.positions[pos].delete(group2);\n }\n }\n }\n createGroupButtons(group2, buttons) {\n var _a, _b;\n for (const button of this.groupButtons[group2]) {\n button.remove();\n }\n this.groupButtons[group2] = [];\n const align = (_a = this[group2].align) != null ? _a : \"start\";\n const position = (_b = this[group2].position) != null ? _b : \"top\";\n const parent = this.positionAlignments[position][align];\n for (const options of buttons != null ? buttons : []) {\n const button = this.createButtonElement(group2, options);\n parent == null ? void 0 : parent.appendChild(button);\n this.groupButtons[group2].push(button);\n }\n }\n toggleGroup(group2, enabled) {\n if (enabled) {\n this.groupCallers[group2] += 1;\n } else {\n this.groupCallers[group2] = Math.max(0, this.groupCallers[group2] - 1);\n }\n }\n processPendingEvents() {\n var _a;\n const pendingButtonToggledEvents = ((_a = this.pendingButtonToggledEvents) != null ? _a : []).slice();\n for (const event of pendingButtonToggledEvents) {\n this.onButtonToggled(event);\n }\n this.pendingButtonToggledEvents = [];\n }\n performLayout(_0) {\n return __async(this, arguments, function* ({\n shrinkRect\n }) {\n const {\n elements: elements3,\n margin\n } = this;\n if (!elements3.top.classList.contains(modifiers2.hidden)) {\n shrinkRect.shrink(elements3.top.offsetHeight + margin * 2, \"top\");\n }\n if (!elements3.right.classList.contains(modifiers2.hidden)) {\n shrinkRect.shrink(elements3.right.offsetWidth + margin, \"right\");\n }\n if (!elements3.bottom.classList.contains(modifiers2.hidden)) {\n shrinkRect.shrink(elements3.bottom.offsetHeight + margin * 2, \"bottom\");\n }\n if (!elements3.left.classList.contains(modifiers2.hidden)) {\n shrinkRect.shrink(elements3.left.offsetWidth + margin, \"left\");\n }\n return {\n shrinkRect\n };\n });\n }\n performCartesianLayout(opts) {\n return __async(this, null, function* () {\n const {\n elements: elements3,\n margin\n } = this;\n const {\n seriesRect\n } = opts;\n const {\n FloatingBottom,\n FloatingTop\n } = ToolbarPosition;\n elements3.top.style.top = `${seriesRect.y - elements3.top.offsetHeight - margin * 2}px`;\n elements3.top.style.left = `${margin}px`;\n elements3.top.style.width = `calc(100% - ${margin * 2}px)`;\n elements3.right.style.top = `${seriesRect.y + margin}px`;\n elements3.right.style.right = `${margin}px`;\n elements3.right.style.height = `calc(100% - ${seriesRect.y + margin * 2}px)`;\n elements3.bottom.style.bottom = `${margin}px`;\n elements3.bottom.style.left = `${margin}px`;\n elements3.bottom.style.width = `calc(100% - ${margin * 2}px)`;\n elements3.left.style.top = `${seriesRect.y}px`;\n elements3.left.style.left = `${margin}px`;\n elements3.left.style.height = `calc(100% - ${seriesRect.y + margin * 2}px)`;\n elements3[FloatingTop].style.top = `${seriesRect.y}px`;\n elements3[FloatingTop].style.paddingTop = `${margin}px`;\n elements3[FloatingBottom].style.top = `${seriesRect.y + seriesRect.height - elements3[FloatingBottom].offsetHeight}px`;\n elements3[FloatingBottom].style.paddingBottom = `${margin}px`;\n });\n }\n toggleVisibilities() {\n var _a;\n if (this.elements == null) return;\n const isGroupVisible = group2 => this[group2].enabled && this.groupCallers[group2] > 0;\n const isButtonVisible = element2 => button => typeof button.value !== \"string\" && typeof button.value !== \"number\" || `${button.value}` === element2.dataset.toolbarValue;\n for (const position of TOOLBAR_POSITIONS) {\n const visible = this.enabled && Array.from(this.positions[position].values()).some(isGroupVisible);\n this.elements[position].classList.toggle(modifiers2.hidden, !visible);\n }\n for (const group2 of TOOLBAR_GROUPS) {\n if (this[group2] == null) continue;\n const visible = isGroupVisible(group2);\n for (const button of this.groupButtons[group2]) {\n const buttonVisible = visible && ((_a = this[group2].buttons) == null ? void 0 : _a.some(isButtonVisible(button)));\n button.classList.toggle(modifiers2.button.hidden, !buttonVisible);\n }\n }\n }\n translateFloatingElements(position, visible) {\n const {\n elements: elements3,\n margin,\n positionAlignments\n } = this;\n const element2 = elements3[position];\n const alignments = Object.values(positionAlignments[position]);\n for (const align of alignments) {\n align.style.transform = visible && align.style.transform !== \"\" ? \"translateY(0)\" : `translateY(${element2.offsetHeight + margin}px)`;\n }\n }\n renderToolbar(position = \"top\" /* Top */) {\n const element2 = this.elements[position];\n element2.classList.add(block2, modifiers2[position], modifiers2.preventFlash);\n if (position === \"floating-top\" /* FloatingTop */ || position === \"floating-bottom\" /* FloatingBottom */) {\n element2.classList.add(modifiers2.floatingHidden);\n }\n for (const align of TOOLBAR_ALIGNMENTS) {\n const alignmentElement = createElement(\"div\");\n alignmentElement.classList.add(elements2.align, modifiers2.align[align]);\n element2.appendChild(alignmentElement);\n this.positionAlignments[position][align] = alignmentElement;\n }\n }\n createButtonElement(group2, options) {\n const button = createElement(\"button\");\n button.classList.add(elements2.button);\n button.dataset.toolbarGroup = group2;\n button.tabIndex = -1;\n if (typeof options.value === \"string\" || typeof options.value === \"number\") {\n button.dataset.toolbarValue = `${options.value}`;\n }\n if (options.tooltip) {\n button.title = options.tooltip;\n }\n let inner = \"\";\n if (options.icon != null) {\n inner = ``;\n }\n if (options.label != null) {\n inner = `${inner}${options.label}`;\n }\n button.innerHTML = inner;\n button.onclick = this.onButtonPress.bind(this, group2, options.value);\n this.destroyFns.push(() => button.remove());\n return button;\n }\n onButtonPress(group2, value) {\n this.ctx.toolbarManager.pressButton(group2, value);\n }\n};\n__decorateClass([ObserveChanges(target => {\n target.processPendingEvents();\n target.toggleVisibilities();\n}), Validate(BOOLEAN)], Toolbar.prototype, \"enabled\", 2);\n\n// packages/ag-charts-community/src/chart/toolbar/toolbarModule.ts\nvar DAY = 1e3 * 60 * 60 * 24;\nvar MONTH = DAY * 30;\nvar YEAR = DAY * 365;\nvar annotations = {\n enabled: false,\n position: \"left\",\n align: \"start\",\n buttons: [{\n label: \"Li\",\n value: \"line\"\n }, {\n label: \"PCh\",\n value: \"parallel-channel\"\n }]\n};\nvar ranges = {\n enabled: false,\n position: \"top\",\n align: \"start\",\n buttons: [{\n label: \"1m\",\n value: MONTH\n }, {\n label: \"3m\",\n value: 3 * MONTH\n }, {\n label: \"6m\",\n value: 6 * MONTH\n }, {\n label: \"YTD\",\n value: (_start, end) => [( /* @__PURE__ */new Date(`${new Date(end).getFullYear()}-01-01`)).getTime(), end]\n }, {\n label: \"1y\",\n value: YEAR\n }, {\n label: \"All\",\n value: (start, end) => [start, end]\n }]\n};\nvar zoom = {\n enabled: false,\n position: \"top\",\n align: \"end\",\n buttons: [{\n icon: \"zoom-out\",\n tooltip: \"Zoom out\",\n value: \"zoom-out\"\n }, {\n icon: \"zoom-in\",\n tooltip: \"Zoom in\",\n value: \"zoom-in\"\n }, {\n icon: \"pan-left\",\n tooltip: \"Pan left\",\n value: \"pan-left\"\n }, {\n icon: \"pan-right\",\n tooltip: \"Pan right\",\n value: \"pan-right\"\n }, {\n icon: \"pan-start\",\n tooltip: \"Pan to the start\",\n value: \"pan-start\"\n }, {\n icon: \"pan-end\",\n tooltip: \"Pan to the end\",\n value: \"pan-end\"\n }, {\n icon: \"reset\",\n tooltip: \"Reset the zoom\",\n value: \"reset\"\n }]\n};\nvar ToolbarModule = {\n type: \"root\",\n optionsKey: \"toolbar\",\n packageType: \"community\",\n chartTypes: [\"cartesian\"],\n instanceConstructor: Toolbar,\n themeTemplate: {\n toolbar: {\n enabled: true,\n annotations,\n ranges,\n zoom\n }\n }\n};\n\n// packages/ag-charts-community/src/chart/factory/registerInbuiltModules.ts\nfunction registerInbuiltModules() {\n moduleRegistry.register(BackgroundModule, CommunityLegendModule, NavigatorModule, ToolbarModule, AreaSeriesModule, BarSeriesModule, BubbleSeriesModule, LineSeriesModule, ScatterSeriesModule, DonutSeriesModule, PieSeriesModule, HistogramSeriesModule);\n for (const AxisConstructor of [NumberAxis, CategoryAxis, TimeAxis, GroupedCategoryAxis, LogAxis]) {\n axisRegistry.register(AxisConstructor.type, {\n instanceConstructor: AxisConstructor,\n hidden: AxisConstructor === GroupedCategoryAxis\n });\n }\n}\n\n// packages/ag-charts-community/src/chart/factory/setupModules.ts\nfunction setupModules() {\n for (const m of moduleRegistry.modules) {\n if (m.packageType === \"enterprise\" && !verifyIfModuleExpected(m)) {\n Logger.errorOnce(\"Unexpected enterprise module registered: \" + m.identifier);\n }\n if (m.type === \"root\" && m.themeTemplate) {\n for (const chartType2 of m.chartTypes) {\n chartDefaults.set(chartType2, m.themeTemplate);\n }\n }\n if (m.type === \"series\") {\n if (m.chartTypes.length > 1) {\n throw new Error(`AG Charts - Module definition error: ${m.identifier}`);\n }\n seriesRegistry.register(m.identifier, m);\n }\n if (m.type === \"series-option\" && m.themeTemplate) {\n for (const seriesType of m.seriesTypes) {\n seriesRegistry.setThemeTemplate(seriesType, m.themeTemplate);\n }\n }\n if (m.type === \"axis-option\" && m.themeTemplate) {\n for (const axisType of m.axisTypes) {\n const axisTypeTheme = m.themeTemplate[axisType];\n const theme = __spreadValues(__spreadValues({}, m.themeTemplate), axisTypeTheme);\n for (const innerAxisType of m.axisTypes) {\n delete theme[innerAxisType];\n }\n axisRegistry.setThemeTemplate(axisType, theme);\n }\n }\n if (m.type === \"axis\") {\n axisRegistry.register(m.identifier, m);\n }\n if (m.type === \"legend\") {\n legendRegistry.register(m.identifier, m);\n }\n }\n if (moduleRegistry.hasEnterpriseModules()) {\n const expectedButUnused = getUnusedExpectedModules();\n if (expectedButUnused.length > 0) {\n Logger.errorOnce(\"Enterprise modules expected but not registered: \", expectedButUnused);\n }\n }\n}\n\n// packages/ag-charts-community/src/chart/hierarchyChart.ts\nvar _HierarchyChart = class _HierarchyChart extends Chart {\n constructor(options, resources) {\n super(options, resources);\n }\n performLayout() {\n return __async(this, null, function* () {\n const shrinkRect = yield __superGet(_HierarchyChart.prototype, this, \"performLayout\").call(this);\n const {\n seriesArea: {\n padding\n },\n seriesRoot,\n annotationRoot,\n highlightRoot\n } = this;\n const fullSeriesRect = shrinkRect.clone();\n shrinkRect.shrink(padding.left, \"left\");\n shrinkRect.shrink(padding.top, \"top\");\n shrinkRect.shrink(padding.right, \"right\");\n shrinkRect.shrink(padding.bottom, \"bottom\");\n this.seriesRect = shrinkRect;\n this.animationRect = shrinkRect;\n this.hoverRect = shrinkRect;\n for (const group2 of [seriesRoot, annotationRoot, highlightRoot]) {\n group2.translationX = Math.floor(shrinkRect.x);\n group2.translationY = Math.floor(shrinkRect.y);\n }\n yield Promise.all(this.series.map(series => __async(this, null, function* () {\n yield series.update({\n seriesRect: shrinkRect\n });\n })));\n seriesRoot.visible = this.series[0].visible;\n seriesRoot.setClipRectInGroupCoordinateSpace(new BBox(shrinkRect.x, shrinkRect.y, shrinkRect.width, shrinkRect.height));\n this.ctx.layoutService.dispatchLayoutComplete({\n type: \"layout-complete\",\n chart: {\n width: this.ctx.scene.width,\n height: this.ctx.scene.height\n },\n clipSeries: false,\n series: {\n rect: fullSeriesRect,\n paddedRect: shrinkRect,\n visible: true\n },\n axes: []\n });\n return shrinkRect;\n });\n }\n};\n_HierarchyChart.className = \"HierarchyChart\";\n_HierarchyChart.type = \"hierarchy\";\nvar HierarchyChart = _HierarchyChart;\n\n// packages/ag-charts-community/src/chart/axis/polarAxis.ts\nvar PolarAxis = class extends Axis {\n constructor() {\n super(...arguments);\n this.shape = \"polygon\";\n this.innerRadiusRatio = 0;\n this.defaultTickMinSpacing = 20;\n }\n computeLabelsBBox(_options, _seriesRect) {\n return null;\n }\n};\n__decorateClass([Validate(UNION([\"polygon\", \"circle\"], \"a polar axis shape\"))], PolarAxis.prototype, \"shape\", 2);\n__decorateClass([Validate(RATIO)], PolarAxis.prototype, \"innerRadiusRatio\", 2);\n\n// packages/ag-charts-community/src/chart/polarChart.ts\nvar _PolarChart = class _PolarChart extends Chart {\n constructor(options, resources) {\n super(options, resources);\n this.padding = new Padding(40);\n this.axisGroup.zIndex = 6 /* AXIS_FOREGROUND_ZINDEX */;\n }\n performLayout() {\n return __async(this, null, function* () {\n const shrinkRect = yield __superGet(_PolarChart.prototype, this, \"performLayout\").call(this);\n const fullSeriesRect = shrinkRect.clone();\n this.computeSeriesRect(shrinkRect);\n yield this.computeCircle(shrinkRect);\n this.axes.forEach(axis => axis.update());\n this.hoverRect = shrinkRect;\n this.ctx.layoutService.dispatchLayoutComplete({\n type: \"layout-complete\",\n chart: {\n width: this.ctx.scene.width,\n height: this.ctx.scene.height\n },\n clipSeries: false,\n series: {\n rect: fullSeriesRect,\n paddedRect: shrinkRect,\n visible: true\n },\n axes: []\n });\n return shrinkRect;\n });\n }\n updateAxes(cx, cy, radius) {\n var _a, _b;\n const angleAxis = this.axes.find(axis => axis.direction === \"x\" /* X */);\n const radiusAxis = this.axes.find(axis => axis.direction === \"y\" /* Y */);\n if (!(angleAxis instanceof PolarAxis) || !(radiusAxis instanceof PolarAxis)) {\n return;\n }\n const angleScale = angleAxis.scale;\n const angles = (_a = angleScale.ticks) == null ? void 0 : _a.call(angleScale).map(value => angleScale.convert(value));\n const innerRadiusRatio = radiusAxis.innerRadiusRatio;\n angleAxis.innerRadiusRatio = innerRadiusRatio;\n (_b = angleAxis.computeRange) == null ? void 0 : _b.call(angleAxis);\n angleAxis.gridLength = radius;\n radiusAxis.gridAngles = angles;\n radiusAxis.gridRange = angleAxis.range;\n radiusAxis.range = [radius, radius * innerRadiusRatio];\n [angleAxis, radiusAxis].forEach(axis => {\n axis.translation.x = cx;\n axis.translation.y = cy;\n axis.calculateLayout();\n });\n }\n computeSeriesRect(shrinkRect) {\n const {\n seriesArea: {\n padding\n }\n } = this;\n shrinkRect.shrink(padding.left, \"left\");\n shrinkRect.shrink(padding.top, \"top\");\n shrinkRect.shrink(padding.right, \"right\");\n shrinkRect.shrink(padding.bottom, \"bottom\");\n this.seriesRect = shrinkRect;\n this.animationRect = shrinkRect;\n }\n computeCircle(seriesBox) {\n return __async(this, null, function* () {\n const polarSeries = this.series.filter(series => {\n return series instanceof PolarSeries;\n });\n const polarAxes = this.axes.filter(axis => {\n return axis instanceof PolarAxis;\n });\n const setSeriesCircle = (cx, cy, r) => {\n this.updateAxes(cx, cy, r);\n polarSeries.forEach(series => {\n series.centerX = cx;\n series.centerY = cy;\n series.radius = r;\n });\n const pieSeries = polarSeries.filter(s => {\n return s instanceof PieSeries || s instanceof DonutSeries;\n });\n if (pieSeries.length > 1) {\n const innerRadii = pieSeries.map(series => {\n const innerRadius = series.getInnerRadius();\n return {\n series,\n innerRadius\n };\n }).sort((a, b) => a.innerRadius - b.innerRadius);\n innerRadii.at(-1).series.surroundingRadius = void 0;\n for (let i = 0; i < innerRadii.length - 1; i++) {\n innerRadii[i].series.surroundingRadius = innerRadii[i + 1].innerRadius;\n }\n }\n };\n const centerX = seriesBox.x + seriesBox.width / 2;\n const centerY = seriesBox.y + seriesBox.height / 2;\n const initialRadius = Math.max(0, Math.min(seriesBox.width, seriesBox.height) / 2);\n let radius = initialRadius;\n setSeriesCircle(centerX, centerY, radius);\n const shake = (..._0) => __async(this, [..._0], function* ({\n hideWhenNecessary = false\n } = {}) {\n const labelBoxes = [];\n for (const series of [...polarAxes, ...polarSeries]) {\n const box = yield series.computeLabelsBBox({\n hideWhenNecessary\n }, seriesBox);\n if (box) {\n labelBoxes.push(box);\n }\n }\n if (labelBoxes.length === 0) {\n setSeriesCircle(centerX, centerY, initialRadius);\n return;\n }\n const labelBox = BBox.merge(labelBoxes);\n const refined = this.refineCircle(labelBox, radius, seriesBox);\n setSeriesCircle(refined.centerX, refined.centerY, refined.radius);\n if (refined.radius === radius) {\n return;\n }\n radius = refined.radius;\n });\n yield shake();\n yield shake();\n yield shake();\n yield shake({\n hideWhenNecessary: true\n });\n yield shake({\n hideWhenNecessary: true\n });\n return {\n radius,\n centerX,\n centerY\n };\n });\n }\n refineCircle(labelsBox, radius, seriesBox) {\n const minCircleRatio = 0.5;\n const circleLeft = -radius;\n const circleTop = -radius;\n const circleRight = radius;\n const circleBottom = radius;\n let padLeft = Math.max(0, circleLeft - labelsBox.x);\n let padTop = Math.max(0, circleTop - labelsBox.y);\n let padRight = Math.max(0, labelsBox.x + labelsBox.width - circleRight);\n let padBottom = Math.max(0, labelsBox.y + labelsBox.height - circleBottom);\n padLeft = padRight = Math.max(padLeft, padRight);\n padTop = padBottom = Math.max(padTop, padBottom);\n const availCircleWidth = seriesBox.width - padLeft - padRight;\n const availCircleHeight = seriesBox.height - padTop - padBottom;\n let newRadius = Math.min(availCircleWidth, availCircleHeight) / 2;\n const minHorizontalRadius = minCircleRatio * seriesBox.width / 2;\n const minVerticalRadius = minCircleRatio * seriesBox.height / 2;\n const minRadius = Math.min(minHorizontalRadius, minVerticalRadius);\n if (newRadius < minRadius) {\n newRadius = minRadius;\n const horizontalPadding = padLeft + padRight;\n const verticalPadding = padTop + padBottom;\n if (2 * newRadius + verticalPadding > seriesBox.height) {\n const padHeight = seriesBox.height - 2 * newRadius;\n if (Math.min(padTop, padBottom) * 2 > padHeight) {\n padTop = padHeight / 2;\n padBottom = padHeight / 2;\n } else if (padTop > padBottom) {\n padTop = padHeight - padBottom;\n } else {\n padBottom = padHeight - padTop;\n }\n }\n if (2 * newRadius + horizontalPadding > seriesBox.width) {\n const padWidth = seriesBox.width - 2 * newRadius;\n if (Math.min(padLeft, padRight) * 2 > padWidth) {\n padLeft = padWidth / 2;\n padRight = padWidth / 2;\n } else if (padLeft > padRight) {\n padLeft = padWidth - padRight;\n } else {\n padRight = padWidth - padLeft;\n }\n }\n }\n const newWidth = padLeft + 2 * newRadius + padRight;\n const newHeight = padTop + 2 * newRadius + padBottom;\n return {\n centerX: seriesBox.x + (seriesBox.width - newWidth) / 2 + padLeft + newRadius,\n centerY: seriesBox.y + (seriesBox.height - newHeight) / 2 + padTop + newRadius,\n radius: newRadius\n };\n }\n};\n_PolarChart.className = \"PolarChart\";\n_PolarChart.type = \"polar\";\nvar PolarChart = _PolarChart;\n\n// packages/ag-charts-community/src/chart/series/topology/mercatorScale.ts\nvar radsInDeg = Math.PI / 180;\nvar lonX = lon => lon * radsInDeg;\nvar latY = lat => -Math.log(Math.tan(Math.PI * 0.25 + lat * radsInDeg * 0.5));\nvar xLon = x => x / radsInDeg;\nvar yLat = y => (Math.atan(Math.exp(-y)) - Math.PI * 0.25) / (radsInDeg * 0.5);\nvar MercatorScale = class _MercatorScale {\n constructor(domain, range3) {\n this.domain = domain;\n this.range = range3;\n this.type = \"mercator\";\n this.bounds = _MercatorScale.bounds(domain);\n }\n static bounds(domain) {\n const [[lon0, lat0], [lon1, lat1]] = domain;\n const x0 = lonX(lon0);\n const y0 = latY(lat0);\n const x1 = lonX(lon1);\n const y1 = latY(lat1);\n return new BBox(Math.min(x0, x1), Math.min(y0, y1), Math.abs(x1 - x0), Math.abs(y1 - y0));\n }\n static fixedScale() {\n return new _MercatorScale([[xLon(0), yLat(0)], [xLon(1), yLat(1)]], [[0, 0], [1, 1]]);\n }\n convert([lon, lat]) {\n const [[x0, y0], [x1, y1]] = this.range;\n const xScale = (x1 - x0) / this.bounds.width;\n const yScale = (y1 - y0) / this.bounds.height;\n return [(lonX(lon) - this.bounds.x) * xScale + x0, (latY(lat) - this.bounds.y) * yScale + y0];\n }\n invert([x, y]) {\n const [[x0, y0], [x1, y1]] = this.range;\n const xScale = (x1 - x0) / this.bounds.width;\n const yScale = (y1 - y0) / this.bounds.height;\n return [xLon((x - x0) / xScale + this.bounds.x), yLat((y - y0) / yScale + this.bounds.y)];\n }\n};\n\n// packages/ag-charts-community/src/chart/topologyChart.ts\nfunction isTopologySeries(series) {\n return series.type === \"map-shape\" || series.type === \"map-line\" || series.type === \"map-marker\" || series.type === \"map-shape-background\" || series.type === \"map-line-background\";\n}\nvar _TopologyChart = class _TopologyChart extends Chart {\n constructor(options, resources) {\n super(options, resources);\n this.xAxis = new NumberAxis(this.getModuleContext());\n this.xAxis.position = \"bottom\";\n this.yAxis = new NumberAxis(this.getModuleContext());\n this.yAxis.position = \"left\";\n this.ctx.zoomManager.updateAxes([this.xAxis, this.yAxis]);\n }\n updateData() {\n return __async(this, null, function* () {\n yield __superGet(_TopologyChart.prototype, this, \"updateData\").call(this);\n const {\n topology\n } = this.getOptions();\n this.series.forEach(series => {\n if (isTopologySeries(series)) {\n series.setChartTopology(topology);\n }\n });\n });\n }\n performLayout() {\n return __async(this, null, function* () {\n const shrinkRect = yield __superGet(_TopologyChart.prototype, this, \"performLayout\").call(this);\n const {\n seriesArea: {\n padding\n },\n seriesRoot,\n annotationRoot,\n highlightRoot\n } = this;\n const fullSeriesRect = shrinkRect.clone();\n shrinkRect.shrink(padding.left, \"left\");\n shrinkRect.shrink(padding.top, \"top\");\n shrinkRect.shrink(padding.right, \"right\");\n shrinkRect.shrink(padding.bottom, \"bottom\");\n this.seriesRect = shrinkRect;\n this.animationRect = shrinkRect;\n this.hoverRect = shrinkRect;\n const mapSeries = this.series.filter(isTopologySeries);\n const combinedBbox = mapSeries.reduce((combined, series) => {\n if (!series.visible) return combined;\n const bbox = series.topologyBounds;\n if (bbox == null) return combined;\n if (combined == null) return bbox;\n combined.merge(bbox);\n return combined;\n }, void 0);\n let scale2;\n if (combinedBbox != null) {\n const {\n lon0,\n lat0,\n lon1,\n lat1\n } = combinedBbox;\n const domain = [[lon0, lat0], [lon1, lat1]];\n const bounds = MercatorScale.bounds(domain);\n const {\n width,\n height\n } = shrinkRect;\n const viewBoxScale = Math.min(width / bounds.width, height / bounds.height);\n const viewBoxWidth = bounds.width * viewBoxScale;\n const viewBoxHeight = bounds.height * viewBoxScale;\n const viewBoxOriginX = (width - viewBoxWidth) / 2;\n const viewBoxOriginY = (height - viewBoxHeight) / 2;\n const x0 = viewBoxOriginX;\n const y0 = viewBoxOriginY;\n const x1 = viewBoxOriginX + viewBoxWidth;\n const y1 = viewBoxOriginY + viewBoxHeight;\n const xZoom = this.ctx.zoomManager.getAxisZoom(this.xAxis.id);\n const yZoom = this.ctx.zoomManager.getAxisZoom(this.yAxis.id);\n const xSpan = (x1 - x0) / (xZoom.max - xZoom.min);\n const xStart = x0 - xSpan * xZoom.min;\n const ySpan = (y1 - y0) / (1 - yZoom.min - (1 - yZoom.max));\n const yStart = y0 - ySpan * (1 - yZoom.max);\n scale2 = new MercatorScale(domain, [[xStart, yStart], [xStart + xSpan, yStart + ySpan]]);\n }\n mapSeries.forEach(series => {\n series.scale = scale2;\n });\n const seriesVisible = this.series.some(s => s.visible);\n seriesRoot.visible = seriesVisible;\n for (const group2 of [seriesRoot, annotationRoot, highlightRoot]) {\n group2.translationX = Math.floor(shrinkRect.x);\n group2.translationY = Math.floor(shrinkRect.y);\n group2.setClipRectInGroupCoordinateSpace(new BBox(shrinkRect.x, shrinkRect.y, shrinkRect.width, shrinkRect.height));\n }\n this.ctx.layoutService.dispatchLayoutComplete({\n type: \"layout-complete\",\n chart: {\n width: this.ctx.scene.width,\n height: this.ctx.scene.height\n },\n clipSeries: false,\n series: {\n rect: fullSeriesRect,\n paddedRect: shrinkRect,\n visible: seriesVisible\n },\n axes: []\n });\n return shrinkRect;\n });\n }\n};\n_TopologyChart.className = \"TopologyChart\";\n_TopologyChart.type = \"topology\";\nvar TopologyChart = _TopologyChart;\n\n// packages/ag-charts-community/src/chart/agChartV2.ts\nvar debug2 = Debug.create(true, \"opts\");\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 } else if (isAgTopologyChartOptions(options)) {\n return \"topology\";\n }\n throw new Error(`AG Chart - unknown type of chart for options with type: ${options.type}`);\n}\nvar _AgCharts = class _AgCharts {\n static licenseCheck(options) {\n var _a, _b, _c, _d;\n if (this.licenseChecked) return;\n this.licenseManager = (_b = (_a = enterpriseModule).licenseManager) == null ? void 0 : _b.call(_a, options);\n (_c = this.licenseManager) == null ? void 0 : _c.setLicenseKey(this.licenseKey, this.gridContext);\n (_d = this.licenseManager) == null ? void 0 : _d.validateLicense();\n this.licenseChecked = true;\n }\n static setLicenseKey(licenseKey) {\n this.licenseKey = licenseKey;\n }\n static setGridContext(gridContext) {\n this.gridContext = gridContext;\n }\n static getLicenseDetails(licenseKey) {\n var _a, _b;\n return (_b = (_a = enterpriseModule).licenseManager) == null ? void 0 : _b.call(_a, {}).getLicenseDetails(licenseKey);\n }\n /**\n * Returns the `AgChartInstance` for a DOM node, if there is one.\n */\n static getInstance(element2) {\n return AgChartsInternal.getInstance(element2);\n }\n /**\n * Create a new `AgChartInstance` based upon the given configuration options.\n */\n static create(options) {\n var _a, _b, _c;\n this.licenseCheck(options);\n const chart = AgChartsInternal.createOrUpdate(options);\n if ((_a = this.licenseManager) == null ? void 0 : _a.isDisplayWatermark()) {\n (_c = (_b = enterpriseModule).injectWatermark) == null ? void 0 : _c.call(_b, chart.chart.element, this.licenseManager.getWatermarkMessage());\n }\n return chart;\n }\n /**\n * Update an existing `AgChartInstance`. Options provided should be complete and not\n * partial.\n *\n * __NOTE__: As each call could trigger a chart redraw, multiple calls to update options in\n * quick succession could result in undesirable flickering, so callers should batch up and/or\n * debounce changes to avoid unintended partial update renderings.\n */\n static update(chart, options) {\n if (!AgChartInstanceProxy.isInstance(chart)) {\n throw new Error(_AgCharts.INVALID_CHART_REF_MESSAGE);\n }\n AgChartsInternal.createOrUpdate(options, chart);\n }\n /**\n * Update an existing `AgChartInstance` by applying a partial set of option changes.\n *\n * __NOTE__: As each call could trigger a chart redraw, each individual delta options update\n * should leave the chart in a valid options state. Also, multiple calls to update options in\n * quick succession could result in undesirable flickering, so callers should batch up and/or\n * debounce changes to avoid unintended partial update renderings.\n */\n static updateDelta(chart, deltaOptions) {\n if (!AgChartInstanceProxy.isInstance(chart)) {\n throw new Error(_AgCharts.INVALID_CHART_REF_MESSAGE);\n }\n AgChartsInternal.updateUserDelta(chart, deltaOptions);\n }\n /**\n * Starts a browser-based image download for the given `AgChartInstance`.\n */\n static download(chart, options) {\n if (!(chart instanceof AgChartInstanceProxy)) {\n throw new Error(_AgCharts.INVALID_CHART_REF_MESSAGE);\n }\n AgChartsInternal.download(chart, options).catch(e => Logger.errorOnce(e));\n }\n /**\n * Returns a base64-encoded image data URL for the given `AgChartInstance`.\n */\n static getImageDataURL(chart, options) {\n if (!(chart instanceof AgChartInstanceProxy)) {\n throw new Error(_AgCharts.INVALID_CHART_REF_MESSAGE);\n }\n return AgChartsInternal.getImageDataURL(chart, options);\n }\n};\n_AgCharts.INVALID_CHART_REF_MESSAGE = \"AG Charts - invalid chart reference passed\";\n_AgCharts.licenseChecked = false;\n_AgCharts.gridContext = false;\nvar AgCharts = _AgCharts;\nvar AgChart = class {\n static warnDeprecated(memberName) {\n const warnDeprecated = createDeprecationWarning();\n warnDeprecated(`AgChart.${memberName}`, `Use AgCharts.${memberName} instead`);\n }\n static create(options) {\n this.warnDeprecated(\"create\");\n return AgCharts.create(options);\n }\n static update(chart, options) {\n this.warnDeprecated(\"update\");\n return AgCharts.update(chart, options);\n }\n static updateDelta(chart, deltaOptions) {\n this.warnDeprecated(\"updateDelta\");\n return AgCharts.updateDelta(chart, deltaOptions);\n }\n static download(chart, options) {\n this.warnDeprecated(\"download\");\n return AgCharts.download(chart, options);\n }\n static getImageDataURL(chart, options) {\n this.warnDeprecated(\"getImageDataURL\");\n return AgCharts.getImageDataURL(chart, options);\n }\n};\nvar _AgChartsInternal = class _AgChartsInternal {\n static getInstance(element2) {\n const chart = Chart.getInstance(element2);\n return chart ? AgChartInstanceProxy.chartInstances.get(chart) : void 0;\n }\n static initialiseModules() {\n if (_AgChartsInternal.initialised) return;\n registerInbuiltModules();\n setupModules();\n _AgChartsInternal.initialised = true;\n }\n static createOrUpdate(options, proxy) {\n var _b;\n _AgChartsInternal.initialiseModules();\n debug2(\">>> AgChartV2.createOrUpdate() user options\", options);\n const _a = options,\n {\n overrideDevicePixelRatio,\n document: document2,\n window: userWindow\n } = _a,\n userOptions = __objRest(_a, [\"overrideDevicePixelRatio\", \"document\", \"window\"]);\n const chartOptions = new ChartOptions(userOptions, {\n overrideDevicePixelRatio,\n document: document2,\n window: userWindow\n });\n let chart = proxy == null ? void 0 : proxy.chart;\n if (chart == null || chartType(userOptions) !== chartType(chart.processedOptions)) {\n chart = _AgChartsInternal.createChartInstance(chartOptions, chart);\n }\n if (proxy == null) {\n proxy = new AgChartInstanceProxy(chart);\n } else {\n proxy.chart = chart;\n }\n if (debug2.check() && typeof window !== \"undefined\") {\n (_b = window.agChartInstances) != null ? _b : window.agChartInstances = {};\n window.agChartInstances[chart.id] = chart;\n }\n chart.queuedUserOptions.push(userOptions);\n chart.requestFactoryUpdate(chartRef => {\n chartRef.applyOptions(chartOptions);\n chartRef.queuedUserOptions.splice(0, chartRef.queuedUserOptions.indexOf(userOptions));\n });\n return proxy;\n }\n static updateUserDelta(proxy, deltaOptions) {\n deltaOptions = deepClone(deltaOptions, {\n shallow: [\"data\"]\n });\n jsonWalk(deltaOptions, node => {\n if (typeof node !== \"object\") return;\n for (const [key, value] of Object.entries(node)) {\n if (typeof value === \"undefined\") {\n Object.assign(node, {\n [key]: Symbol(\"UNSET\")\n });\n }\n }\n }, {\n skip: [\"data\"]\n });\n const {\n chart\n } = proxy;\n const lastUpdateOptions = chart.getOptions();\n const userOptions = mergeDefaults(deltaOptions, lastUpdateOptions);\n debug2(\">>> AgChartV2.updateUserDelta() user delta\", deltaOptions);\n debug2(\"AgChartV2.updateUserDelta() - base options\", lastUpdateOptions);\n _AgChartsInternal.createOrUpdate(userOptions, proxy);\n }\n /**\n * Returns the content of the current canvas as an image.\n */\n static download(proxy, opts) {\n return __async(this, null, function* () {\n try {\n const clone = yield _AgChartsInternal.prepareResizedChart(proxy, opts);\n clone.chart.ctx.scene.download(opts == null ? void 0 : opts.fileName, opts == null ? void 0 : opts.fileFormat);\n clone.destroy();\n } catch (error) {\n Logger.errorOnce(error);\n }\n });\n }\n static getImageDataURL(proxy, opts) {\n return __async(this, null, function* () {\n const clone = yield _AgChartsInternal.prepareResizedChart(proxy, opts);\n const result = clone.chart.ctx.scene.getDataURL(opts == null ? void 0 : opts.fileFormat);\n clone.destroy();\n return result;\n });\n }\n static prepareResizedChart(_0) {\n return __async(this, arguments, function* ({\n chart\n }, opts = {}) {\n var _a, _b, _c, _d;\n const width = (_b = (_a = opts.width) != null ? _a : chart.width) != null ? _b : chart.ctx.scene.canvas.width;\n const height = (_d = (_c = opts.height) != null ? _c : chart.height) != null ? _d : chart.ctx.scene.canvas.height;\n const options = mergeDefaults({\n container: document.createElement(\"div\"),\n overrideDevicePixelRatio: 1,\n autoSize: false,\n width,\n height\n },\n // Disable enterprise features that may interfere with image generation.\n moduleRegistry.hasEnterpriseModules() && {\n animation: {\n enabled: false\n }\n }, chart.userOptions);\n const cloneProxy = _AgChartsInternal.createOrUpdate(options);\n cloneProxy.chart.ctx.zoomManager.updateZoom(\"agChartV2\", chart.ctx.zoomManager.getZoom());\n chart.series.forEach((series, index) => {\n if (!series.visible) {\n cloneProxy.chart.series[index].visible = false;\n }\n });\n chart.update(0 /* FULL */, {\n forceNodeDataRefresh: true\n });\n yield cloneProxy.chart.waitForUpdate();\n return cloneProxy;\n });\n }\n static createChartInstance(options, oldChart) {\n const transferableResource = oldChart == null ? void 0 : oldChart.destroy({\n keepTransferableResources: true\n });\n const ChartConstructor = _AgChartsInternal.getChartByOptions(options.processedOptions);\n return new ChartConstructor(options, transferableResource);\n }\n static getChartByOptions(options) {\n if (isAgCartesianChartOptions(options)) {\n return CartesianChart;\n } else if (isAgHierarchyChartOptions(options)) {\n return HierarchyChart;\n } else if (isAgPolarChartOptions(options)) {\n return PolarChart;\n } else if (isAgTopologyChartOptions(options)) {\n return TopologyChart;\n }\n throw new Error(`AG Charts - couldn't apply configuration, check options are correctly structured and series types are specified`);\n }\n};\n_AgChartsInternal.initialised = false;\nvar AgChartsInternal = _AgChartsInternal;\n\n// packages/ag-charts-community/src/version.ts\nvar VERSION = \"9.3.2\";\n\n// packages/ag-charts-community/src/integrated-charts-scene.ts\nvar integrated_charts_scene_exports = {};\n__export(integrated_charts_scene_exports, {\n Arc: () => Arc2,\n BBox: () => BBox,\n BandScale: () => BandScale,\n Caption: () => Caption,\n ChangeDetectableProperties: () => ChangeDetectableProperties,\n Circle: () => Circle,\n ContinuousScale: () => ContinuousScale,\n Diamond: () => Diamond,\n DropShadow: () => DropShadow,\n ExtendedPath2D: () => ExtendedPath2D,\n Group: () => Group,\n HdpiCanvas: () => HdpiCanvas,\n Image: () => Image,\n Label: () => Label,\n Line: () => Line,\n LinearGradientFill: () => LinearGradientFill,\n LinearScale: () => LinearScale,\n Marker: () => Marker,\n Node: () => Node,\n OrdinalTimeScale: () => OrdinalTimeScale,\n Path: () => Path,\n PointerEvents: () => PointerEvents,\n RadialColumnShape: () => RadialColumnShape,\n Rect: () => Rect,\n RedrawType: () => RedrawType,\n Scene: () => Scene,\n SceneChangeDetection: () => SceneChangeDetection,\n ScenePathChangeDetection: () => ScenePathChangeDetection,\n Sector: () => Sector,\n SectorBox: () => SectorBox,\n Selection: () => Selection,\n Shape: () => Shape,\n Square: () => Square,\n Text: () => Text,\n Tooltip: () => Tooltip,\n Triangle: () => Triangle,\n easing: () => easing_exports,\n getFont: () => getFont,\n getMarker: () => getMarker,\n getRadialColumnWidth: () => getRadialColumnWidth,\n motion: () => motion,\n nearestSquared: () => nearestSquared,\n nearestSquaredInContainer: () => nearestSquaredInContainer,\n toRadians: () => toRadians,\n toTooltipHtml: () => toTooltipHtml\n});\n\n// packages/ag-charts-community/src/scene/shape/arc.ts\nvar Arc2 = class extends Path {\n constructor() {\n super();\n this.centerX = 0;\n this.centerY = 0;\n this.radius = 10;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.counterClockwise = false;\n this.type = 0 /* Open */;\n this.restoreOwnStyles();\n }\n get fullPie() {\n return isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n }\n updatePath() {\n const path = this.path;\n path.clear();\n path.arc(this.centerX, this.centerY, this.radius, this.startAngle, this.endAngle, this.counterClockwise);\n if (this.type === 1 /* Chord */) {\n path.closePath();\n } else if (this.type === 2 /* Round */ && !this.fullPie) {\n path.lineTo(this.centerX, this.centerY);\n path.closePath();\n }\n }\n computeBBox() {\n return new BBox(this.centerX - this.radius, this.centerY - this.radius, this.radius * 2, this.radius * 2);\n }\n isPointInPath(x, y) {\n const point = this.transformPoint(x, y);\n const bbox = this.computeBBox();\n return this.type !== 0 /* Open */ && bbox.containsPoint(point.x, point.y) && this.path.isPointInPath(point.x, point.y);\n }\n};\nArc2.className = \"Arc\";\nArc2.defaultStyles = Object.assign({}, Shape.defaultStyles, {\n lineWidth: 1,\n fillStyle: null\n});\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"centerX\", 2);\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"centerY\", 2);\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"radius\", 2);\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"startAngle\", 2);\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"endAngle\", 2);\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"counterClockwise\", 2);\n__decorateClass([ScenePathChangeDetection()], Arc2.prototype, \"type\", 2);\n\n// packages/ag-charts-community/src/scene/shape/linearGradientFill.ts\nvar LinearGradientFill = class extends Shape {\n constructor() {\n super(...arguments);\n this.direction = \"to-right\";\n this.stops = void 0;\n this._mask = void 0;\n }\n get mask() {\n return this._mask;\n }\n set mask(newMask) {\n if (this._mask != null) {\n this.removeChild(this._mask);\n }\n if (newMask != null) {\n this.appendChild(newMask);\n }\n this._mask = newMask;\n }\n isPointInPath(x, y) {\n var _a, _b;\n return (_b = (_a = this.mask) == null ? void 0 : _a.isPointInPath(x, y)) != null ? _b : false;\n }\n computeBBox() {\n var _a;\n return (_a = this.mask) == null ? void 0 : _a.computeBBox();\n }\n render(renderCtx) {\n const {\n mask,\n stops\n } = this;\n const {\n ctx,\n devicePixelRatio\n } = renderCtx;\n const pixelLength = 1 / devicePixelRatio;\n const maskBbox = mask == null ? void 0 : mask.computeTransformedBBox();\n if (mask == null || stops == null || maskBbox == null) return;\n if (mask.dirtyPath) {\n mask.updatePath();\n mask.dirtyPath = false;\n }\n ctx.save();\n ctx.clip(mask.path.getPath2D());\n ctx.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 0);\n const x0 = Math.floor(maskBbox.x);\n const x1 = Math.ceil(maskBbox.x + maskBbox.width);\n const y0 = Math.floor(maskBbox.y);\n const y1 = Math.ceil(maskBbox.y + maskBbox.height);\n const colorScale = new ColorScale();\n const [i0, i1] = this.direction === \"to-right\" ? [x0, x1] : [y0, y1];\n colorScale.domain = stops.map((_, index) => {\n return i0 + (i1 - i0) * index / (stops.length - 1);\n });\n colorScale.range = stops;\n colorScale.update();\n if (this.direction === \"to-right\") {\n const height = y1 - y0;\n for (let x = x0; x <= x1; x += pixelLength) {\n ctx.fillStyle = colorScale.convert(x);\n ctx.fillRect(x, y0, pixelLength, height);\n }\n } else {\n const width = x1 - x0;\n for (let y = y0; y <= y1; y += pixelLength) {\n ctx.fillStyle = colorScale.convert(y);\n ctx.fillRect(x0, y, width, pixelLength);\n }\n }\n ctx.restore();\n }\n};\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], LinearGradientFill.prototype, \"direction\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], LinearGradientFill.prototype, \"stops\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], LinearGradientFill.prototype, \"_mask\", 2);\n\n// packages/ag-charts-community/src/scene/shape/radialColumnShape.ts\nfunction rotatePoint(x, y, rotation) {\n const radius = Math.sqrt(__pow(x, 2) + __pow(y, 2));\n const angle = Math.atan2(y, x);\n const rotated = angle + rotation;\n return {\n x: Math.cos(rotated) * radius,\n y: Math.sin(rotated) * radius\n };\n}\nvar RadialColumnShape = class extends Path {\n constructor() {\n super(...arguments);\n this.borderPath = new ExtendedPath2D();\n this.isBeveled = true;\n this.columnWidth = 0;\n this.startAngle = 0;\n this.endAngle = 0;\n this.outerRadius = 0;\n this.innerRadius = 0;\n this.axisInnerRadius = 0;\n this.axisOuterRadius = 0;\n this.isRadiusAxisReversed = false;\n }\n getRotation() {\n const {\n startAngle,\n endAngle\n } = this;\n const midAngle = angleBetween(startAngle, endAngle);\n return normalizeAngle360(startAngle + midAngle / 2 + Math.PI / 2);\n }\n updatePath() {\n const {\n isBeveled\n } = this;\n if (isBeveled) {\n this.updateBeveledPath();\n } else {\n this.updateRectangularPath();\n }\n this.checkPathDirty();\n }\n updateRectangularPath() {\n const {\n columnWidth,\n innerRadius,\n outerRadius,\n path\n } = this;\n const left = -columnWidth / 2;\n const right = columnWidth / 2;\n const top = -outerRadius;\n const bottom = -innerRadius;\n const rotation = this.getRotation();\n const points = [[left, bottom], [left, top], [right, top], [right, bottom], [left, bottom]].map(([x, y]) => rotatePoint(x, y, rotation));\n path.clear(true);\n path.moveTo(points[0].x, points[0].y);\n path.lineTo(points[1].x, points[1].y);\n path.lineTo(points[2].x, points[2].y);\n path.lineTo(points[3].x, points[3].y);\n path.lineTo(points[0].x, points[0].y);\n path.closePath();\n }\n updateBeveledPath() {\n const {\n columnWidth,\n path,\n outerRadius,\n innerRadius,\n axisInnerRadius,\n axisOuterRadius,\n isRadiusAxisReversed\n } = this;\n const isStackBottom = isEqual(innerRadius, axisInnerRadius);\n const sideRotation = Math.asin(columnWidth / 2 / innerRadius);\n const pointRotation = this.getRotation();\n const rotate = (x, y) => rotatePoint(x, y, pointRotation);\n const getTriangleHypotenuse = (leg, otherLeg) => Math.sqrt(__pow(leg, 2) + __pow(otherLeg, 2));\n const getTriangleLeg = (hypotenuse, otherLeg) => {\n if (otherLeg > hypotenuse) {\n return 0;\n }\n return Math.sqrt(__pow(hypotenuse, 2) - __pow(otherLeg, 2));\n };\n const compare = (value, otherValue, lessThan) => lessThan ? value < otherValue : value > otherValue;\n const shouldConnectBottomCircle = isStackBottom && !isNaN(sideRotation) && sideRotation < Math.PI / 6;\n let left = -columnWidth / 2;\n let right = columnWidth / 2;\n const top = -outerRadius;\n const bottom = -innerRadius * (shouldConnectBottomCircle ? Math.cos(sideRotation) : 1);\n const hasBottomIntersection = compare(axisOuterRadius, getTriangleHypotenuse(innerRadius, columnWidth / 2), !isRadiusAxisReversed);\n if (hasBottomIntersection) {\n const bottomIntersectionX = getTriangleLeg(axisOuterRadius, innerRadius);\n left = -bottomIntersectionX;\n right = bottomIntersectionX;\n }\n path.clear(true);\n const bottomLeftPt = rotate(left, bottom);\n path.moveTo(bottomLeftPt.x, bottomLeftPt.y);\n const isEmpty = isEqual(innerRadius, outerRadius);\n const hasSideIntersection = compare(axisOuterRadius, getTriangleHypotenuse(outerRadius, columnWidth / 2), !isRadiusAxisReversed);\n if (isEmpty && shouldConnectBottomCircle) {\n path.arc(0, 0, innerRadius, normalizeAngle360(-sideRotation - Math.PI / 2) + pointRotation, normalizeAngle360(sideRotation - Math.PI / 2) + pointRotation, false);\n } else if (hasSideIntersection) {\n const sideIntersectionY = -getTriangleLeg(axisOuterRadius, columnWidth / 2);\n const topIntersectionX = getTriangleLeg(axisOuterRadius, outerRadius);\n if (!hasBottomIntersection) {\n const topLeftPt = rotate(left, sideIntersectionY);\n path.lineTo(topLeftPt.x, topLeftPt.y);\n }\n path.arc(0, 0, axisOuterRadius, Math.atan2(sideIntersectionY, left) + pointRotation, Math.atan2(top, -topIntersectionX) + pointRotation, false);\n if (!isEqual(topIntersectionX, 0)) {\n const topRightBevelPt = rotate(topIntersectionX, top);\n path.lineTo(topRightBevelPt.x, topRightBevelPt.y);\n }\n path.arc(0, 0, axisOuterRadius, Math.atan2(top, topIntersectionX) + pointRotation, Math.atan2(sideIntersectionY, right) + pointRotation, false);\n } else {\n const topLeftPt = rotate(left, top);\n const topRightPt = rotate(right, top);\n path.lineTo(topLeftPt.x, topLeftPt.y);\n path.lineTo(topRightPt.x, topRightPt.y);\n }\n const bottomRightPt = rotate(right, bottom);\n path.lineTo(bottomRightPt.x, bottomRightPt.y);\n if (shouldConnectBottomCircle) {\n path.arc(0, 0, innerRadius, normalizeAngle360(sideRotation - Math.PI / 2) + pointRotation, normalizeAngle360(-sideRotation - Math.PI / 2) + pointRotation, true);\n } else {\n const rotatedBottomLeftPt = rotate(left, bottom);\n path.lineTo(rotatedBottomLeftPt.x, rotatedBottomLeftPt.y);\n }\n path.closePath();\n }\n};\nRadialColumnShape.className = \"RadialColumnShape\";\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"isBeveled\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"columnWidth\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"startAngle\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"endAngle\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"outerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"innerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"axisInnerRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"axisOuterRadius\", 2);\n__decorateClass([ScenePathChangeDetection()], RadialColumnShape.prototype, \"isRadiusAxisReversed\", 2);\nfunction getRadialColumnWidth(startAngle, endAngle, axisOuterRadius, columnWidthRatio, maxColumnWidthRatio) {\n const rotation = angleBetween(startAngle, endAngle);\n const pad2 = rotation * (1 - columnWidthRatio) / 2;\n startAngle += pad2;\n endAngle -= pad2;\n if (rotation < 1e-3) {\n return 2 * axisOuterRadius * maxColumnWidthRatio;\n }\n if (rotation >= 2 * Math.PI) {\n const midAngle = startAngle + rotation / 2;\n startAngle = midAngle - Math.PI;\n endAngle = midAngle + Math.PI;\n }\n const startX = axisOuterRadius * Math.cos(startAngle);\n const startY = axisOuterRadius * Math.sin(startAngle);\n const endX = axisOuterRadius * Math.cos(endAngle);\n const endY = axisOuterRadius * Math.sin(endAngle);\n const colWidth = Math.floor(Math.sqrt(__pow(startX - endX, 2) + __pow(startY - endY, 2)));\n const maxWidth = 2 * axisOuterRadius * maxColumnWidthRatio;\n return Math.max(1, Math.min(maxWidth, colWidth));\n}\n\n// packages/ag-charts-community/src/scene/image.ts\nvar Image = class extends Node {\n constructor(sourceImage) {\n super();\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n this.opacity = 1;\n this.sourceImage = sourceImage;\n }\n render(renderCtx) {\n const {\n ctx,\n forceRender,\n stats\n } = renderCtx;\n if (this.dirty === 0 /* NONE */ && !forceRender) {\n if (stats) stats.nodesSkipped++;\n return;\n }\n this.computeTransformMatrix();\n this.matrix.toContext(ctx);\n const image = this.sourceImage;\n ctx.globalAlpha = this.opacity;\n ctx.drawImage(image, 0, 0, image.width, image.height, this.x, this.y, this.width, this.height);\n super.render(renderCtx);\n }\n};\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Image.prototype, \"x\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Image.prototype, \"y\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Image.prototype, \"width\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Image.prototype, \"height\", 2);\n__decorateClass([SceneChangeDetection({\n redraw: 3 /* MAJOR */\n})], Image.prototype, \"opacity\", 2);\n\n// packages/ag-charts-community/src/integrated-charts-scene.ts\nvar motion = __spreadValues(__spreadValues({}, fromToMotion_exports), resetMotion_exports);\n\n// packages/ag-charts-community/src/integrated-charts-theme.ts\nvar integrated_charts_theme_exports = {};\n__export(integrated_charts_theme_exports, {\n CARTESIAN_AXIS_TYPE: () => CARTESIAN_AXIS_TYPE,\n ChartTheme: () => ChartTheme,\n DEFAULT_ANNOTATION_BACKGROUND_FILL: () => DEFAULT_ANNOTATION_BACKGROUND_FILL,\n DEFAULT_ANNOTATION_HANDLE_FILL: () => DEFAULT_ANNOTATION_HANDLE_FILL,\n DEFAULT_ANNOTATION_STROKE: () => DEFAULT_ANNOTATION_STROKE,\n DEFAULT_AXIS_GRID_COLOUR: () => DEFAULT_AXIS_GRID_COLOUR,\n DEFAULT_AXIS_LINE_COLOUR: () => DEFAULT_AXIS_LINE_COLOUR,\n DEFAULT_BACKGROUND_COLOUR: () => DEFAULT_BACKGROUND_COLOUR,\n DEFAULT_COLOURS: () => DEFAULT_COLOURS,\n DEFAULT_CROSS_LINES_COLOUR: () => DEFAULT_CROSS_LINES_COLOUR,\n DEFAULT_DIVERGING_SERIES_COLOUR_RANGE: () => DEFAULT_DIVERGING_SERIES_COLOUR_RANGE,\n DEFAULT_FONT_FAMILY: () => DEFAULT_FONT_FAMILY,\n DEFAULT_HIERARCHY_FILLS: () => DEFAULT_HIERARCHY_FILLS,\n DEFAULT_HIERARCHY_STROKES: () => DEFAULT_HIERARCHY_STROKES,\n DEFAULT_INSIDE_SERIES_LABEL_COLOUR: () => DEFAULT_INSIDE_SERIES_LABEL_COLOUR,\n DEFAULT_INVERTED_LABEL_COLOUR: () => DEFAULT_INVERTED_LABEL_COLOUR,\n DEFAULT_LABEL_COLOUR: () => DEFAULT_LABEL_COLOUR,\n DEFAULT_MUTED_LABEL_COLOUR: () => DEFAULT_MUTED_LABEL_COLOUR,\n DEFAULT_POLAR_SERIES_STROKE: () => DEFAULT_POLAR_SERIES_STROKE,\n DEFAULT_SHADOW_COLOUR: () => DEFAULT_SHADOW_COLOUR,\n DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE: () => DEFAULT_WATERFALL_SERIES_CONNECTOR_LINE_STROKE,\n DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS: () => DEFAULT_WATERFALL_SERIES_NEGATIVE_COLOURS,\n DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS: () => DEFAULT_WATERFALL_SERIES_POSITIVE_COLOURS,\n DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS: () => DEFAULT_WATERFALL_SERIES_TOTAL_COLOURS,\n EXTENDS_AXES_DEFAULTS: () => EXTENDS_AXES_DEFAULTS,\n EXTENDS_AXES_GRID_LINE_DEFAULTS: () => EXTENDS_AXES_GRID_LINE_DEFAULTS,\n EXTENDS_AXES_LINE_DEFAULTS: () => EXTENDS_AXES_LINE_DEFAULTS,\n EXTENDS_AXES_TICK_DEFAULTS: () => EXTENDS_AXES_TICK_DEFAULTS,\n EXTENDS_CARTESIAN_MARKER_DEFAULTS: () => EXTENDS_CARTESIAN_MARKER_DEFAULTS,\n EXTENDS_SERIES_DEFAULTS: () => EXTENDS_SERIES_DEFAULTS,\n FONT_SIZE: () => FONT_SIZE,\n FONT_WEIGHT: () => FONT_WEIGHT,\n IS_DARK_THEME: () => IS_DARK_THEME,\n POLAR_AXIS_SHAPE: () => POLAR_AXIS_SHAPE,\n POLAR_AXIS_TYPE: () => POLAR_AXIS_TYPE,\n POSITION: () => POSITION,\n getChartTheme: () => getChartTheme,\n markerPaletteFactory: () => markerPaletteFactory,\n singleSeriesPaletteFactory: () => singleSeriesPaletteFactory,\n themes: () => themes2\n});\nvar themes2 = mapValues(themes, themeFactory => themeFactory == null ? void 0 : themeFactory());\n\n// packages/ag-charts-community/src/sparklines-scale.ts\nvar sparklines_scale_exports = {};\n__export(sparklines_scale_exports, {\n BandScale: () => BandScale,\n ColorScale: () => ColorScale,\n ContinuousScale: () => ContinuousScale,\n Invalidating: () => Invalidating,\n LinearScale: () => LinearScale,\n OrdinalTimeScale: () => OrdinalTimeScale,\n TimeScale: () => TimeScale\n});\n\n// packages/ag-charts-community/src/sparklines-util.ts\nvar sparklines_util_exports = {};\n__export(sparklines_util_exports, {\n Color: () => Color,\n Logger: () => Logger,\n Padding: () => Padding,\n angleBetween: () => angleBetween,\n areArrayItemsStrictlyEqual: () => areArrayItemsStrictlyEqual,\n areArrayNumbersEqual: () => areArrayNumbersEqual,\n bifurcate: () => bifurcate,\n checkDatum: () => checkDatum,\n clamp: () => clamp,\n clampArray: () => clampArray,\n countFractionDigits: () => countFractionDigits,\n createId: () => createId,\n deepClone: () => deepClone,\n displacePointFromVector: () => displacePointFromVector,\n extent: () => extent,\n findMinMax: () => findMinMax,\n findRangeExtent: () => findRangeExtent,\n isBetweenAngles: () => isBetweenAngles,\n isContinuous: () => isContinuous,\n isDate: () => isValidDate,\n isDenseInterval: () => isDenseInterval,\n isEqual: () => isEqual,\n isNegative: () => isNegative,\n isNumber: () => isFiniteNumber,\n isNumberEqual: () => isEqual,\n isNumberObject: () => isNumberObject,\n isString: () => isString,\n isStringObject: () => isStringObject,\n jsonApply: () => jsonApply,\n jsonDiff: () => jsonDiff,\n jsonWalk: () => jsonWalk,\n mod: () => mod,\n normalisedExtent: () => normalisedExtent,\n normalisedExtentWithMetadata: () => normalisedExtentWithMetadata,\n normalizeAngle180: () => normalizeAngle180,\n normalizeAngle360: () => normalizeAngle360,\n normalizeAngle360Inclusive: () => normalizeAngle360Inclusive,\n range: () => range,\n resetIds: () => resetIds,\n round: () => round,\n sanitizeHtml: () => sanitizeHtml,\n setAttribute: () => setAttribute,\n shallowClone: () => shallowClone,\n tickFormat: () => tickFormat,\n tickStep: () => tickStep,\n ticks: () => ticks_default,\n toDegrees: () => toDegrees,\n toFixed: () => toFixed,\n toRadians: () => toRadians,\n transformIntegratedCategoryValue: () => transformIntegratedCategoryValue,\n zipObject: () => zipObject\n});\n\n// packages/ag-charts-community/src/util/zip.ts\nfunction zipObject(keys, values) {\n const zipped = {};\n if (Array.isArray(values)) {\n for (let i = 0; i < keys.length; i++) {\n zipped[`${keys[i]}`] = values[i];\n }\n } else {\n for (let i = 0; i < keys.length; i++) {\n zipped[`${keys[i]}`] = values;\n }\n }\n return zipped;\n}\n\n// packages/ag-charts-community/src/module-support.ts\nvar module_support_exports = {};\n__export(module_support_exports, {\n AND: () => AND,\n ARRAY: () => ARRAY,\n ARRAY_OF: () => ARRAY_OF,\n AbstractBarSeries: () => AbstractBarSeries,\n AbstractBarSeriesProperties: () => AbstractBarSeriesProperties,\n ActionOnSet: () => ActionOnSet,\n Animation: () => Animation,\n AnimationManager: () => AnimationManager,\n AreaSeriesTag: () => AreaSeriesTag,\n Axis: () => Axis,\n AxisLabel: () => AxisLabel,\n AxisTick: () => AxisTick,\n BOOLEAN: () => BOOLEAN,\n BOOLEAN_ARRAY: () => BOOLEAN_ARRAY,\n Background: () => Background,\n BackgroundModule: () => BackgroundModule,\n BaseModuleInstance: () => BaseModuleInstance,\n BaseProperties: () => BaseProperties,\n COLOR_STRING: () => COLOR_STRING,\n COLOR_STRING_ARRAY: () => COLOR_STRING_ARRAY,\n CartesianAxis: () => CartesianAxis,\n CartesianSeries: () => CartesianSeries,\n CartesianSeriesNodeEvent: () => CartesianSeriesNodeEvent,\n CartesianSeriesProperties: () => CartesianSeriesProperties,\n CategoryAxis: () => CategoryAxis,\n CategoryAxisTick: () => CategoryAxisTick,\n ChartAxisDirection: () => ChartAxisDirection,\n ChartEventManager: () => ChartEventManager,\n ChartOptions: () => ChartOptions,\n ChartUpdateType: () => ChartUpdateType,\n ContextMenuRegistry: () => ContextMenuRegistry,\n CursorManager: () => CursorManager,\n DATE: () => DATE,\n DATE_ARRAY: () => DATE_ARRAY,\n DATE_OR_DATETIME_MS: () => DATE_OR_DATETIME_MS,\n DEFAULT_CARTESIAN_DIRECTION_KEYS: () => DEFAULT_CARTESIAN_DIRECTION_KEYS,\n DEFAULT_CARTESIAN_DIRECTION_NAMES: () => DEFAULT_CARTESIAN_DIRECTION_NAMES,\n DEFAULT_TOOLTIP_CLASS: () => DEFAULT_TOOLTIP_CLASS,\n DEFAULT_TOOLTIP_DARK_CLASS: () => DEFAULT_TOOLTIP_DARK_CLASS,\n DEGREE: () => DEGREE,\n DIRECTION: () => DIRECTION,\n DataController: () => DataController,\n DataModel: () => DataModel,\n DataModelSeries: () => DataModelSeries,\n DataService: () => DataService,\n Default: () => Default,\n Deprecated: () => Deprecated,\n DeprecatedAndRenamedTo: () => DeprecatedAndRenamedTo,\n EMPTY_TOOLTIP_CONTENT: () => EMPTY_TOOLTIP_CONTENT,\n FONT_STYLE: () => FONT_STYLE,\n FONT_WEIGHT: () => FONT_WEIGHT2,\n FUNCTION: () => FUNCTION,\n GREATER_THAN: () => GREATER_THAN,\n GestureDetector: () => GestureDetector,\n GroupedCategoryAxis: () => GroupedCategoryAxis,\n HierarchyNode: () => HierarchyNode,\n HierarchySeries: () => HierarchySeries,\n HierarchySeriesProperties: () => HierarchySeriesProperties,\n HighlightManager: () => HighlightManager,\n HighlightStyle: () => HighlightStyle,\n INTERACTION_RANGE: () => INTERACTION_RANGE,\n InteractionManager: () => InteractionManager,\n InteractionState: () => InteractionState,\n LABEL_PLACEMENT: () => LABEL_PLACEMENT,\n LESS_THAN: () => LESS_THAN,\n LINE_CAP: () => LINE_CAP,\n LINE_DASH: () => LINE_DASH,\n LINE_JOIN: () => LINE_JOIN,\n Layers: () => Layers,\n LayoutService: () => LayoutService,\n LonLatBBox: () => LonLatBBox,\n MARKER_SHAPE: () => MARKER_SHAPE,\n MATCHING_CROSSLINE_TYPE: () => MATCHING_CROSSLINE_TYPE,\n MAX_SPACING: () => MAX_SPACING,\n MIN_SPACING: () => MIN_SPACING,\n MercatorScale: () => MercatorScale,\n Motion: () => easing_exports,\n NAN: () => NAN,\n NODE_UPDATE_STATE_TO_PHASE_MAPPING: () => NODE_UPDATE_STATE_TO_PHASE_MAPPING,\n NUMBER: () => NUMBER,\n NUMBER_ARRAY: () => NUMBER_ARRAY,\n NUMBER_OR_NAN: () => NUMBER_OR_NAN,\n Navigator: () => Navigator,\n NavigatorModule: () => NavigatorModule,\n OBJECT: () => OBJECT,\n OBJECT_ARRAY: () => OBJECT_ARRAY,\n OR: () => OR,\n OVERFLOW_STRATEGY: () => OVERFLOW_STRATEGY,\n ObserveChanges: () => ObserveChanges,\n PHASE_METADATA: () => PHASE_METADATA,\n PHASE_ORDER: () => PHASE_ORDER,\n PLACEMENT: () => PLACEMENT,\n PLAIN_OBJECT: () => PLAIN_OBJECT,\n POINTER_INTERACTION_TYPES: () => POINTER_INTERACTION_TYPES,\n POSITION: () => POSITION2,\n POSITIVE_NUMBER: () => POSITIVE_NUMBER,\n PolarAxis: () => PolarAxis,\n PolarSeries: () => PolarSeries,\n PropertiesArray: () => PropertiesArray,\n ProxyOnWrite: () => ProxyOnWrite,\n ProxyProperty: () => ProxyProperty,\n ProxyPropertyOnWrite: () => ProxyPropertyOnWrite,\n QUICK_TRANSITION: () => QUICK_TRANSITION,\n RATIO: () => RATIO,\n RepeatType: () => RepeatType,\n SKIP_JS_BUILTINS: () => SKIP_JS_BUILTINS,\n SMALLEST_KEY_INTERVAL: () => SMALLEST_KEY_INTERVAL,\n SORT_DOMAIN_GROUPS: () => SORT_DOMAIN_GROUPS,\n STRING: () => STRING,\n STRING_ARRAY: () => STRING_ARRAY,\n Series: () => Series,\n SeriesGroupingChangedEvent: () => SeriesGroupingChangedEvent,\n SeriesItemHighlightStyle: () => SeriesItemHighlightStyle,\n SeriesMarker: () => SeriesMarker,\n SeriesNodeEvent: () => SeriesNodeEvent,\n SeriesNodePickMode: () => SeriesNodePickMode,\n SeriesProperties: () => SeriesProperties,\n SeriesTooltip: () => SeriesTooltip,\n StateMachine: () => StateMachine,\n TEXT_ALIGN: () => TEXT_ALIGN,\n TEXT_WRAP: () => TEXT_WRAP,\n ToolbarManager: () => ToolbarManager,\n Tooltip: () => Tooltip,\n TooltipManager: () => TooltipManager,\n TooltipPosition: () => TooltipPosition,\n UNION: () => UNION,\n UpdateService: () => UpdateService,\n VERTICAL_ALIGN: () => VERTICAL_ALIGN,\n Validate: () => Validate,\n ZoomManager: () => ZoomManager,\n __FORCE_MODULE_DETECTION: () => __FORCE_MODULE_DETECTION2,\n accumulateGroup: () => accumulateGroup,\n accumulatedValue: () => accumulatedValue,\n accumulativeValueProperty: () => accumulativeValueProperty,\n addHitTestersToQuadtree: () => addHitTestersToQuadtree,\n adjustLabelPlacement: () => adjustLabelPlacement,\n allInStringUnion: () => allInStringUnion,\n animationValidation: () => animationValidation,\n area: () => area,\n arraysEqual: () => arraysEqual,\n assignJsonApplyConstructedArray: () => assignJsonApplyConstructedArray,\n backfillPathPointData: () => backfillPathPointData,\n basicContinuousCheckDatumValidation: () => basicContinuousCheckDatumValidation,\n bifurcate: () => bifurcate,\n buildFormatter: () => buildFormatter,\n buildResetPathFn: () => buildResetPathFn,\n calculateDefaultTimeTickFormat: () => calculateDefaultTimeTickFormat,\n calculatePlacement: () => calculatePlacement,\n checkCrisp: () => checkCrisp,\n childrenIter: () => childrenIter,\n circularSliceArray: () => circularSliceArray,\n clamp: () => clamp,\n clampArray: () => clampArray,\n collapsedStartingBarPosition: () => collapsedStartingBarPosition,\n computeBarFocusBounds: () => computeBarFocusBounds,\n computeMarkerFocusBounds: () => computeMarkerFocusBounds,\n computeSectorFocusBounds: () => computeSectorFocusBounds,\n convertValuesToScaleByDefs: () => convertValuesToScaleByDefs,\n countFractionDigits: () => countFractionDigits,\n createDatumId: () => createDatumId,\n createDeprecationWarning: () => createDeprecationWarning,\n createElement: () => createElement,\n dateToNumber: () => dateToNumber,\n deconstructSelectionsOrNodes: () => deconstructSelectionsOrNodes,\n deepClone: () => deepClone,\n deepMerge: () => deepMerge,\n defaultTimeTickFormat: () => defaultTimeTickFormat,\n determinePathStatus: () => determinePathStatus,\n diff: () => diff,\n downloadUrl: () => downloadUrl,\n enterpriseModule: () => enterpriseModule,\n extent: () => extent,\n extractDecoratedProperties: () => extractDecoratedProperties,\n findMinMax: () => findMinMax,\n findQuadtreeMatch: () => findQuadtreeMatch,\n findRangeExtent: () => findRangeExtent,\n fixNumericExtent: () => fixNumericExtent,\n fromToMotion: () => fromToMotion,\n getDocument: () => getDocument,\n getMissCount: () => getMissCount,\n getPath: () => getPath,\n getRectConfig: () => getRectConfig,\n getWindow: () => getWindow,\n groupAccumulativeValueProperty: () => groupAccumulativeValueProperty,\n groupAverage: () => groupAverage,\n groupBy: () => groupBy,\n groupCount: () => groupCount,\n groupSum: () => groupSum,\n injectStyle: () => injectStyle,\n isArray: () => isArray,\n isBoolean: () => isBoolean,\n isDate: () => isDate,\n isDecoratedObject: () => isDecoratedObject,\n isDefined: () => isDefined,\n isEnumKey: () => isEnumKey,\n isEnumValue: () => isEnumValue,\n isEqual: () => isEqual,\n isFiniteNumber: () => isFiniteNumber,\n isFunction: () => isFunction,\n isHtmlElement: () => isHtmlElement,\n isNegative: () => isNegative,\n isNumber: () => isNumber,\n isObject: () => isObject,\n isObjectLike: () => isObjectLike,\n isPlainObject: () => isPlainObject,\n isProperties: () => isProperties,\n isRegExp: () => isRegExp,\n isString: () => isString,\n isSymbol: () => isSymbol,\n isValidDate: () => isValidDate,\n jsonApply: () => jsonApply,\n jsonDiff: () => jsonDiff,\n jsonWalk: () => jsonWalk,\n keyProperty: () => keyProperty,\n listDecoratedProperties: () => listDecoratedProperties,\n mapIterable: () => mapIterable,\n mapValues: () => mapValues,\n markerFadeInAnimation: () => markerFadeInAnimation,\n markerPaletteFactory: () => markerPaletteFactory,\n markerScaleInAnimation: () => markerScaleInAnimation,\n markerSwipeScaleInAnimation: () => markerSwipeScaleInAnimation,\n mergeArrayDefaults: () => mergeArrayDefaults,\n mergeDefaults: () => mergeDefaults,\n midpointStartingBarPosition: () => midpointStartingBarPosition,\n minMax: () => minMax,\n mod: () => mod,\n moduleRegistry: () => moduleRegistry,\n normaliseGroupTo: () => normaliseGroupTo,\n normalisePropertyTo: () => normalisePropertyTo,\n normalisedExtent: () => normalisedExtent,\n normalisedExtentWithMetadata: () => normalisedExtentWithMetadata,\n pairCategoryData: () => pairCategoryData,\n pairContinuousData: () => pairContinuousData,\n partialAssign: () => partialAssign,\n pathFadeInAnimation: () => pathFadeInAnimation,\n pathFadeOutAnimation: () => pathFadeOutAnimation,\n pathSwipeInAnimation: () => pathSwipeInAnimation,\n pickByMatchingAngle: () => pickByMatchingAngle,\n predicateWithMessage: () => predicateWithMessage,\n prepareAreaPathAnimation: () => prepareAreaPathAnimation,\n prepareAxisAnimationContext: () => prepareAxisAnimationContext,\n prepareAxisAnimationFunctions: () => prepareAxisAnimationFunctions,\n prepareBarAnimationFunctions: () => prepareBarAnimationFunctions,\n prepareLinePathAnimation: () => prepareLinePathAnimation,\n prepareLinePathAnimationFns: () => prepareLinePathAnimationFns,\n prepareMarkerAnimation: () => prepareMarkerAnimation,\n preparePieSeriesAnimationFunctions: () => preparePieSeriesAnimationFunctions,\n range: () => range2,\n rangedValueProperty: () => rangedValueProperty,\n renderPartialPath: () => renderPartialPath,\n resetAxisGroupFn: () => resetAxisGroupFn,\n resetAxisLabelSelectionFn: () => resetAxisLabelSelectionFn,\n resetAxisLineSelectionFn: () => resetAxisLineSelectionFn,\n resetAxisSelectionFn: () => resetAxisSelectionFn,\n resetBarSelectionsFn: () => resetBarSelectionsFn,\n resetIds: () => resetIds,\n resetLabelFn: () => resetLabelFn,\n resetMarkerFn: () => resetMarkerFn,\n resetMarkerPositionFn: () => resetMarkerPositionFn,\n resetMotion: () => resetMotion,\n resetPieSelectionsFn: () => resetPieSelectionsFn,\n round: () => round,\n seriesLabelFadeInAnimation: () => seriesLabelFadeInAnimation,\n seriesLabelFadeOutAnimation: () => seriesLabelFadeOutAnimation,\n setDocument: () => setDocument,\n setPath: () => setPath,\n setWindow: () => setWindow,\n shallowClone: () => shallowClone,\n singleSeriesPaletteFactory: () => singleSeriesPaletteFactory,\n staticFromToMotion: () => staticFromToMotion,\n stringify: () => stringify,\n sum: () => sum,\n sumValues: () => sumValues,\n toArray: () => toArray,\n toFixed: () => toFixed,\n toTooltipHtml: () => toTooltipHtml,\n trailingAccumulatedValue: () => trailingAccumulatedValue,\n trailingAccumulatedValueProperty: () => trailingAccumulatedValueProperty,\n unique: () => unique,\n updateClipPath: () => updateClipPath,\n updateLabelNode: () => updateLabelNode,\n updateRect: () => updateRect,\n validateCrossLineValues: () => validateCrossLineValues,\n valueProperty: () => valueProperty,\n without: () => without\n});\n\n// packages/ag-charts-community/src/chart/series/util.ts\nfunction convertValuesToScaleByDefs({\n defs,\n values,\n xAxis,\n yAxis\n}) {\n if (!(xAxis && yAxis)) {\n throw new Error(\"Axes must be defined\");\n }\n const result = {};\n for (const [searchId, {\n def\n }] of defs) {\n if (Object.hasOwn(values, searchId)) {\n const {\n scale: scale2\n } = def.type === \"key\" ? xAxis : yAxis;\n result[searchId] = Math.round(scale2.convert(values[searchId]));\n }\n }\n return result;\n}\n\n// packages/ag-charts-community/src/chart/series/hierarchy/hierarchySeries.ts\nvar _HierarchyNode = class _HierarchyNode {\n constructor(series, index, datum, size, colorValue, fill, stroke, sumSize, depth, parent, children) {\n this.series = series;\n this.index = index;\n this.datum = datum;\n this.size = size;\n this.colorValue = colorValue;\n this.fill = fill;\n this.stroke = stroke;\n this.sumSize = sumSize;\n this.depth = depth;\n this.parent = parent;\n this.children = children;\n this.midPoint = {\n x: 0,\n y: 0\n };\n }\n contains(other) {\n let current = other;\n while (current != null && current.index >= this.index) {\n if (current === this) {\n return true;\n }\n current = current.parent;\n }\n return false;\n }\n walk(callback, order = _HierarchyNode.Walk.PreOrder) {\n if (order === _HierarchyNode.Walk.PreOrder) {\n callback(this);\n }\n this.children.forEach(child => {\n child.walk(callback, order);\n });\n if (order === _HierarchyNode.Walk.PostOrder) {\n callback(this);\n }\n }\n *[Symbol.iterator]() {\n yield this;\n for (const child of this.children) {\n yield* __yieldStar(child);\n }\n }\n};\n_HierarchyNode.Walk = {\n PreOrder: 0,\n PostOrder: 1\n};\nvar HierarchyNode = _HierarchyNode;\nvar HierarchySeries = class extends Series {\n constructor(moduleCtx) {\n super({\n moduleCtx,\n pickModes: [0 /* EXACT_SHAPE_MATCH */],\n contentGroupVirtual: false\n });\n this.rootNode = new HierarchyNode(this, 0, void 0, 0, void 0, void 0, void 0, 0, void 0, void 0, []);\n this.colorDomain = [0, 0];\n this.maxDepth = 0;\n this.animationState = new StateMachine(\"empty\", {\n empty: {\n update: {\n target: \"ready\",\n action: data => this.animateEmptyUpdateReady(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n },\n ready: {\n updateData: \"waiting\",\n clear: \"clearing\",\n highlight: data => this.animateReadyHighlight(data),\n resize: data => this.animateReadyResize(data),\n reset: \"empty\",\n skip: \"ready\"\n },\n waiting: {\n update: {\n target: \"ready\",\n action: data => this.animateWaitingUpdateReady(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n },\n clearing: {\n update: {\n target: \"empty\",\n action: data => this.animateClearingUpdateEmpty(data)\n },\n reset: \"empty\",\n skip: \"ready\"\n }\n }, () => this.checkProcessedDataAnimatable());\n }\n resetAnimation(phase) {\n if (phase === \"initial\") {\n this.animationState.transition(\"reset\");\n } else if (phase === \"ready\") {\n this.animationState.transition(\"skip\");\n }\n }\n processData() {\n return __async(this, null, function* () {\n var _a, _b;\n const {\n childrenKey,\n sizeKey,\n colorKey,\n fills,\n strokes,\n colorRange\n } = this.properties;\n let index = 0;\n const getIndex = () => {\n index += 1;\n return index;\n };\n let maxDepth = 0;\n let minColor = Infinity;\n let maxColor = -Infinity;\n const colors = new Array(((_b = (_a = this.data) == null ? void 0 : _a.length) != null ? _b : 0) + 1).fill(void 0);\n const createNode = (datum, parent) => {\n const nodeIndex = getIndex();\n const depth = parent.depth != null ? parent.depth + 1 : 0;\n const children = childrenKey != null ? datum[childrenKey] : void 0;\n const isLeaf = children == null || children.length === 0;\n let size = sizeKey != null ? datum[sizeKey] : void 0;\n if (Number.isFinite(size)) {\n size = Math.max(size, 0);\n } else {\n size = isLeaf ? 1 : 0;\n }\n const sumSize = size;\n maxDepth = Math.max(maxDepth, depth);\n const color = colorKey != null ? datum[colorKey] : void 0;\n if (typeof color === \"number\") {\n colors[nodeIndex] = color;\n minColor = Math.min(minColor, color);\n maxColor = Math.max(maxColor, color);\n }\n return appendChildren(new HierarchyNode(this, nodeIndex, datum, size, color, void 0, void 0, sumSize, depth, parent, []), children);\n };\n const appendChildren = (node, data) => {\n data == null ? void 0 : data.forEach(datum => {\n const child = createNode(datum, node);\n node.children.push(child);\n node.sumSize += child.sumSize;\n });\n return node;\n };\n const rootNode = appendChildren(new HierarchyNode(this, 0, void 0, 0, void 0, void 0, void 0, 0, void 0, void 0, []), this.data);\n const colorDomain = [minColor, maxColor];\n let colorScale;\n if (colorRange != null && Number.isFinite(minColor) && Number.isFinite(maxColor)) {\n colorScale = new ColorScale();\n colorScale.domain = colorDomain;\n colorScale.range = colorRange;\n colorScale.update();\n }\n rootNode.children.forEach((child, childIndex) => {\n child.walk(node => {\n let fill;\n const color = colors[node.index];\n if (color != null) {\n fill = colorScale == null ? void 0 : colorScale.convert(color);\n }\n fill != null ? fill : fill = fills == null ? void 0 : fills[childIndex % fills.length];\n node.fill = fill;\n node.stroke = colorScale == null ? strokes == null ? void 0 : strokes[childIndex % strokes.length] : \"rgba(0, 0, 0, 0.2)\";\n });\n });\n this.rootNode = rootNode;\n this.maxDepth = maxDepth;\n this.colorDomain = colorDomain;\n });\n }\n update(_0) {\n return __async(this, arguments, function* ({\n seriesRect\n }) {\n yield this.updateSelections();\n yield this.updateNodes();\n const animationData = this.getAnimationData();\n const resize = this.checkResize(seriesRect);\n if (resize) {\n this.animationState.transition(\"resize\", animationData);\n }\n this.animationState.transition(\"update\", animationData);\n });\n }\n resetAllAnimation(data) {\n var _a;\n const datum = (_a = this.animationResetFns) == null ? void 0 : _a.datum;\n this.ctx.animationManager.stopByAnimationGroupId(this.id);\n if (datum != null) {\n resetMotion(data.datumSelections, datum);\n }\n }\n animateEmptyUpdateReady(data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation(data);\n }\n animateWaitingUpdateReady(data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation(data);\n }\n animateReadyHighlight(data) {\n var _a;\n const datum = (_a = this.animationResetFns) == null ? void 0 : _a.datum;\n if (datum != null) {\n resetMotion([data], datum);\n }\n }\n animateReadyResize(data) {\n this.resetAllAnimation(data);\n }\n animateClearingUpdateEmpty(data) {\n this.ctx.animationManager.skipCurrentBatch();\n this.resetAllAnimation(data);\n }\n animationTransitionClear() {\n this.animationState.transition(\"clear\", this.getAnimationData());\n }\n getAnimationData() {\n const animationData = {\n datumSelections: [this.groupSelection]\n };\n return animationData;\n }\n isProcessedDataAnimatable() {\n return true;\n }\n checkProcessedDataAnimatable() {\n if (!this.isProcessedDataAnimatable()) {\n this.ctx.animationManager.skipCurrentBatch();\n }\n }\n getLabelData() {\n return [];\n }\n getSeriesDomain() {\n return [NaN, NaN];\n }\n getLegendData(legendType) {\n const {\n colorKey,\n colorName,\n colorRange,\n visible\n } = this.properties;\n return legendType === \"gradient\" && colorKey != null && colorRange != null ? [{\n legendType: \"gradient\",\n enabled: visible,\n seriesId: this.id,\n colorName,\n colorRange,\n colorDomain: this.colorDomain\n }] : [];\n }\n getDatumIdFromData(node) {\n return `${node.index}`;\n }\n getDatumId(node) {\n return this.getDatumIdFromData(node);\n }\n};\n\n// packages/ag-charts-community/src/chart/series/hierarchy/hierarchySeriesProperties.ts\nvar HierarchySeriesProperties = class extends SeriesProperties {\n constructor() {\n super(...arguments);\n this.childrenKey = \"children\";\n this.fills = Object.values(DEFAULT_FILLS);\n this.strokes = Object.values(DEFAULT_STROKES);\n }\n};\n__decorateClass([Validate(STRING)], HierarchySeriesProperties.prototype, \"childrenKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], HierarchySeriesProperties.prototype, \"sizeKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], HierarchySeriesProperties.prototype, \"colorKey\", 2);\n__decorateClass([Validate(STRING, {\n optional: true\n})], HierarchySeriesProperties.prototype, \"colorName\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], HierarchySeriesProperties.prototype, \"fills\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY)], HierarchySeriesProperties.prototype, \"strokes\", 2);\n__decorateClass([Validate(COLOR_STRING_ARRAY, {\n optional: true\n})], HierarchySeriesProperties.prototype, \"colorRange\", 2);\n\n// packages/ag-charts-community/src/chart/series/topology/lonLatBbox.ts\nvar LonLatBBox = class {\n constructor(lon0, lat0, lon1, lat1) {\n this.lon0 = lon0;\n this.lat0 = lat0;\n this.lon1 = lon1;\n this.lat1 = lat1;\n }\n merge(other) {\n this.lon0 = Math.min(this.lon0, other.lon0);\n this.lat0 = Math.min(this.lat0, other.lat0);\n this.lon1 = Math.max(this.lon1, other.lon1);\n this.lat1 = Math.max(this.lat1, other.lat1);\n }\n};\n\n// packages/ag-charts-community/src/chart/legendDatum.ts\nvar __FORCE_MODULE_DETECTION2 = 0;\nexport { AgChart, AgCharts, AgErrorBarSupportedSeriesTypes, AgTooltipPositionType, Marker, VERSION, module_support_exports as _ModuleSupport, sparklines_scale_exports as _Scale, integrated_charts_scene_exports as _Scene, integrated_charts_theme_exports as _Theme, sparklines_util_exports as _Util, __FORCE_MODULE_DETECTION, time_exports as time };","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, Input, Output, NgModule } from '@angular/core';\nimport { AgCharts } from 'ag-charts-community';\n\n// noinspection AngularIncorrectTemplateDefinition\nclass AgChartsAngular {\n constructor(elementDef, ngZone) {\n this.ngZone = ngZone;\n this._initialised = false;\n this.options = {};\n this.onChartReady = new EventEmitter();\n this._nativeElement = elementDef.nativeElement;\n }\n ngAfterViewInit() {\n const options = this.patchChartOptions(this.options);\n this.chart = this.runOutsideAngular(() => AgCharts.create(options));\n this._initialised = true;\n this.chart.chart.waitForUpdate().then(() => {\n this.onChartReady.emit(this.chart);\n });\n }\n // noinspection JSUnusedGlobalSymbols,JSUnusedLocalSymbols\n ngOnChanges(changes) {\n this.runOutsideAngular(() => {\n if (!this._initialised || !this.chart) {\n return;\n }\n AgCharts.update(this.chart, this.patchChartOptions(this.options));\n });\n }\n ngOnDestroy() {\n if (this._initialised && this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n this._initialised = false;\n }\n }\n patchChartOptions(propsOptions) {\n const patchListeners = listenerConfig => {\n const config = listenerConfig ?? {};\n for (const [listenerName, listener] of Object.entries(config)) {\n if (!listener || typeof listener !== 'function') continue;\n config[listenerName] = (...args) => {\n this.runInsideAngular(() => listener(...args));\n };\n }\n };\n patchListeners(propsOptions?.legend?.listeners);\n patchListeners(propsOptions?.listeners);\n propsOptions.series?.forEach(series => {\n patchListeners(series.listeners);\n });\n if (propsOptions.container) {\n return propsOptions;\n }\n return {\n ...propsOptions,\n container: this._nativeElement\n };\n }\n runOutsideAngular(callback) {\n return this.ngZone ? this.ngZone.runOutsideAngular(callback) : callback();\n }\n runInsideAngular(callback) {\n return this.ngZone ? this.ngZone.run(callback) : callback();\n }\n}\nAgChartsAngular.ɵfac = function AgChartsAngular_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AgChartsAngular)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n};\nAgChartsAngular.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: AgChartsAngular,\n selectors: [[\"ag-charts-angular\"]],\n inputs: {\n options: \"options\"\n },\n outputs: {\n onChartReady: \"onChartReady\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function AgChartsAngular_Template(rf, ctx) {},\n encapsulation: 2\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AgChartsAngular, [{\n type: Component,\n args: [{\n selector: 'ag-charts-angular',\n standalone: true,\n template: '',\n encapsulation: ViewEncapsulation.None\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.NgZone\n }];\n }, {\n options: [{\n type: Input\n }],\n onChartReady: [{\n type: Output\n }]\n });\n})();\nclass AgChartsAngularModule {}\nAgChartsAngularModule.ɵfac = function AgChartsAngularModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AgChartsAngularModule)();\n};\nAgChartsAngularModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: AgChartsAngularModule\n});\nAgChartsAngularModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [AgChartsAngular]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AgChartsAngularModule, [{\n type: NgModule,\n args: [{\n declarations: [],\n imports: [AgChartsAngular],\n exports: [AgChartsAngular]\n }]\n }], null, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AgChartsAngular, AgChartsAngularModule };\n","import { Component, Input } from '@angular/core';\r\nimport { CompletionStatus } from '@pepconnect/models/progress/completion-status.model';\r\nimport { DataPointType, LearningPlanHelpers, PlanDataPoint } from '@pepconnect/shared/plans-shared/services/plan-helpers.service';\r\nimport { intToPercentString } from '@pepconnect/utils/generic-utils';\r\nimport { AgChartOptions, AgPieSeriesOptions } from 'ag-charts-community';\r\n\r\n//https://www.ag-grid.com/javascript-charts/pie-series/#api-reference\r\n\r\n@Component({\r\n selector: 'app-plans-pie-chart',\r\n templateUrl: './plans-pie-chart.component.html'\r\n})\r\nexport class PlansPieChartComponent {\r\n private _status: CompletionStatus;\r\n @Input() set status(status: CompletionStatus) {\r\n this._status = status;\r\n this.options = this.createOptions();\r\n }\r\n\r\n get status() {\r\n return this._status;\r\n }\r\n\r\n valueKey = 'value';\r\n labelKey = 'label';\r\n countKey = 'count';\r\n\r\n clickedLabel: string;\r\n clickedValue: string;\r\n\r\n options: AgChartOptions;\r\n\r\n constructor(private planHelpers: LearningPlanHelpers) { }\r\n\r\n get show(): boolean {\r\n return !this.planHelpers.charts.statusHelpers.isPlanStatusEmpty(this.status)\r\n }\r\n\r\n get innerPieLabel(): string {\r\n if (this.planHelpers.charts.statusHelpers.isPlanStatusEmpty(this.status)) {\r\n return DataPointType.NotStarted;\r\n }\r\n\r\n return this.clickedLabel || DataPointType.Completed;\r\n }\r\n\r\n private nodeClick = (params) => {\r\n this.clickedLabel = params.datum.label;\r\n this.clickedValue = intToPercentString(params.datum.value);\r\n }\r\n\r\n private get innerPieValue(): string {\r\n if (this.planHelpers.charts.statusHelpers.isPlanStatusEmpty(this.status)) {\r\n return undefined;\r\n }\r\n\r\n return this.clickedValue || intToPercentString(this.planHelpers.charts.getCompletedDataPoint(this.status)?.value);\r\n }\r\n\r\n private get chartData(): PlanDataPoint[] {\r\n if (this.planHelpers.charts.statusHelpers.isPlanStatusEmpty(this.status)) {\r\n return [];\r\n }\r\n\r\n return this.planHelpers.charts.getAllDataPoints(this.status, true);\r\n }\r\n\r\n private createOptions(): AgChartOptions {\r\n const innerLabel = this.innerPieValue;\r\n return {\r\n legend: {\r\n enabled: false\r\n },\r\n data: this.chartData,\r\n theme: {\r\n palette: {\r\n fills: this.planHelpers.charts.chartColorHelpers.fills,\r\n strokes: this.planHelpers.charts.chartColorHelpers.strokes\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'pie',\r\n listeners: {\r\n nodeClick: this.nodeClick.bind(this)\r\n },\r\n innerLabels: [\r\n { text: innerLabel }\r\n ],\r\n angleKey: this.valueKey,\r\n calloutLabelKey: this.labelKey,\r\n innerRadiusRatio: 0.75,\r\n tooltip: {\r\n renderer: ({ datum, calloutLabelKey }) => {\r\n return {\r\n content: `${datum[calloutLabelKey]}: ${this.planHelpers.numFormatter.format(\r\n datum[this.countKey]\r\n )}`,\r\n };\r\n }\r\n },\r\n calloutLabel: {\r\n enabled: false\r\n },\r\n highlightStyle: {\r\n item: {\r\n fill: undefined\r\n },\r\n series: {\r\n dimOpacity: 0.5\r\n }\r\n },\r\n } as AgPieSeriesOptions\r\n ]\r\n };\r\n }\r\n\r\n}\r\n\r\n","
\r\n \r\n {{ innerPieLabel | translate }}\r\n
\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { CompletionStatus } from '@pepconnect/models/progress/completion-status.model';\r\nimport { LearningPlanHelpers, PlanDataPoint } from '@pepconnect/shared/plans-shared/services/plan-helpers.service';\r\n\r\n/** Displays the progress of a LearningPlan or UserLearning plan as a stacked bar chart */\r\n@Component({\r\n selector: 'app-plans-bar-chart',\r\n templateUrl: './plans-bar-chart.component.html',\r\n styleUrls: ['./plans-bar-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PlansBarChartComponent implements OnInit {\r\n @Input() status: CompletionStatus;\r\n\r\n isStatusEmpty: boolean;\r\n dataPoints: PlanDataPoint[];\r\n bars: PlanDataPoint[];\r\n totalValue: number;\r\n constructor(private planHelpers: LearningPlanHelpers) { }\r\n\r\n ngOnInit(): void {\r\n this.isStatusEmpty = this.planHelpers.charts.statusHelpers.isPlanStatusEmpty(this.status);\r\n this.dataPoints = this.planHelpers.charts.getAllDataPoints(this.status, true);\r\n const pointsWithData = this.dataPoints.filter(x => x.value > 0);\r\n // calc new total value from points with more than 0\r\n const total = pointsWithData.reduce((acc, curr) => acc + curr.count, 0);\r\n this.bars = pointsWithData.map(p => {\r\n return {\r\n ...p,\r\n value: +Math.round(p.count * 100 / total) // calc new percentage based on synthetic total\r\n };\r\n });\r\n\r\n }\r\n\r\n\r\n}\r\n","\r\n
\r\n
\r\n \r\n {{ point.count }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{ 'LEARNING_STATUS_NOTSTARTED' | translate }}\r\n
\r\n
\r\n","import { Component, Input } from '@angular/core';\r\nimport { UserLearningPlan } from '@pepconnect/models/plan/user-learning-plan.model';\r\n\r\n@Component({ template: '' })\r\nexport class BasePlanCardComponent {\r\n\r\n @Input() userLearningPlan: UserLearningPlan;\r\n\r\n collapsed = true;\r\n\r\n get expandIcon() {\r\n return this.collapsed ? 'icon-arrow-down-large' : 'icon-arrow-up-large';\r\n }\r\n\r\n get label() { return this.collapsed ? 'ARIA_EXPAND' : 'ARIA_COLLAPSE'; }\r\n\r\n toggleExpandCollapse() {\r\n this.collapsed = !this.collapsed;\r\n return this.collapsed;\r\n }\r\n\r\n get hasSubItems() { return this.userLearningPlan?.plan?.items?.length !== 0 }\r\n\r\n}\r\n\r\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { V1LearningObject } from '@pepconnect/models/content/learning-object-v1.model';\r\n\r\n@Component({\r\n selector: 'app-member-assignment-item',\r\n templateUrl: './member-assignment-item.component.html',\r\n styleUrls: ['./member-assignment-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MemberAssignmentItemComponent {\r\n\r\n collapsed = true;\r\n\r\n @Input() item: V1LearningObject;\r\n\r\n get label() { return this.collapsed ? 'ARIA_EXPAND' : 'ARIA_COLLAPSE'; }\r\n\r\n toggleExpandCollapse() {\r\n this.collapsed = !this.collapsed;\r\n return this.collapsed;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n

{{ item.longName }}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

\r\n

\r\n {{'LABEL_ACTIVITY_TYPE' | translate}}  {{item.type.name | translate}}\r\n

\r\n

0\">\r\n {{'LABEL_ESTIMATED_TIME' | translate}} {{item.hours}} {{'HOURS' | translate}}\r\n

\r\n
\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { take } from 'rxjs';\r\nimport { TeamMember } from '@pepconnect/features/teams/models/team-member.model';\r\nimport { V1LearningObject } from '@pepconnect/models/content/learning-object-v1.model';\r\nimport { Link } from '@pepconnect/models/general/link.model';\r\nimport { LinksService } from '@pepconnect/services/links.service';\r\nimport { BasePlanCardComponent } from '@pepconnect/shared/plans-shared/components/base/base-plan-card/base-plan-card.component';\r\nimport * as arrayHelpers from '@pepconnect/utils/array-helpers';\r\nimport { constants } from '@pepconnect/constants/constants';\r\n\r\n@Component({\r\n selector: 'app-member-plan-assignment',\r\n templateUrl: './member-plan-assignment.component.html',\r\n styleUrls: ['./member-plan-assignment.component.scss']\r\n})\r\nexport class MemberPlanAssignmentComponent extends BasePlanCardComponent implements OnInit {\r\n\r\n @Input() teamMember: TeamMember;\r\n @Output() dueDateChanged = new EventEmitter();\r\n @Output() planRemoved = new EventEmitter();\r\n\r\n planItems: V1LearningObject[] = [];\r\n planItemsCache: V1LearningObject[] = [];\r\n showChangeDueDate = false;\r\n\r\n showLoadMore = false;\r\n showAllItems = false;\r\n\r\n constructor(private linksService: LinksService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.hasSubItems) {\r\n this.planItemsCache = this.sortPlanItems([...this.userLearningPlan.plan.items]);\r\n this.planItems = arrayHelpers.take(this.planItemsCache, constants.DEFAULT_MEMBER_PLAN_ITEM_SIZE);\r\n if (this.planItemsCache.length > constants.DEFAULT_MEMBER_PLAN_ITEM_SIZE) {\r\n this.showLoadMore = true;\r\n }\r\n }\r\n }\r\n\r\n /** method that accepts an Array of PlanItems and sorts them by isComplete isInProgress and its index */\r\n sortPlanItems(planItems: V1LearningObject[]) {\r\n return planItems.sort((a, b) => {\r\n return this.getSortRank(a) - this.getSortRank(b);\r\n });\r\n }\r\n\r\n getSortRank(item: V1LearningObject) {\r\n if (item.isComplete) {\r\n return 2;\r\n } else if (item.isInProgress) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n dispatch(action: Link, el: HTMLElement) {\r\n (el as any)._onClose();\r\n switch (action.rel) {\r\n case 'ownerChangePlanDate':\r\n this.toggleShowChangeDueDate();\r\n break;\r\n case 'ownerRemovePlan':\r\n this.linksService.postAction(action, true).pipe(take(1)).subscribe(() => this.planRemoved.emit());\r\n break;\r\n }\r\n }\r\n\r\n toggleLoadAll() {\r\n this.showAllItems = !this.showAllItems;\r\n if (this.showAllItems) {\r\n this.planItems = this.planItemsCache;\r\n } else {\r\n this.planItems = arrayHelpers.take(this.planItemsCache, constants.DEFAULT_MEMBER_PLAN_ITEM_SIZE);\r\n }\r\n }\r\n\r\n get loadAllLabel() {\r\n return this.showAllItems ? 'LINK_SHOWLESS' : 'LINK_VIEWALL';\r\n }\r\n\r\n toggleShowChangeDueDate() {\r\n this.showChangeDueDate = !this.showChangeDueDate;\r\n }\r\n\r\n planChanged() {\r\n this.toggleShowChangeDueDate();\r\n this.dueDateChanged.emit();\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {{ action.text | translate }}\r\n \r\n
\r\n
\r\n
\r\n

{{ userLearningPlan.plan.name }}

\r\n {{'TEXT_ASSIGNEDON'| translate}} {{ userLearningPlan.assignDate | localeDate: 'longDate' }}\r\n {{ 'LEARNING_STATUS_DUE' | translate}} {{ userLearningPlan.dueDate | localeDate: 'longDate' }}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
{{ 'TITLE_PLANNOITEMS' | translate }}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ loadAllLabel | translate }}\r\n \r\n \r\n \r\n
\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ApiMainService } from \"@pepconnect/extensions/api-main.service\";\r\nimport { PrintService } from \"@pepconnect/services/print.service\";\r\nimport { take, tap } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TeamReportsService {\r\n\r\n constructor(private api: ApiMainService, private printService: PrintService) { }\r\n\r\n printGroupMemberReport(teamId: string) {\r\n return this.api.get(`teams/${teamId}/members/print`).pipe(take(1), tap(res => this.printService.printRequest(res)));\r\n }\r\n\r\n printGroupMemberActivityReport(teamId: string, teamLearningPlanId?: string) {\r\n const reportUrl = `teams/${teamId}/members/activity/print`;\r\n if (teamLearningPlanId) {\r\n return this.api.get(`${reportUrl}?teamLearningPlanId=${teamLearningPlanId}`).pipe(take(1), tap(res => this.printService.printRequest(res)));\r\n }\r\n else {\r\n return this.api.get(reportUrl).pipe(take(1), tap(res => this.printService.printRequest(res)));\r\n }\r\n }\r\n\r\n printGroupActivityReport(teamId: string) {\r\n return this.api.get(`teams/${teamId}/activity/print`).pipe(take(1), tap(res => this.printService.printRequest(res)));\r\n }\r\n\r\n printCredits(teamId: string, isPdf: boolean) {\r\n return this.api.get(`teams/${teamId}/credits/report/${(isPdf ? 'pdf' : 'excel')}`).pipe(take(1), tap(res => this.printService.printRequest(res)));\r\n }\r\n\r\n printMemberPlan(teamId: string, teamMemberId: string) {\r\n return this.api.get(`teams/${teamId}/members/${teamMemberId}/plan/print`).pipe(take(1), tap(res => this.printService.printRequest(res)));\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { LinkRel } from '@pepconnect/enums/link-rel.enum';\r\nimport { Link } from '@pepconnect/models/general/link.model';\r\nimport { ResponseMessage, UnserializedResponseMessage } from '@pepconnect/models/general/response-message.model';\r\nimport { LinksService } from '@pepconnect/services/links.service';\r\nimport { of, take } from 'rxjs';\r\nimport { TeamMember } from '../models/team-member.model';\r\nimport { TeamMemberHelpersService } from './team-member-helpers.service';\r\nimport { TeamReportsService } from './team-reports.service';\r\nimport { TeamsModalsService } from './teams-modals.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TeamMemberActionsService {\r\n\r\n constructor(private linksService: LinksService, private teamReportService: TeamReportsService, private teamsModalService: TeamsModalsService) { }\r\n membersHelpers = new TeamMemberHelpersService();\r\n\r\n throwForIncorrectArguments(member: TeamMember, teamMember: TeamMember) {\r\n if(this.membersHelpers.guardIsSelfTeamMember(member) || !this.membersHelpers.guardIsSelfTeamMember(teamMember)) {\r\n throw new Error(\"Incorrect team member or member passed to TeamMemberActionsService\");\r\n }\r\n }\r\n\r\n /** Filter out ownerAssignPlan, ownerViewTranscript */\r\n filterNonPEPconnectionsLinks(ownerActions: Link[], teamMember: TeamMember) {\r\n if(!ownerActions) return ownerActions;\r\n return ownerActions?.filter(action => teamMember.team.hasPEPConnections ||\r\n (action.rel != LinkRel.ownerAssignPlan && action.rel != LinkRel.ownerViewTranscript && action.rel != LinkRel.ownerMemberPlanReport));\r\n }\r\n\r\n /** Creates a list of member actions - List of Member and Owner actions are combined after filtering out links not meant to be used inline */\r\n createActionList(member: TeamMember, teamMember: TeamMember) {\r\n this.throwForIncorrectArguments(member, teamMember);\r\n let ownerActions = teamMember.isAdmin ? member?.ownerActions ?? [] : [];\r\n ownerActions = this.filterNonPEPconnectionsLinks(ownerActions, teamMember);\r\n let memberActions = (!teamMember.isAdmin && teamMember.id == member.id) ? member.memberActions : [];\r\n let actions = [...ownerActions, ...memberActions];\r\n return actions;\r\n }\r\n\r\n createPlanMemberActionList(member: TeamMember, teamMember: TeamMember) {\r\n this.throwForIncorrectArguments(member, teamMember);\r\n let ownerActions = teamMember.isAdmin ? member?.selectedPlan?.ownerActions ?? [] : [];\r\n ownerActions = this.filterNonPEPconnectionsLinks(ownerActions, teamMember);\r\n let memberActions = (!teamMember.isAdmin && teamMember.id == member.id) ? member.selectedPlan.memberActions : [];\r\n let actions = [...ownerActions, ...memberActions];\r\n return actions;\r\n }\r\n\r\n /** Dispatches the action based on the rel. Returns an observable that can be checked for a response if a post action happened. */\r\n dispatch(action: Link, member: TeamMember, teamMember: TeamMember, silentActions: boolean) {\r\n this.throwForIncorrectArguments(member, teamMember);\r\n switch (action.rel) {\r\n case LinkRel.page:\r\n this.linksService.gotoPage(action);\r\n break;\r\n case LinkRel.ownerAssignPlan:\r\n case LinkRel.ownerViewTranscript:\r\n this.linksService.gotoLink(action);\r\n break;\r\n case LinkRel.ownerMemberPlanReport:\r\n this.teamReportService.printMemberPlan(teamMember.team.teamID, member.id).pipe(take(1)).subscribe();\r\n break;\r\n case LinkRel.ownerMemberQualPlanReport:\r\n // deprecated\r\n break;\r\n case LinkRel.ownerChangePlanDate:\r\n return this.teamsModalService.definitions.openChangeDueDateModal(member, member.selectedPlan).pipe(take(1));\r\n default:\r\n // this is a xhr action so we have to return a observable to check for success and take appropriate action.\r\n // If silentActions is false, toastr messages will shown\r\n return this.linksService.postAction(action, silentActions).pipe(take(1));\r\n }\r\n return of();\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { TeamMember } from '@pepconnect/features/teams/models/team-member.model';\r\nimport { TeamMemberActionsService } from '@pepconnect/features/teams/services/team-member-actions.service';\r\nimport { TeamsService } from '@pepconnect/features/teams/services/teams.service';\r\nimport { TeamStore } from '@pepconnect/features/teams/teams.store';\r\nimport { V1LearningObject } from '@pepconnect/models/content/learning-object-v1.model';\r\nimport { Link } from '@pepconnect/models/general/link.model';\r\nimport { BasePlanCardComponent } from '@pepconnect/shared/plans-shared/components/base/base-plan-card/base-plan-card.component';\r\nimport { AppState } from '@pepconnect/state/index';\r\nimport { take } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-plan-card',\r\n templateUrl: './plan-card.component.html',\r\n styleUrls: ['./plan-card.component.scss']\r\n})\r\nexport class PlanCardComponent extends BasePlanCardComponent implements OnInit {\r\n\r\n @Input() item: V1LearningObject;\r\n @Input() teamMember: TeamMember;\r\n @Input() showAdditionalDetails: boolean;\r\n @Input() collectionItemWrap: boolean = true;\r\n\r\n action: Link;\r\n hideAccess = false;\r\n\r\n constructor(\r\n private teamMemberActionService: TeamMemberActionsService,\r\n protected store: Store,\r\n private teamStore: TeamStore,\r\n private teamService: TeamsService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.teamMember) {\r\n this.teamStore.$teamMember.pipe(take(1)).subscribe(member => this.teamMember = member);\r\n }\r\n }\r\n\r\n dispatch(action) {\r\n this.teamMemberActionService.dispatch(action, this.teamMember, this.teamMember, true).subscribe((res) => {\r\n if (res) {\r\n this.teamService.fetchMember(this.teamMember.team.teamID, this.teamMember.id).pipe(take(1)).subscribe(member => this.teamStore.setSelectedTeamMember(member));\r\n }\r\n });\r\n }\r\n\r\n}\r\n","\r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n

{{item.longName}}

\r\n
\r\n
\r\n
\r\n {{ 'LABEL_ACTIVITY_TYPE' | translate}} {{ item.type.name | translate}}\r\n
\r\n \r\n
0\" class=\"font-size-xsmall\">\r\n \r\n {{ 'LABEL_ESTIMATED_TIME' | translate}} \r\n
\r\n \r\n
\r\n \r\n {{'LABEL_ESTIMATED_TIME' | translate}} \r\n
\r\n \r\n
\r\n \r\n {{'LABEL_ESTIMATED_TIME' | translate}} \r\n
\r\n
\r\n
\r\n

\r\n
\r\n
\r\n {{'LABEL_OBJECT_COUNTRY_ACCESS' | translate}}  {{item.countryAccess | translate}}\r\n
\r\n
\r\n {{'LABEL_OBJECT_ACCESS' | translate}}  {{item.groupAccess | translate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
{{item.longName}}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { PlanWithCompletionStatus } from '@pepconnect/interfaces/icompletion-status.interface';\r\nimport { LearningPlan } from '@pepconnect/models/plan/learning-plan.model';\r\nimport { UserLearningPlan } from '@pepconnect/models/plan/user-learning-plan.model';\r\nimport { LearningPlanHelpers } from '@pepconnect/shared/plans-shared/services/plan-helpers.service';\r\n\r\n@Component({\r\n selector: 'app-mini-learning-plan-status',\r\n templateUrl: './mini-learning-plan-status.component.html'\r\n})\r\nexport class MiniLearningPlanStatusComponent implements OnInit {\r\n @Input() plan: PlanWithCompletionStatus;\r\n\r\n title: string;\r\n constructor(private planHelpers: LearningPlanHelpers) { }\r\n\r\n ngOnInit(): void {\r\n this.title = this.planHelpers.getPlanName(this.plan);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
{{ title }}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Store } from '@ngrx/store';\r\nimport { UserLearningPlan } from '@pepconnect/models/plan/user-learning-plan.model';\r\nimport { BaseSmartComponent } from '@pepconnect/shared/base/base-smart-component/base-smart.component';\r\nimport { selectUserLocale } from '@pepconnect/state/auth/auth.selector';\r\nimport { AppState } from '@pepconnect/state/index';\r\nimport { takeUntil } from 'rxjs';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-member-plan-assignment-mini',\r\n templateUrl: './member-plan-assignment-mini.component.html',\r\n styleUrls: ['./member-plan-assignment-mini.component.scss']\r\n})\r\nexport class MemberPlanAssignmentMiniComponent extends BaseSmartComponent implements OnInit {\r\n @Input() userLearningPlan: UserLearningPlan;\r\n loading: boolean = false;\r\n\r\n $locale = this.store.select((selectUserLocale));\r\n locale: string;\r\n\r\n constructor(protected store: Store, private router: Router, private location: Location) {\r\n super(store);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setLocale();\r\n }\r\n\r\n setLocale() {\r\n this.$locale.pipe(takeUntil(this.ngUnsubscribe)).subscribe(l => {\r\n this.locale = l.locale;\r\n })\r\n }\r\n\r\n goToPlan(): void {\r\n this.loading = true;\r\n setTimeout(() => this.router.navigate([this.locale, 'groups', 'plan', this.userLearningPlan.teamMemberLearningPlanID]), 500);\r\n this.location.go(`${this.location.path(false)}#member-my-learning-plans`);\r\n }\r\n}\r\n","\r\n \r\n\r\n
\r\n
\r\n
\r\n

{{ userLearningPlan.plan.name }}

\r\n {{ 'LEARNING_STATUS_DUE' | translate}} {{ userLearningPlan.dueDate | localeDate: 'longDate' }}\r\n
\r\n \r\n
\r\n
\r\n","import { Component, Input } from '@angular/core';\r\nimport { CompletionStatus } from '@pepconnect/models/progress/completion-status.model';\r\n\r\n@Component({\r\n selector: 'app-inline-plan-status',\r\n templateUrl: './inline-plan-status.component.html',\r\n styleUrls: ['./inline-plan-status.component.scss'],\r\n})\r\nexport class InlinePlanStatusComponent {\r\n@Input() status: CompletionStatus;\r\n}\r\n","
\r\n
\r\n \r\n
{{'PLAN_MENU_LINK1' | translate}}:
\r\n
\r\n
\r\n \r\n {{\"LEARNING_STATUS_NOTSTARTED\" | translate}}\r\n : {{status?.notStarted}}\r\n
\r\n
\r\n \r\n {{\"LEARNING_STATUS_INCOMPLETE\" | translate}}\r\n : {{status?.inProgress}}\r\n
\r\n
\r\n \r\n {{\"LEARNING_STATUS_COMPLETED\" | translate}}\r\n : {{status?.completed}}\r\n
\r\n
\r\n
\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PlansPieChartComponent } from './components/charts/plans-pie-chart/plans-pie-chart.component';\r\nimport { PlansBarChartComponent } from './components/charts/plans-bar-chart/plans-bar-chart.component';\r\nimport { SharedModule } from '@pepconnect/shared/module';\r\nimport { MemberPlanAssignmentComponent } from './components/team/cards/member-plan-assignment/member-plan-assignment.component';\r\nimport { PlanCardComponent } from './components/self/cards/plan-card/plan-card.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { AgChartsAngularModule } from 'ag-charts-angular';\r\nimport { MemberAssignmentItemComponent } from './components/team/cards/member-plan-assignment/member-assignment-item/member-assignment-item.component';\r\nimport { ChangeDueDateComponent } from './components/team/change-due-date/change-due-date.component';\r\nimport { MiniLearningPlanStatusComponent } from './components/team/cards/mini-learning-plan-status/mini-learning-plan-status.component';\r\nimport { MemberPlanAssignmentMiniComponent } from './components/team/cards/member-plan-assignment-mini/member-plan-assignment-mini.component';\r\nimport { InlinePlanStatusComponent } from './components/status/inline-plan-status/inline-plan-status.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PlansPieChartComponent,\r\n PlansBarChartComponent,\r\n MemberPlanAssignmentComponent,\r\n PlanCardComponent,\r\n MemberAssignmentItemComponent,\r\n ChangeDueDateComponent,\r\n MiniLearningPlanStatusComponent,\r\n MemberPlanAssignmentMiniComponent,\r\n InlinePlanStatusComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n AgChartsAngularModule ,\r\n SharedModule,\r\n TranslateModule.forChild()\r\n ],\r\n exports: [\r\n PlansPieChartComponent,\r\n PlansBarChartComponent,\r\n MemberPlanAssignmentComponent,\r\n PlanCardComponent,\r\n ChangeDueDateComponent,\r\n MiniLearningPlanStatusComponent,\r\n MemberPlanAssignmentMiniComponent,\r\n InlinePlanStatusComponent,\r\n ],\r\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\r\n})\r\nexport class PlansSharedModule { }\r\n","/** needs to be expanded - helps when you need to evaluate what kind of page you're looking at vs checking the route path */\r\nexport enum PageFamily {\r\n None,\r\n Team = 'group',\r\n Plan = 'Plan'\r\n}\r\n\r\nexport enum PageSubFamily {\r\n None,\r\n Matot = 'customertraining',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TeamFile, TeamFileType, TeamLibrary } from '@pepconnect/features/teams/models/team-library.model';\r\nimport { ResponseMessage, UnserializedResponseMessage } from '@pepconnect/models/general/response-message.model';\r\nimport { ApiService } from '@pepconnect/services/api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TeamFileService {\r\n\r\n constructor(private api: ApiService) { }\r\n\r\n getLimits(teamId: string) {\r\n return this.api.get(`teams/${teamId}/files/limits`);\r\n }\r\n\r\n getFileTypes(teamId: string) {\r\n return this.api.get(`teams/${teamId}/files/types`);\r\n }\r\n\r\n update(teamId: string, teamFileGUID: string, teamFile: TeamFile) {\r\n return this.api.post(`teams/${teamId}/files/${teamFileGUID}`, teamFile);\r\n }\r\n\r\n uploadFile(teamId: string, friendlyUrl: string, teamFileType: string, teamFile: File) {\r\n return this.api.postFile(`teams/${teamId}/files/${friendlyUrl}/upload/${teamFileType}`, teamFile);\r\n }\r\n\r\n check(teamId: string, teamFile: TeamFile) {\r\n return this.api.post(`teams/${teamId}/files/check`, teamFile);\r\n }\r\n\r\n delete(teamId: string, friendlyUrl: string) {\r\n return this.api.post(`teams/${teamId}/files/${friendlyUrl}/delete`, {});\r\n }\r\n\r\n fetchTeamFiles(teamId: string) {\r\n return this.api.get(`teams/${teamId}/files`);\r\n }\r\n\r\n fetchTeamFile(teamId: string, friendlyUrl: string) {\r\n return this.api.get(`teams/${teamId}/files/${friendlyUrl}`);\r\n }\r\n\r\n recordTeamFileLaunch(teamId: string, friendlyUrl: string) {\r\n return this.api.post(`teams/${teamId}/files/${friendlyUrl}/launch`, {});\r\n }\r\n}\r\n"],"mappings":"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","names":["__spreadValues","__spreadProps","__yieldStar","__yieldStar","__spreadValues","__spreadProps","_ChartTheme","_BBox","_Matrix","_Node","_Color","_BandScale","_ContinuousScale","_TimeScale","_OrdinalTimeScale","_Group","_Shape","_Text","_CartesianCrossLine","_LogScale","_Axis","_CartesianAxis","_HdpiCanvas","_InteractionManager","_DataController","_SyncManager","_Chart","_Cross","_Diamond","_Plus","_Triangle","_CartesianChart","_AgChartInstanceProxy","_HierarchyChart","_PolarChart","_TopologyChart","_AgCharts","_AgChartsInternal","__spreadValues","_HierarchyNode","__yieldStar","_c0","take","PageFamily","PageSubFamily"],"x_google_ignoreList":[0,1]}