@acorex/charts 21.0.3-next.26 → 21.0.3-next.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bar-chart/index.d.ts +3 -27
- package/donut-chart/index.d.ts +4 -21
- package/fesm2022/acorex-charts-bar-chart.mjs +52 -77
- package/fesm2022/acorex-charts-bar-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-chart-legend.mjs +1 -1
- package/fesm2022/acorex-charts-chart-legend.mjs.map +1 -1
- package/fesm2022/acorex-charts-chart-tooltip.mjs +1 -1
- package/fesm2022/acorex-charts-chart-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-charts-donut-chart.mjs +36 -61
- package/fesm2022/acorex-charts-donut-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-funnel-chart.mjs +6 -8
- package/fesm2022/acorex-charts-funnel-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-gauge-chart.mjs +53 -34
- package/fesm2022/acorex-charts-gauge-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-heatmap-chart.mjs +6 -9
- package/fesm2022/acorex-charts-heatmap-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-hierarchy-chart.mjs +24 -65
- package/fesm2022/acorex-charts-hierarchy-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-line-chart.mjs +31 -98
- package/fesm2022/acorex-charts-line-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts.mjs +65 -1
- package/fesm2022/acorex-charts.mjs.map +1 -1
- package/funnel-chart/index.d.ts +3 -24
- package/gauge-chart/index.d.ts +6 -20
- package/heatmap-chart/index.d.ts +2 -27
- package/hierarchy-chart/index.d.ts +2 -26
- package/index.d.ts +52 -2
- package/line-chart/index.d.ts +2 -37
- package/package.json +5 -5
|
@@ -82,6 +82,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
82
82
|
type: Directive
|
|
83
83
|
}] });
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Renders a centered empty-state message inside a chart container.
|
|
87
|
+
* Clears prior SVG / empty-state nodes; leaves Angular tooltip hosts alone.
|
|
88
|
+
*/
|
|
89
|
+
function renderChartEmptyMessage(d3, container, message) {
|
|
90
|
+
const root = d3.select(container);
|
|
91
|
+
root.selectAll('svg, .ax-chart-empty').remove();
|
|
92
|
+
const card = root.append('div').attr('class', 'ax-chart-empty').append('div').attr('class', 'ax-chart-empty__card');
|
|
93
|
+
card
|
|
94
|
+
.append('div')
|
|
95
|
+
.attr('class', 'ax-chart-empty__icon')
|
|
96
|
+
.html(`<i class="${message.icon} fa-2x" aria-hidden="true"></i>`);
|
|
97
|
+
card.append('div').attr('class', 'ax-chart-empty__title').text(message.title);
|
|
98
|
+
if (message.help) {
|
|
99
|
+
card.append('div').attr('class', 'ax-chart-empty__help').text(message.help);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const AX_CHART_DEFAULT_MESSAGES = {
|
|
104
|
+
noData: 'No data available',
|
|
105
|
+
noDataHelp: 'Please provide data to display the chart',
|
|
106
|
+
allHidden: 'All series are hidden',
|
|
107
|
+
allHiddenHelp: 'Click on legend items to show them',
|
|
108
|
+
noDataIcon: 'fa-light fa-chart-simple',
|
|
109
|
+
allHiddenIcon: 'fa-light fa-eye-slash',
|
|
110
|
+
};
|
|
111
|
+
function mergeChartMessages(defaults = {}, overrides) {
|
|
112
|
+
return {
|
|
113
|
+
...AX_CHART_DEFAULT_MESSAGES,
|
|
114
|
+
...defaults,
|
|
115
|
+
...overrides,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/** Shallow merge options while preserving nested margin/messages defaults. */
|
|
119
|
+
function mergeChartOptions(defaults, options) {
|
|
120
|
+
const opts = (options ?? {});
|
|
121
|
+
const result = { ...defaults, ...opts };
|
|
122
|
+
const defaultRecord = defaults;
|
|
123
|
+
const optionRecord = opts;
|
|
124
|
+
if (defaultRecord.messages || optionRecord.messages) {
|
|
125
|
+
result.messages = mergeChartMessages(defaultRecord.messages, optionRecord.messages);
|
|
126
|
+
}
|
|
127
|
+
if (defaultRecord.margins || optionRecord.margins) {
|
|
128
|
+
result.margins = { ...defaultRecord.margins, ...optionRecord.margins };
|
|
129
|
+
}
|
|
130
|
+
if (defaultRecord.margin || optionRecord.margin) {
|
|
131
|
+
result.margin = { ...defaultRecord.margin, ...optionRecord.margin };
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
|
|
85
136
|
/**
|
|
86
137
|
* Resolves any CSS `<color>` the browser understands — including
|
|
87
138
|
* `rgb(var(--token))`, `hsl(var(--token))`, `color-mix()`, etc. — to a computed
|
|
@@ -211,6 +262,19 @@ function getEasingFunction(d3, option) {
|
|
|
211
262
|
const easing = d3[name];
|
|
212
263
|
return typeof easing === 'function' ? easing : d3.easeCubicOut;
|
|
213
264
|
}
|
|
265
|
+
/** Unique DOM id prefix per chart instance (SVG filters/gradients). */
|
|
266
|
+
function createChartInstanceId(prefix = 'ax-chart') {
|
|
267
|
+
return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Normalizes barWidth: values > 1 are treated as 0–100 percentages (config default 80),
|
|
271
|
+
* values ≤ 1 as fractions.
|
|
272
|
+
*/
|
|
273
|
+
function resolveBarWidthFraction(barWidth, fallbackPercent = 80) {
|
|
274
|
+
const raw = barWidth ?? fallbackPercent;
|
|
275
|
+
const fraction = raw > 1 ? raw / 100 : raw;
|
|
276
|
+
return Math.min(1, Math.max(0.05, fraction));
|
|
277
|
+
}
|
|
214
278
|
|
|
215
279
|
const AX_CHARTS = 'ACOREX_CHARTS';
|
|
216
280
|
|
|
@@ -218,5 +282,5 @@ const AX_CHARTS = 'ACOREX_CHARTS';
|
|
|
218
282
|
* Generated bundle index. Do not edit.
|
|
219
283
|
*/
|
|
220
284
|
|
|
221
|
-
export { AXChartComponent, AX_CHARTS, AX_CHART_COLOR_PALETTE, computeTooltipPosition, formatLargeNumber, getChartColor, getEasingFunction, mapEasingName, resolveCssColorInContext };
|
|
285
|
+
export { AXChartComponent, AX_CHARTS, AX_CHART_COLOR_PALETTE, AX_CHART_DEFAULT_MESSAGES, computeTooltipPosition, createChartInstanceId, formatLargeNumber, getChartColor, getEasingFunction, mapEasingName, mergeChartMessages, mergeChartOptions, renderChartEmptyMessage, resolveBarWidthFraction, resolveCssColorInContext };
|
|
222
286
|
//# sourceMappingURL=acorex-charts.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-charts.mjs","sources":["../tmp-esm2022/lib/chart-colors.js","../tmp-esm2022/lib/chart-component-base.js","../tmp-esm2022/lib/chart-utils.js","../tmp-esm2022/index.js","../tmp-esm2022/acorex-charts.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n// Default color palette for charts\nexport const AX_CHART_COLOR_PALETTE = new InjectionToken('AX_CHART_COLOR_PALETTE', {\n providedIn: 'root',\n factory: () => [\n '#FF6B6B', // Vibrant Red\n '#4ECDC4', // Electric Teal\n '#45B7D1', // Bright Blue\n '#96CEB4', // Fresh Green\n '#FFEEAD', // Bright Yellow\n '#D4A5A5', // Rose Pink\n '#9B59B6', // Rich Purple\n '#3498DB', // Deep Blue\n '#E67E22', // Bright Orange\n '#2ECC71', // Emerald Green\n '#E74C3C', // Cherry Red\n '#1ABC9C', // Turquoise\n '#F1C40F', // Golden Yellow\n '#8E44AD', // Deep Purple\n '#16A085', // Dark Teal\n // --- Extended Colors (new) ---\n '#27AE60', // Forest Green\n '#2980B9', // Strong Blue\n '#F39C12', // Vivid Orange\n '#C0392B', // Dark Red\n '#7D3C98', // Plum Purple\n '#2C3E50', // Midnight Blue\n '#D35400', // Burnt Orange\n '#BDC3C7', // Soft Silver\n '#34495E', // Slate Gray\n '#1F618D', // Royal Blue\n '#58D68D', // Mint Green\n '#5DADE2', // Sky Blue\n '#F1948A', // Soft Coral\n '#A569BD', // Lavender Purple\n '#F8C471', // Warm Gold\n ],\n});\n/**\n * Helper function to get a color from the palette by index\n * @param index The index of the color to get\n * @param palette The color palette to use\n * @returns The color at the specified index\n */\nexport function getChartColor(index, palette) {\n return palette[index % palette.length];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2hhcnRzL3NyYy9saWIvY2hhcnQtY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsRUFDeEI7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixTQUFTLEVBQUUsY0FBYztRQUN6QixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFFLFlBQVk7UUFDdkIsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLFlBQVk7UUFDdkIsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLFlBQVk7UUFFdkIsZ0NBQWdDO1FBQ2hDLFNBQVMsRUFBRSxlQUFlO1FBQzFCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxlQUFlO1FBQzFCLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFFLGVBQWU7UUFDMUIsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixTQUFTLEVBQUUsWUFBWTtLQUN4QjtDQUNGLENBQ0YsQ0FBQztBQUdGOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhLEVBQUUsT0FBaUI7SUFDNUQsT0FBTyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gRGVmYXVsdCBjb2xvciBwYWxldHRlIGZvciBjaGFydHNcbmV4cG9ydCBjb25zdCBBWF9DSEFSVF9DT0xPUl9QQUxFVFRFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZ1tdPihcbiAgJ0FYX0NIQVJUX0NPTE9SX1BBTEVUVEUnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IFtcbiAgICAgICcjRkY2QjZCJywgLy8gVmlicmFudCBSZWRcbiAgICAgICcjNEVDREM0JywgLy8gRWxlY3RyaWMgVGVhbFxuICAgICAgJyM0NUI3RDEnLCAvLyBCcmlnaHQgQmx1ZVxuICAgICAgJyM5NkNFQjQnLCAvLyBGcmVzaCBHcmVlblxuICAgICAgJyNGRkVFQUQnLCAvLyBCcmlnaHQgWWVsbG93XG4gICAgICAnI0Q0QTVBNScsIC8vIFJvc2UgUGlua1xuICAgICAgJyM5QjU5QjYnLCAvLyBSaWNoIFB1cnBsZVxuICAgICAgJyMzNDk4REInLCAvLyBEZWVwIEJsdWVcbiAgICAgICcjRTY3RTIyJywgLy8gQnJpZ2h0IE9yYW5nZVxuICAgICAgJyMyRUNDNzEnLCAvLyBFbWVyYWxkIEdyZWVuXG4gICAgICAnI0U3NEMzQycsIC8vIENoZXJyeSBSZWRcbiAgICAgICcjMUFCQzlDJywgLy8gVHVycXVvaXNlXG4gICAgICAnI0YxQzQwRicsIC8vIEdvbGRlbiBZZWxsb3dcbiAgICAgICcjOEU0NEFEJywgLy8gRGVlcCBQdXJwbGVcbiAgICAgICcjMTZBMDg1JywgLy8gRGFyayBUZWFsXG5cbiAgICAgIC8vIC0tLSBFeHRlbmRlZCBDb2xvcnMgKG5ldykgLS0tXG4gICAgICAnIzI3QUU2MCcsIC8vIEZvcmVzdCBHcmVlblxuICAgICAgJyMyOTgwQjknLCAvLyBTdHJvbmcgQmx1ZVxuICAgICAgJyNGMzlDMTInLCAvLyBWaXZpZCBPcmFuZ2VcbiAgICAgICcjQzAzOTJCJywgLy8gRGFyayBSZWRcbiAgICAgICcjN0QzQzk4JywgLy8gUGx1bSBQdXJwbGVcbiAgICAgICcjMkMzRTUwJywgLy8gTWlkbmlnaHQgQmx1ZVxuICAgICAgJyNEMzU0MDAnLCAvLyBCdXJudCBPcmFuZ2VcbiAgICAgICcjQkRDM0M3JywgLy8gU29mdCBTaWx2ZXJcbiAgICAgICcjMzQ0OTVFJywgLy8gU2xhdGUgR3JheVxuICAgICAgJyMxRjYxOEQnLCAvLyBSb3lhbCBCbHVlXG4gICAgICAnIzU4RDY4RCcsIC8vIE1pbnQgR3JlZW5cbiAgICAgICcjNURBREUyJywgLy8gU2t5IEJsdWVcbiAgICAgICcjRjE5NDhBJywgLy8gU29mdCBDb3JhbFxuICAgICAgJyNBNTY5QkQnLCAvLyBMYXZlbmRlciBQdXJwbGVcbiAgICAgICcjRjhDNDcxJywgLy8gV2FybSBHb2xkXG4gICAgXSxcbiAgfVxuKTtcblxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgYSBjb2xvciBmcm9tIHRoZSBwYWxldHRlIGJ5IGluZGV4XG4gKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBjb2xvciB0byBnZXRcbiAqIEBwYXJhbSBwYWxldHRlIFRoZSBjb2xvciBwYWxldHRlIHRvIHVzZVxuICogQHJldHVybnMgVGhlIGNvbG9yIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0Q29sb3IoaW5kZXg6IG51bWJlciwgcGFsZXR0ZTogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gcGFsZXR0ZVtpbmRleCAlIHBhbGV0dGUubGVuZ3RoXTtcbn1cbiJdfQ==","import { afterNextRender, Directive, ElementRef, inject, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Base component class for all chart components\n * Copied from @acorex/cdk/common NXComponent to remove external dependency\n */\nexport class AXChartComponent {\n #elementRef = inject(ElementRef);\n #isRendered = signal(false, ...(ngDevMode ? [{ debugName: \"#isRendered\" }] : []));\n isRendered = this.#isRendered.asReadonly();\n #afterNextRender = afterNextRender(() => {\n if (!this.isRendered()) {\n this.nativeElement['__axContext__'] = this;\n this.#isRendered.set(true);\n }\n });\n /**\n * Gets the native HTML element of the component\n */\n get nativeElement() {\n return this.#elementRef.nativeElement;\n }\n /**\n * Gets the host HTML element of the component (alias for nativeElement)\n * @returns T - The native DOM element associated with this component\n */\n getHostElement() {\n return this.#elementRef.nativeElement;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXChartComponent, isStandalone: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXChartComponent, decorators: [{\n type: Directive\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29tcG9uZW50LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC1jb21wb25lbnQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFdkY7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixnQkFBZ0I7SUFDcEMsV0FBVyxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLHVEQUFDLENBQUM7SUFFbEIsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFckQsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUg7O09BRUc7SUFDSCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBa0IsQ0FBQztJQUM3QyxDQUFDO3VHQTFCbUIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRHJDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBCYXNlIGNvbXBvbmVudCBjbGFzcyBmb3IgYWxsIGNoYXJ0IGNvbXBvbmVudHNcbiAqIENvcGllZCBmcm9tIEBhY29yZXgvY2RrL2NvbW1vbiBOWENvbXBvbmVudCB0byByZW1vdmUgZXh0ZXJuYWwgZGVwZW5kZW5jeVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWENoYXJ0Q29tcG9uZW50IHtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjaXNSZW5kZXJlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIGlzUmVuZGVyZWQgPSB0aGlzLiNpc1JlbmRlcmVkLmFzUmVhZG9ubHkoKTtcblxuICAjYWZ0ZXJOZXh0UmVuZGVyID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuaXNSZW5kZXJlZCgpKSB7XG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnRbJ19fYXhDb250ZXh0X18nXSA9IHRoaXM7XG4gICAgICB0aGlzLiNpc1JlbmRlcmVkLnNldCh0cnVlKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBuYXRpdmUgSFRNTCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBob3N0IEhUTUwgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50IChhbGlhcyBmb3IgbmF0aXZlRWxlbWVudClcbiAgICogQHJldHVybnMgVCAtIFRoZSBuYXRpdmUgRE9NIGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0SG9zdEVsZW1lbnQ8VCA9IEhUTUxFbGVtZW50PigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIFQ7XG4gIH1cbn1cbiJdfQ==","/**\n * Resolves any CSS `<color>` the browser understands — including\n * `rgb(var(--token))`, `hsl(var(--token))`, `color-mix()`, etc. — to a computed\n * `rgb()` / `rgba()` string, using the cascade from `scopeElement` (e.g. the chart\n * container) so design tokens on ancestors apply.\n */\nexport function resolveCssColorInContext(scopeElement, cssColor) {\n if (typeof window === 'undefined' || typeof document === 'undefined' || !getComputedStyle) {\n return cssColor;\n }\n const input = cssColor?.trim();\n if (!input) {\n return cssColor;\n }\n const probe = document.createElement('span');\n probe.style.cssText =\n 'position:absolute;left:-9999px;top:-9999px;visibility:hidden;pointer-events:none;';\n probe.style.color = input;\n scopeElement.appendChild(probe);\n void probe.offsetHeight;\n const resolved = getComputedStyle(probe).color;\n probe.remove();\n return resolved || cssColor;\n}\n/**\n * Compute edge-aware tooltip position with intelligent placement,\n * considering available space in all directions and preventing overflow.\n */\nexport function computeTooltipPosition(containerRect, tooltipRect, clientX, clientY, gap) {\n const cursorX = clientX - containerRect.left;\n const cursorY = clientY - containerRect.top;\n if (!tooltipRect) {\n return {\n x: Math.min(cursorX + gap, containerRect.width - gap),\n y: Math.max(gap, Math.min(cursorY, containerRect.height - gap)),\n };\n }\n // Calculate available space in each direction\n const spaceRight = containerRect.width - cursorX;\n const spaceLeft = cursorX;\n const spaceBelow = containerRect.height - cursorY;\n const spaceAbove = cursorY;\n // Determine best horizontal position\n let x;\n if (spaceRight >= tooltipRect.width + gap) {\n // Position to the right of cursor\n x = cursorX + gap;\n }\n else if (spaceLeft >= tooltipRect.width + gap) {\n // Position to the left of cursor\n x = cursorX - tooltipRect.width - gap;\n }\n else {\n // Center horizontally if neither side has enough space\n x = Math.max(gap, Math.min((containerRect.width - tooltipRect.width) / 2, containerRect.width - tooltipRect.width - gap));\n }\n // Determine best vertical position\n let y;\n if (spaceBelow >= tooltipRect.height + gap) {\n // Position below cursor\n y = cursorY + gap;\n }\n else if (spaceAbove >= tooltipRect.height + gap) {\n // Position above cursor\n y = cursorY - tooltipRect.height - gap;\n }\n else {\n // Center vertically if neither direction has enough space\n y = Math.max(gap, Math.min((containerRect.height - tooltipRect.height) / 2, containerRect.height - tooltipRect.height - gap));\n }\n // Ensure tooltip stays within container bounds\n x = Math.max(gap, Math.min(x, containerRect.width - tooltipRect.width - gap));\n y = Math.max(gap, Math.min(y, containerRect.height - tooltipRect.height - gap));\n return { x, y };\n}\nexport function mapEasingName(option) {\n switch (option) {\n case 'linear':\n return 'easeLinear';\n case 'ease':\n return 'easePolyInOut';\n case 'ease-in':\n return 'easePolyIn';\n case 'ease-out':\n return 'easePolyOut';\n case 'ease-in-out':\n return 'easePolyInOut';\n case 'cubic':\n return 'easeCubic';\n case 'cubic-in':\n return 'easeCubicIn';\n case 'cubic-out':\n return 'easeCubicOut';\n case 'cubic-in-out':\n return 'easeCubicInOut';\n default:\n return 'easeCubicOut';\n }\n}\n/**\n * Formats large numbers with abbreviations (K, M, B, T)\n */\nexport function formatLargeNumber(value) {\n if (value === 0)\n return '0';\n const absValue = Math.abs(value);\n const sign = value < 0 ? '-' : '';\n if (absValue >= 1e12) {\n return `${sign}${(absValue / 1e12).toFixed(1)}T`;\n }\n if (absValue >= 1e9) {\n return `${sign}${(absValue / 1e9).toFixed(1)}B`;\n }\n if (absValue >= 1e6) {\n return `${sign}${(absValue / 1e6).toFixed(1)}M`;\n }\n if (absValue >= 1e3) {\n return `${sign}${(absValue / 1e3).toFixed(1)}K`;\n }\n return value.toLocaleString();\n}\n/**\n * Returns a D3 easing function for the provided option.\n */\nexport function getEasingFunction(d3, option) {\n const name = mapEasingName(option);\n const easing = d3[name];\n return typeof easing === 'function' ? easing : d3.easeCubicOut;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxZQUF5QixFQUFFLFFBQWdCO0lBQ2xGLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU87UUFDakIsbUZBQW1GLENBQUM7SUFDdEYsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsS0FBSyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFZixPQUFPLFFBQVEsSUFBSSxRQUFRLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsYUFBc0IsRUFDdEIsV0FBMkIsRUFDM0IsT0FBZSxFQUNmLE9BQWUsRUFDZixHQUFXO0lBRVgsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLGFBQWEs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QVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxRQUFRLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEIsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxRQUFRLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEIsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQXVCLEVBQUUsTUFBZTtJQUN4RSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsTUFBTSxNQUFNLEdBQUksRUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sT0FBTyxNQUFNLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLEVBQVUsQ0FBQyxZQUFZLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFRvb2x0aXBQb3NpdGlvbiA9IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuLyoqXG4gKiBSZXNvbHZlcyBhbnkgQ1NTIGA8Y29sb3I+YCB0aGUgYnJvd3NlciB1bmRlcnN0YW5kcyDigJQgaW5jbHVkaW5nXG4gKiBgcmdiKHZhcigtLXRva2VuKSlgLCBgaHNsKHZhcigtLXRva2VuKSlgLCBgY29sb3ItbWl4KClgLCBldGMuIOKAlCB0byBhIGNvbXB1dGVkXG4gKiBgcmdiKClgIC8gYHJnYmEoKWAgc3RyaW5nLCB1c2luZyB0aGUgY2FzY2FkZSBmcm9tIGBzY29wZUVsZW1lbnRgIChlLmcuIHRoZSBjaGFydFxuICogY29udGFpbmVyKSBzbyBkZXNpZ24gdG9rZW5zIG9uIGFuY2VzdG9ycyBhcHBseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDc3NDb2xvckluQ29udGV4dChzY29wZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjc3NDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWdldENvbXB1dGVkU3R5bGUpIHtcbiAgICByZXR1cm4gY3NzQ29sb3I7XG4gIH1cbiAgY29uc3QgaW5wdXQgPSBjc3NDb2xvcj8udHJpbSgpO1xuICBpZiAoIWlucHV0KSB7XG4gICAgcmV0dXJuIGNzc0NvbG9yO1xuICB9XG5cbiAgY29uc3QgcHJvYmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gIHByb2JlLnN0eWxlLmNzc1RleHQgPVxuICAgICdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi05OTk5cHg7dG9wOi05OTk5cHg7dmlzaWJpbGl0eTpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZTsnO1xuICBwcm9iZS5zdHlsZS5jb2xvciA9IGlucHV0O1xuICBzY29wZUVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvYmUpO1xuICB2b2lkIHByb2JlLm9mZnNldEhlaWdodDtcbiAgY29uc3QgcmVzb2x2ZWQgPSBnZXRDb21wdXRlZFN0eWxlKHByb2JlKS5jb2xvcjtcbiAgcHJvYmUucmVtb3ZlKCk7XG5cbiAgcmV0dXJuIHJlc29sdmVkIHx8IGNzc0NvbG9yO1xufVxuXG4vKipcbiAqIENvbXB1dGUgZWRnZS1hd2FyZSB0b29sdGlwIHBvc2l0aW9uIHdpdGggaW50ZWxsaWdlbnQgcGxhY2VtZW50LFxuICogY29uc2lkZXJpbmcgYXZhaWxhYmxlIHNwYWNlIGluIGFsbCBkaXJlY3Rpb25zIGFuZCBwcmV2ZW50aW5nIG92ZXJmbG93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVRvb2x0aXBQb3NpdGlvbihcbiAgY29udGFpbmVyUmVjdDogRE9NUmVjdCxcbiAgdG9vbHRpcFJlY3Q6IERPTVJlY3QgfCBudWxsLFxuICBjbGllbnRYOiBudW1iZXIsXG4gIGNsaWVudFk6IG51bWJlcixcbiAgZ2FwOiBudW1iZXIsXG4pOiBUb29sdGlwUG9zaXRpb24ge1xuICBjb25zdCBjdXJzb3JYID0gY2xpZW50WCAtIGNvbnRhaW5lclJlY3QubGVmdDtcbiAgY29uc3QgY3Vyc29yWSA9IGNsaWVudFkgLSBjb250YWluZXJSZWN0LnRvcDtcblxuICBpZiAoIXRvb2x0aXBSZWN0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKGN1cnNvclggKyBnYXAsIGNvbnRhaW5lclJlY3Qud2lkdGggLSBnYXApLFxuICAgICAgeTogTWF0aC5tYXgoZ2FwLCBNYXRoLm1pbihjdXJzb3JZLCBjb250YWluZXJSZWN0LmhlaWdodCAtIGdhcCkpLFxuICAgIH07XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgYXZhaWxhYmxlIHNwYWNlIGluIGVhY2ggZGlyZWN0aW9uXG4gIGNvbnN0IHNwYWNlUmlnaHQgPSBjb250YWluZXJSZWN0LndpZHRoIC0gY3Vyc29yWDtcbiAgY29uc3Qgc3BhY2VMZWZ0ID0gY3Vyc29yWDtcbiAgY29uc3Qgc3BhY2VCZWxvdyA9IGNvbnRhaW5lclJlY3QuaGVpZ2h0IC0gY3Vyc29yWTtcbiAgY29uc3Qgc3BhY2VBYm92ZSA9IGN1cnNvclk7XG5cbiAgLy8gRGV0ZXJtaW5lIGJlc3QgaG9yaXpvbnRhbCBwb3NpdGlvblxuICBsZXQgeDogbnVtYmVyO1xuICBpZiAoc3BhY2VSaWdodCA+PSB0b29sdGlwUmVjdC53aWR0aCArIGdhcCkge1xuICAgIC8vIFBvc2l0aW9uIHRvIHRoZSByaWdodCBvZiBjdXJzb3JcbiAgICB4ID0gY3Vyc29yWCArIGdhcDtcbiAgfSBlbHNlIGlmIChzcGFjZUxlZnQgPj0gdG9vbHRpcFJlY3Qud2lkdGggKyBnYXApIHtcbiAgICAvLyBQb3NpdGlvbiB0byB0aGUgbGVmdCBvZiBjdXJzb3JcbiAgICB4ID0gY3Vyc29yWCAtIHRvb2x0aXBSZWN0LndpZHRoIC0gZ2FwO1xuICB9IGVsc2Uge1xuICAgIC8vIENlbnRlciBob3Jpem9udGFsbHkgaWYgbmVpdGhlciBzaWRlIGhhcyBlbm91Z2ggc3BhY2VcbiAgICB4ID0gTWF0aC5tYXgoXG4gICAgICBnYXAsXG4gICAgICBNYXRoLm1pbigoY29udGFpbmVyUmVjdC53aWR0aCAtIHRvb2x0aXBSZWN0LndpZHRoKSAvIDIsIGNvbnRhaW5lclJlY3Qud2lkdGggLSB0b29sdGlwUmVjdC53aWR0aCAtIGdhcCksXG4gICAgKTtcbiAgfVxuXG4gIC8vIERldGVybWluZSBiZXN0IHZlcnRpY2FsIHBvc2l0aW9uXG4gIGxldCB5OiBudW1iZXI7XG4gIGlmIChzcGFjZUJlbG93ID49IHRvb2x0aXBSZWN0LmhlaWdodCArIGdhcCkge1xuICAgIC8vIFBvc2l0aW9uIGJlbG93IGN1cnNvclxuICAgIHkgPSBjdXJzb3JZICsgZ2FwO1xuICB9IGVsc2UgaWYgKHNwYWNlQWJvdmUgPj0gdG9vbHRpcFJlY3QuaGVpZ2h0ICsgZ2FwKSB7XG4gICAgLy8gUG9zaXRpb24gYWJvdmUgY3Vyc29yXG4gICAgeSA9IGN1cnNvclkgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSBnYXA7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ2VudGVyIHZlcnRpY2FsbHkgaWYgbmVpdGhlciBkaXJlY3Rpb24gaGFzIGVub3VnaCBzcGFjZVxuICAgIHkgPSBNYXRoLm1heChcbiAgICAgIGdhcCxcbiAgICAgIE1hdGgubWluKChjb250YWluZXJSZWN0LmhlaWdodCAtIHRvb2x0aXBSZWN0LmhlaWdodCkgLyAyLCBjb250YWluZXJSZWN0LmhlaWdodCAtIHRvb2x0aXBSZWN0LmhlaWdodCAtIGdhcCksXG4gICAgKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0b29sdGlwIHN0YXlzIHdpdGhpbiBjb250YWluZXIgYm91bmRzXG4gIHggPSBNYXRoLm1heChnYXAsIE1hdGgubWluKHgsIGNvbnRhaW5lclJlY3Qud2lkdGggLSB0b29sdGlwUmVjdC53aWR0aCAtIGdhcCkpO1xuICB5ID0gTWF0aC5tYXgoZ2FwLCBNYXRoLm1pbih5LCBjb250YWluZXJSZWN0LmhlaWdodCAtIHRvb2x0aXBSZWN0LmhlaWdodCAtIGdhcCkpO1xuXG4gIHJldHVybiB7IHgsIHkgfTtcbn1cblxuLyoqXG4gKiBNYXAgZWFzaW5nIG9wdGlvbiB0byBkMyBlYXNpbmcgZnVuY3Rpb24gbmFtZSB0aGF0IGNhbGxlcnMgY2FuIGxvb2t1cCBvbiBkMy5cbiAqIEtlZXBzIG1hcHBpbmcgY29uc2lzdGVudCBhY3Jvc3MgY2hhcnRzLlxuICovXG5leHBvcnQgdHlwZSBEM0Vhc2luZ05hbWUgPVxuICB8ICdlYXNlTGluZWFyJ1xuICB8ICdlYXNlUG9seUluT3V0J1xuICB8ICdlYXNlUG9seUluJ1xuICB8ICdlYXNlUG9seU91dCdcbiAgfCAnZWFzZUN1YmljJ1xuICB8ICdlYXNlQ3ViaWNJbidcbiAgfCAnZWFzZUN1YmljT3V0J1xuICB8ICdlYXNlQ3ViaWNJbk91dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBFYXNpbmdOYW1lKG9wdGlvbj86IHN0cmluZyk6IEQzRWFzaW5nTmFtZSB7XG4gIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgY2FzZSAnbGluZWFyJzpcbiAgICAgIHJldHVybiAnZWFzZUxpbmVhcic7XG4gICAgY2FzZSAnZWFzZSc6XG4gICAgICByZXR1cm4gJ2Vhc2VQb2x5SW5PdXQnO1xuICAgIGNhc2UgJ2Vhc2UtaW4nOlxuICAgICAgcmV0dXJuICdlYXNlUG9seUluJztcbiAgICBjYXNlICdlYXNlLW91dCc6XG4gICAgICByZXR1cm4gJ2Vhc2VQb2x5T3V0JztcbiAgICBjYXNlICdlYXNlLWluLW91dCc6XG4gICAgICByZXR1cm4gJ2Vhc2VQb2x5SW5PdXQnO1xuICAgIGNhc2UgJ2N1YmljJzpcbiAgICAgIHJldHVybiAnZWFzZUN1YmljJztcbiAgICBjYXNlICdjdWJpYy1pbic6XG4gICAgICByZXR1cm4gJ2Vhc2VDdWJpY0luJztcbiAgICBjYXNlICdjdWJpYy1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlQ3ViaWNPdXQnO1xuICAgIGNhc2UgJ2N1YmljLWluLW91dCc6XG4gICAgICByZXR1cm4gJ2Vhc2VDdWJpY0luT3V0JztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdlYXNlQ3ViaWNPdXQnO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBsYXJnZSBudW1iZXJzIHdpdGggYWJicmV2aWF0aW9ucyAoSywgTSwgQiwgVClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExhcmdlTnVtYmVyKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IDApIHJldHVybiAnMCc7XG5cbiAgY29uc3QgYWJzVmFsdWUgPSBNYXRoLmFicyh2YWx1ZSk7XG4gIGNvbnN0IHNpZ24gPSB2YWx1ZSA8IDAgPyAnLScgOiAnJztcblxuICBpZiAoYWJzVmFsdWUgPj0gMWUxMikge1xuICAgIHJldHVybiBgJHtzaWdufSR7KGFic1ZhbHVlIC8gMWUxMikudG9GaXhlZCgxKX1UYDtcbiAgfVxuICBpZiAoYWJzVmFsdWUgPj0gMWU5KSB7XG4gICAgcmV0dXJuIGAke3NpZ259JHsoYWJzVmFsdWUgLyAxZTkpLnRvRml4ZWQoMSl9QmA7XG4gIH1cbiAgaWYgKGFic1ZhbHVlID49IDFlNikge1xuICAgIHJldHVybiBgJHtzaWdufSR7KGFic1ZhbHVlIC8gMWU2KS50b0ZpeGVkKDEpfU1gO1xuICB9XG4gIGlmIChhYnNWYWx1ZSA+PSAxZTMpIHtcbiAgICByZXR1cm4gYCR7c2lnbn0keyhhYnNWYWx1ZSAvIDFlMykudG9GaXhlZCgxKX1LYDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS50b0xvY2FsZVN0cmluZygpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBEMyBlYXNpbmcgZnVuY3Rpb24gZm9yIHRoZSBwcm92aWRlZCBvcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFYXNpbmdGdW5jdGlvbihkMzogdHlwZW9mIGltcG9ydCgnZDMnKSwgb3B0aW9uPzogc3RyaW5nKTogKHQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbmFtZSA9IG1hcEVhc2luZ05hbWUob3B0aW9uKTtcbiAgY29uc3QgZWFzaW5nID0gKGQzIGFzIGFueSlbbmFtZV07XG4gIHJldHVybiB0eXBlb2YgZWFzaW5nID09PSAnZnVuY3Rpb24nID8gZWFzaW5nIDogKGQzIGFzIGFueSkuZWFzZUN1YmljT3V0O1xufVxuIl19","export const AX_CHARTS = 'ACOREX_CHARTS';\nexport * from './lib/chart-base.interface';\nexport * from './lib/chart-colors';\nexport * from './lib/chart-component-base';\nexport * from './lib/chart-types';\nexport * from './lib/chart-utils';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYX0NIQVJUUyA9ICdBQ09SRVhfQ0hBUlRTJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0LWJhc2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0LWNvbG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC1jb21wb25lbnQtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC11dGlscyc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNoYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NoYXJ0cy9zcmMvYWNvcmV4LWNoYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-charts.mjs","sources":["../tmp-esm2022/lib/chart-colors.js","../tmp-esm2022/lib/chart-component-base.js","../tmp-esm2022/lib/chart-empty-state.js","../tmp-esm2022/lib/chart-messages.js","../tmp-esm2022/lib/chart-utils.js","../tmp-esm2022/index.js","../tmp-esm2022/acorex-charts.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n// Default color palette for charts\nexport const AX_CHART_COLOR_PALETTE = new InjectionToken('AX_CHART_COLOR_PALETTE', {\n providedIn: 'root',\n factory: () => [\n '#FF6B6B', // Vibrant Red\n '#4ECDC4', // Electric Teal\n '#45B7D1', // Bright Blue\n '#96CEB4', // Fresh Green\n '#FFEEAD', // Bright Yellow\n '#D4A5A5', // Rose Pink\n '#9B59B6', // Rich Purple\n '#3498DB', // Deep Blue\n '#E67E22', // Bright Orange\n '#2ECC71', // Emerald Green\n '#E74C3C', // Cherry Red\n '#1ABC9C', // Turquoise\n '#F1C40F', // Golden Yellow\n '#8E44AD', // Deep Purple\n '#16A085', // Dark Teal\n // --- Extended Colors (new) ---\n '#27AE60', // Forest Green\n '#2980B9', // Strong Blue\n '#F39C12', // Vivid Orange\n '#C0392B', // Dark Red\n '#7D3C98', // Plum Purple\n '#2C3E50', // Midnight Blue\n '#D35400', // Burnt Orange\n '#BDC3C7', // Soft Silver\n '#34495E', // Slate Gray\n '#1F618D', // Royal Blue\n '#58D68D', // Mint Green\n '#5DADE2', // Sky Blue\n '#F1948A', // Soft Coral\n '#A569BD', // Lavender Purple\n '#F8C471', // Warm Gold\n ],\n});\n/**\n * Helper function to get a color from the palette by index\n * @param index The index of the color to get\n * @param palette The color palette to use\n * @returns The color at the specified index\n */\nexport function getChartColor(index, palette) {\n return palette[index % palette.length];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2hhcnRzL3NyYy9saWIvY2hhcnQtY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsRUFDeEI7SUFDRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixTQUFTLEVBQUUsY0FBYztRQUN6QixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFFLFlBQVk7UUFDdkIsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLFlBQVk7UUFDdkIsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixTQUFTLEVBQUUsZ0JBQWdCO1FBQzNCLFNBQVMsRUFBRSxhQUFhO1FBQ3hCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLFlBQVk7UUFFdkIsZ0NBQWdDO1FBQ2hDLFNBQVMsRUFBRSxlQUFlO1FBQzFCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxlQUFlO1FBQzFCLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFNBQVMsRUFBRSxnQkFBZ0I7UUFDM0IsU0FBUyxFQUFFLGVBQWU7UUFDMUIsU0FBUyxFQUFFLGNBQWM7UUFDekIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLGFBQWE7UUFDeEIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixTQUFTLEVBQUUsWUFBWTtLQUN4QjtDQUNGLENBQ0YsQ0FBQztBQUdGOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhLEVBQUUsT0FBaUI7SUFDNUQsT0FBTyxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gRGVmYXVsdCBjb2xvciBwYWxldHRlIGZvciBjaGFydHNcbmV4cG9ydCBjb25zdCBBWF9DSEFSVF9DT0xPUl9QQUxFVFRFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZ1tdPihcbiAgJ0FYX0NIQVJUX0NPTE9SX1BBTEVUVEUnLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IFtcbiAgICAgICcjRkY2QjZCJywgLy8gVmlicmFudCBSZWRcbiAgICAgICcjNEVDREM0JywgLy8gRWxlY3RyaWMgVGVhbFxuICAgICAgJyM0NUI3RDEnLCAvLyBCcmlnaHQgQmx1ZVxuICAgICAgJyM5NkNFQjQnLCAvLyBGcmVzaCBHcmVlblxuICAgICAgJyNGRkVFQUQnLCAvLyBCcmlnaHQgWWVsbG93XG4gICAgICAnI0Q0QTVBNScsIC8vIFJvc2UgUGlua1xuICAgICAgJyM5QjU5QjYnLCAvLyBSaWNoIFB1cnBsZVxuICAgICAgJyMzNDk4REInLCAvLyBEZWVwIEJsdWVcbiAgICAgICcjRTY3RTIyJywgLy8gQnJpZ2h0IE9yYW5nZVxuICAgICAgJyMyRUNDNzEnLCAvLyBFbWVyYWxkIEdyZWVuXG4gICAgICAnI0U3NEMzQycsIC8vIENoZXJyeSBSZWRcbiAgICAgICcjMUFCQzlDJywgLy8gVHVycXVvaXNlXG4gICAgICAnI0YxQzQwRicsIC8vIEdvbGRlbiBZZWxsb3dcbiAgICAgICcjOEU0NEFEJywgLy8gRGVlcCBQdXJwbGVcbiAgICAgICcjMTZBMDg1JywgLy8gRGFyayBUZWFsXG5cbiAgICAgIC8vIC0tLSBFeHRlbmRlZCBDb2xvcnMgKG5ldykgLS0tXG4gICAgICAnIzI3QUU2MCcsIC8vIEZvcmVzdCBHcmVlblxuICAgICAgJyMyOTgwQjknLCAvLyBTdHJvbmcgQmx1ZVxuICAgICAgJyNGMzlDMTInLCAvLyBWaXZpZCBPcmFuZ2VcbiAgICAgICcjQzAzOTJCJywgLy8gRGFyayBSZWRcbiAgICAgICcjN0QzQzk4JywgLy8gUGx1bSBQdXJwbGVcbiAgICAgICcjMkMzRTUwJywgLy8gTWlkbmlnaHQgQmx1ZVxuICAgICAgJyNEMzU0MDAnLCAvLyBCdXJudCBPcmFuZ2VcbiAgICAgICcjQkRDM0M3JywgLy8gU29mdCBTaWx2ZXJcbiAgICAgICcjMzQ0OTVFJywgLy8gU2xhdGUgR3JheVxuICAgICAgJyMxRjYxOEQnLCAvLyBSb3lhbCBCbHVlXG4gICAgICAnIzU4RDY4RCcsIC8vIE1pbnQgR3JlZW5cbiAgICAgICcjNURBREUyJywgLy8gU2t5IEJsdWVcbiAgICAgICcjRjE5NDhBJywgLy8gU29mdCBDb3JhbFxuICAgICAgJyNBNTY5QkQnLCAvLyBMYXZlbmRlciBQdXJwbGVcbiAgICAgICcjRjhDNDcxJywgLy8gV2FybSBHb2xkXG4gICAgXSxcbiAgfVxuKTtcblxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgYSBjb2xvciBmcm9tIHRoZSBwYWxldHRlIGJ5IGluZGV4XG4gKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBjb2xvciB0byBnZXRcbiAqIEBwYXJhbSBwYWxldHRlIFRoZSBjb2xvciBwYWxldHRlIHRvIHVzZVxuICogQHJldHVybnMgVGhlIGNvbG9yIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0Q29sb3IoaW5kZXg6IG51bWJlciwgcGFsZXR0ZTogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gcGFsZXR0ZVtpbmRleCAlIHBhbGV0dGUubGVuZ3RoXTtcbn1cbiJdfQ==","import { afterNextRender, Directive, ElementRef, inject, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Base component class for all chart components\n * Copied from @acorex/cdk/common NXComponent to remove external dependency\n */\nexport class AXChartComponent {\n #elementRef = inject(ElementRef);\n #isRendered = signal(false, ...(ngDevMode ? [{ debugName: \"#isRendered\" }] : []));\n isRendered = this.#isRendered.asReadonly();\n #afterNextRender = afterNextRender(() => {\n if (!this.isRendered()) {\n this.nativeElement['__axContext__'] = this;\n this.#isRendered.set(true);\n }\n });\n /**\n * Gets the native HTML element of the component\n */\n get nativeElement() {\n return this.#elementRef.nativeElement;\n }\n /**\n * Gets the host HTML element of the component (alias for nativeElement)\n * @returns T - The native DOM element associated with this component\n */\n getHostElement() {\n return this.#elementRef.nativeElement;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.3\", type: AXChartComponent, isStandalone: true, ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXChartComponent, decorators: [{\n type: Directive\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtY29tcG9uZW50LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC1jb21wb25lbnQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFdkY7OztHQUdHO0FBRUgsTUFBTSxPQUFnQixnQkFBZ0I7SUFDcEMsV0FBVyxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLHVEQUFDLENBQUM7SUFFbEIsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFckQsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUg7O09BRUc7SUFDSCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBa0IsQ0FBQztJQUM3QyxDQUFDO3VHQTFCbUIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRHJDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBCYXNlIGNvbXBvbmVudCBjbGFzcyBmb3IgYWxsIGNoYXJ0IGNvbXBvbmVudHNcbiAqIENvcGllZCBmcm9tIEBhY29yZXgvY2RrL2NvbW1vbiBOWENvbXBvbmVudCB0byByZW1vdmUgZXh0ZXJuYWwgZGVwZW5kZW5jeVxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWENoYXJ0Q29tcG9uZW50IHtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjaXNSZW5kZXJlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIGlzUmVuZGVyZWQgPSB0aGlzLiNpc1JlbmRlcmVkLmFzUmVhZG9ubHkoKTtcblxuICAjYWZ0ZXJOZXh0UmVuZGVyID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuaXNSZW5kZXJlZCgpKSB7XG4gICAgICB0aGlzLm5hdGl2ZUVsZW1lbnRbJ19fYXhDb250ZXh0X18nXSA9IHRoaXM7XG4gICAgICB0aGlzLiNpc1JlbmRlcmVkLnNldCh0cnVlKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBuYXRpdmUgSFRNTCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBob3N0IEhUTUwgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50IChhbGlhcyBmb3IgbmF0aXZlRWxlbWVudClcbiAgICogQHJldHVybnMgVCAtIFRoZSBuYXRpdmUgRE9NIGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0SG9zdEVsZW1lbnQ8VCA9IEhUTUxFbGVtZW50PigpOiBUIHtcbiAgICByZXR1cm4gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIFQ7XG4gIH1cbn1cbiJdfQ==","/**\n * Renders a centered empty-state message inside a chart container.\n * Clears prior SVG / empty-state nodes; leaves Angular tooltip hosts alone.\n */\nexport function renderChartEmptyMessage(d3, container, message) {\n const root = d3.select(container);\n root.selectAll('svg, .ax-chart-empty').remove();\n const card = root.append('div').attr('class', 'ax-chart-empty').append('div').attr('class', 'ax-chart-empty__card');\n card\n .append('div')\n .attr('class', 'ax-chart-empty__icon')\n .html(`<i class=\"${message.icon} fa-2x\" aria-hidden=\"true\"></i>`);\n card.append('div').attr('class', 'ax-chart-empty__title').text(message.title);\n if (message.help) {\n card.append('div').attr('class', 'ax-chart-empty__help').text(message.help);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtZW1wdHktc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC1lbXB0eS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLEVBQXVELEVBQ3ZELFNBQXNCLEVBQ3RCLE9BQW1DO0lBRW5DLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBRWhELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFFcEgsSUFBSTtTQUNELE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDYixJQUFJLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDO1NBQ3JDLElBQUksQ0FBQyxhQUFhLE9BQU8sQ0FBQyxJQUFJLGlDQUFpQyxDQUFDLENBQUM7SUFFcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5RSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWENoYXJ0RW1wdHlNZXNzYWdlQ29udGVudCB7XG4gIGljb246IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgY2VudGVyZWQgZW1wdHktc3RhdGUgbWVzc2FnZSBpbnNpZGUgYSBjaGFydCBjb250YWluZXIuXG4gKiBDbGVhcnMgcHJpb3IgU1ZHIC8gZW1wdHktc3RhdGUgbm9kZXM7IGxlYXZlcyBBbmd1bGFyIHRvb2x0aXAgaG9zdHMgYWxvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDaGFydEVtcHR5TWVzc2FnZShcbiAgZDM6IHsgc2VsZWN0OiAobm9kZTogSFRNTEVsZW1lbnQpID0+IEQzRW1wdHlTZWxlY3Rpb24gfSxcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgbWVzc2FnZTogQVhDaGFydEVtcHR5TWVzc2FnZUNvbnRlbnQsXG4pOiB2b2lkIHtcbiAgY29uc3Qgcm9vdCA9IGQzLnNlbGVjdChjb250YWluZXIpO1xuICByb290LnNlbGVjdEFsbCgnc3ZnLCAuYXgtY2hhcnQtZW1wdHknKS5yZW1vdmUoKTtcblxuICBjb25zdCBjYXJkID0gcm9vdC5hcHBlbmQoJ2RpdicpLmF0dHIoJ2NsYXNzJywgJ2F4LWNoYXJ0LWVtcHR5JykuYXBwZW5kKCdkaXYnKS5hdHRyKCdjbGFzcycsICdheC1jaGFydC1lbXB0eV9fY2FyZCcpO1xuXG4gIGNhcmRcbiAgICAuYXBwZW5kKCdkaXYnKVxuICAgIC5hdHRyKCdjbGFzcycsICdheC1jaGFydC1lbXB0eV9faWNvbicpXG4gICAgLmh0bWwoYDxpIGNsYXNzPVwiJHttZXNzYWdlLmljb259IGZhLTJ4XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPmApO1xuXG4gIGNhcmQuYXBwZW5kKCdkaXYnKS5hdHRyKCdjbGFzcycsICdheC1jaGFydC1lbXB0eV9fdGl0bGUnKS50ZXh0KG1lc3NhZ2UudGl0bGUpO1xuXG4gIGlmIChtZXNzYWdlLmhlbHApIHtcbiAgICBjYXJkLmFwcGVuZCgnZGl2JykuYXR0cignY2xhc3MnLCAnYXgtY2hhcnQtZW1wdHlfX2hlbHAnKS50ZXh0KG1lc3NhZ2UuaGVscCk7XG4gIH1cbn1cblxuLyoqIE1pbmltYWwgRDMgc2VsZWN0aW9uIHN1cmZhY2UgdXNlZCBieSBlbXB0eS1zdGF0ZSByZW5kZXJpbmcuICovXG5pbnRlcmZhY2UgRDNFbXB0eVNlbGVjdGlvbiB7XG4gIHNlbGVjdEFsbDogKHNlbGVjdG9yOiBzdHJpbmcpID0+IHsgcmVtb3ZlOiAoKSA9PiB1bmtub3duIH07XG4gIGFwcGVuZDogKHRhZzogc3RyaW5nKSA9PiBEM0VtcHR5QXBwZW5kO1xufVxuXG5pbnRlcmZhY2UgRDNFbXB0eUFwcGVuZCB7XG4gIGF0dHI6IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IEQzRW1wdHlBcHBlbmQ7XG4gIGFwcGVuZDogKHRhZzogc3RyaW5nKSA9PiBEM0VtcHR5QXBwZW5kO1xuICBodG1sOiAodmFsdWU6IHN0cmluZykgPT4gRDNFbXB0eUFwcGVuZDtcbiAgdGV4dDogKHZhbHVlOiBzdHJpbmcpID0+IEQzRW1wdHlBcHBlbmQ7XG59XG4iXX0=","export const AX_CHART_DEFAULT_MESSAGES = {\n noData: 'No data available',\n noDataHelp: 'Please provide data to display the chart',\n allHidden: 'All series are hidden',\n allHiddenHelp: 'Click on legend items to show them',\n noDataIcon: 'fa-light fa-chart-simple',\n allHiddenIcon: 'fa-light fa-eye-slash',\n};\nexport function mergeChartMessages(defaults = {}, overrides) {\n return {\n ...AX_CHART_DEFAULT_MESSAGES,\n ...defaults,\n ...overrides,\n };\n}\n/** Shallow merge options while preserving nested margin/messages defaults. */\nexport function mergeChartOptions(defaults, options) {\n const opts = (options ?? {});\n const result = { ...defaults, ...opts };\n const defaultRecord = defaults;\n const optionRecord = opts;\n if (defaultRecord.messages || optionRecord.messages) {\n result.messages = mergeChartMessages(defaultRecord.messages, optionRecord.messages);\n }\n if (defaultRecord.margins || optionRecord.margins) {\n result.margins = { ...defaultRecord.margins, ...optionRecord.margins };\n }\n if (defaultRecord.margin || optionRecord.margin) {\n result.margin = { ...defaultRecord.margin, ...optionRecord.margin };\n }\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC1tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBOEI7SUFDbEUsTUFBTSxFQUFFLG1CQUFtQjtJQUMzQixVQUFVLEVBQUUsMENBQTBDO0lBQ3RELFNBQVMsRUFBRSx1QkFBdUI7SUFDbEMsYUFBYSxFQUFFLG9DQUFvQztJQUNuRCxVQUFVLEVBQUUsMEJBQTBCO0lBQ3RDLGFBQWEsRUFBRSx1QkFBdUI7Q0FDdkMsQ0FBQztBQUVGLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsV0FBNEIsRUFBRSxFQUM5QixTQUEyQjtJQUUzQixPQUFPO1FBQ0wsR0FBRyx5QkFBeUI7UUFDNUIsR0FBRyxRQUFRO1FBQ1gsR0FBRyxTQUFTO0tBQ2IsQ0FBQztBQUNKLENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxVQUFVLGlCQUFpQixDQUFtQixRQUFXLEVBQUUsT0FBMkI7SUFDMUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFlLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLElBQUksRUFJcEMsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLFFBSXJCLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxJQUlwQixDQUFDO0lBRUYsSUFBSSxhQUFhLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwRCxNQUFNLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIGVtcHR5LXN0YXRlIGNvcHkgZm9yIGFsbCBjaGFydHMuXG4gKiBQZXItY2hhcnQgY29uZmlncyBtYXkgb3ZlcnJpZGUgaWNvbnM7IGRlZmF1bHQgdGl0bGUvaGVscCBzdGF5IGNvbnNpc3RlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhDaGFydE1lc3NhZ2VzIHtcbiAgbm9EYXRhPzogc3RyaW5nO1xuICBub0RhdGFIZWxwPzogc3RyaW5nO1xuICBhbGxIaWRkZW4/OiBzdHJpbmc7XG4gIGFsbEhpZGRlbkhlbHA/OiBzdHJpbmc7XG4gIG5vRGF0YUljb24/OiBzdHJpbmc7XG4gIGFsbEhpZGRlbkljb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBBWF9DSEFSVF9ERUZBVUxUX01FU1NBR0VTOiBSZXF1aXJlZDxBWENoYXJ0TWVzc2FnZXM+ID0ge1xuICBub0RhdGE6ICdObyBkYXRhIGF2YWlsYWJsZScsXG4gIG5vRGF0YUhlbHA6ICdQbGVhc2UgcHJvdmlkZSBkYXRhIHRvIGRpc3BsYXkgdGhlIGNoYXJ0JyxcbiAgYWxsSGlkZGVuOiAnQWxsIHNlcmllcyBhcmUgaGlkZGVuJyxcbiAgYWxsSGlkZGVuSGVscDogJ0NsaWNrIG9uIGxlZ2VuZCBpdGVtcyB0byBzaG93IHRoZW0nLFxuICBub0RhdGFJY29uOiAnZmEtbGlnaHQgZmEtY2hhcnQtc2ltcGxlJyxcbiAgYWxsSGlkZGVuSWNvbjogJ2ZhLWxpZ2h0IGZhLWV5ZS1zbGFzaCcsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VDaGFydE1lc3NhZ2VzKFxuICBkZWZhdWx0czogQVhDaGFydE1lc3NhZ2VzID0ge30sXG4gIG92ZXJyaWRlcz86IEFYQ2hhcnRNZXNzYWdlcyxcbik6IFJlcXVpcmVkPEFYQ2hhcnRNZXNzYWdlcz4ge1xuICByZXR1cm4ge1xuICAgIC4uLkFYX0NIQVJUX0RFRkFVTFRfTUVTU0FHRVMsXG4gICAgLi4uZGVmYXVsdHMsXG4gICAgLi4ub3ZlcnJpZGVzLFxuICB9O1xufVxuXG4vKiogU2hhbGxvdyBtZXJnZSBvcHRpb25zIHdoaWxlIHByZXNlcnZpbmcgbmVzdGVkIG1hcmdpbi9tZXNzYWdlcyBkZWZhdWx0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUNoYXJ0T3B0aW9uczxUIGV4dGVuZHMgb2JqZWN0PihkZWZhdWx0czogVCwgb3B0aW9ucz86IFBhcnRpYWw8VD4gfCBudWxsKTogVCB7XG4gIGNvbnN0IG9wdHMgPSAob3B0aW9ucyA/PyB7fSkgYXMgUGFydGlhbDxUPjtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5kZWZhdWx0cywgLi4ub3B0cyB9IGFzIFQgJiB7XG4gICAgbWVzc2FnZXM/OiBBWENoYXJ0TWVzc2FnZXM7XG4gICAgbWFyZ2lucz86IG9iamVjdDtcbiAgICBtYXJnaW4/OiBvYmplY3Q7XG4gIH07XG5cbiAgY29uc3QgZGVmYXVsdFJlY29yZCA9IGRlZmF1bHRzIGFzIHtcbiAgICBtZXNzYWdlcz86IEFYQ2hhcnRNZXNzYWdlcztcbiAgICBtYXJnaW5zPzogb2JqZWN0O1xuICAgIG1hcmdpbj86IG9iamVjdDtcbiAgfTtcbiAgY29uc3Qgb3B0aW9uUmVjb3JkID0gb3B0cyBhcyB7XG4gICAgbWVzc2FnZXM/OiBBWENoYXJ0TWVzc2FnZXM7XG4gICAgbWFyZ2lucz86IG9iamVjdDtcbiAgICBtYXJnaW4/OiBvYmplY3Q7XG4gIH07XG5cbiAgaWYgKGRlZmF1bHRSZWNvcmQubWVzc2FnZXMgfHwgb3B0aW9uUmVjb3JkLm1lc3NhZ2VzKSB7XG4gICAgcmVzdWx0Lm1lc3NhZ2VzID0gbWVyZ2VDaGFydE1lc3NhZ2VzKGRlZmF1bHRSZWNvcmQubWVzc2FnZXMsIG9wdGlvblJlY29yZC5tZXNzYWdlcyk7XG4gIH1cbiAgaWYgKGRlZmF1bHRSZWNvcmQubWFyZ2lucyB8fCBvcHRpb25SZWNvcmQubWFyZ2lucykge1xuICAgIHJlc3VsdC5tYXJnaW5zID0geyAuLi5kZWZhdWx0UmVjb3JkLm1hcmdpbnMsIC4uLm9wdGlvblJlY29yZC5tYXJnaW5zIH07XG4gIH1cbiAgaWYgKGRlZmF1bHRSZWNvcmQubWFyZ2luIHx8IG9wdGlvblJlY29yZC5tYXJnaW4pIHtcbiAgICByZXN1bHQubWFyZ2luID0geyAuLi5kZWZhdWx0UmVjb3JkLm1hcmdpbiwgLi4ub3B0aW9uUmVjb3JkLm1hcmdpbiB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","/**\n * Resolves any CSS `<color>` the browser understands — including\n * `rgb(var(--token))`, `hsl(var(--token))`, `color-mix()`, etc. — to a computed\n * `rgb()` / `rgba()` string, using the cascade from `scopeElement` (e.g. the chart\n * container) so design tokens on ancestors apply.\n */\nexport function resolveCssColorInContext(scopeElement, cssColor) {\n if (typeof window === 'undefined' || typeof document === 'undefined' || !getComputedStyle) {\n return cssColor;\n }\n const input = cssColor?.trim();\n if (!input) {\n return cssColor;\n }\n const probe = document.createElement('span');\n probe.style.cssText =\n 'position:absolute;left:-9999px;top:-9999px;visibility:hidden;pointer-events:none;';\n probe.style.color = input;\n scopeElement.appendChild(probe);\n void probe.offsetHeight;\n const resolved = getComputedStyle(probe).color;\n probe.remove();\n return resolved || cssColor;\n}\n/**\n * Compute edge-aware tooltip position with intelligent placement,\n * considering available space in all directions and preventing overflow.\n */\nexport function computeTooltipPosition(containerRect, tooltipRect, clientX, clientY, gap) {\n const cursorX = clientX - containerRect.left;\n const cursorY = clientY - containerRect.top;\n if (!tooltipRect) {\n return {\n x: Math.min(cursorX + gap, containerRect.width - gap),\n y: Math.max(gap, Math.min(cursorY, containerRect.height - gap)),\n };\n }\n // Calculate available space in each direction\n const spaceRight = containerRect.width - cursorX;\n const spaceLeft = cursorX;\n const spaceBelow = containerRect.height - cursorY;\n const spaceAbove = cursorY;\n // Determine best horizontal position\n let x;\n if (spaceRight >= tooltipRect.width + gap) {\n // Position to the right of cursor\n x = cursorX + gap;\n }\n else if (spaceLeft >= tooltipRect.width + gap) {\n // Position to the left of cursor\n x = cursorX - tooltipRect.width - gap;\n }\n else {\n // Center horizontally if neither side has enough space\n x = Math.max(gap, Math.min((containerRect.width - tooltipRect.width) / 2, containerRect.width - tooltipRect.width - gap));\n }\n // Determine best vertical position\n let y;\n if (spaceBelow >= tooltipRect.height + gap) {\n // Position below cursor\n y = cursorY + gap;\n }\n else if (spaceAbove >= tooltipRect.height + gap) {\n // Position above cursor\n y = cursorY - tooltipRect.height - gap;\n }\n else {\n // Center vertically if neither direction has enough space\n y = Math.max(gap, Math.min((containerRect.height - tooltipRect.height) / 2, containerRect.height - tooltipRect.height - gap));\n }\n // Ensure tooltip stays within container bounds\n x = Math.max(gap, Math.min(x, containerRect.width - tooltipRect.width - gap));\n y = Math.max(gap, Math.min(y, containerRect.height - tooltipRect.height - gap));\n return { x, y };\n}\nexport function mapEasingName(option) {\n switch (option) {\n case 'linear':\n return 'easeLinear';\n case 'ease':\n return 'easePolyInOut';\n case 'ease-in':\n return 'easePolyIn';\n case 'ease-out':\n return 'easePolyOut';\n case 'ease-in-out':\n return 'easePolyInOut';\n case 'cubic':\n return 'easeCubic';\n case 'cubic-in':\n return 'easeCubicIn';\n case 'cubic-out':\n return 'easeCubicOut';\n case 'cubic-in-out':\n return 'easeCubicInOut';\n default:\n return 'easeCubicOut';\n }\n}\n/**\n * Formats large numbers with abbreviations (K, M, B, T)\n */\nexport function formatLargeNumber(value) {\n if (value === 0)\n return '0';\n const absValue = Math.abs(value);\n const sign = value < 0 ? '-' : '';\n if (absValue >= 1e12) {\n return `${sign}${(absValue / 1e12).toFixed(1)}T`;\n }\n if (absValue >= 1e9) {\n return `${sign}${(absValue / 1e9).toFixed(1)}B`;\n }\n if (absValue >= 1e6) {\n return `${sign}${(absValue / 1e6).toFixed(1)}M`;\n }\n if (absValue >= 1e3) {\n return `${sign}${(absValue / 1e3).toFixed(1)}K`;\n }\n return value.toLocaleString();\n}\n/**\n * Returns a D3 easing function for the provided option.\n */\nexport function getEasingFunction(d3, option) {\n const name = mapEasingName(option);\n const easing = d3[name];\n return typeof easing === 'function' ? easing : d3.easeCubicOut;\n}\n/** Unique DOM id prefix per chart instance (SVG filters/gradients). */\nexport function createChartInstanceId(prefix = 'ax-chart') {\n return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;\n}\n/**\n * Normalizes barWidth: values > 1 are treated as 0–100 percentages (config default 80),\n * values ≤ 1 as fractions.\n */\nexport function resolveBarWidthFraction(barWidth, fallbackPercent = 80) {\n const raw = barWidth ?? fallbackPercent;\n const fraction = raw > 1 ? raw / 100 : raw;\n return Math.min(1, Math.max(0.05, fraction));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxZQUF5QixFQUFFLFFBQWdCO0lBQ2xGLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMvQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU87UUFDakIsbUZBQW1GLENBQUM7SUFDdEYsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsS0FBSyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFZixPQUFPLFFBQVEsSUFBSSxRQUFRLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsYUFBc0IsRUFDdEIsV0FBMkIsRUFDM0IsT0FBZSxFQUNmLE9BQWUsRUFDZixHQUFXO0lBRVgsTUFBTSxPQUFPLEdBQUcsT0FBTyxHQUFHLGFBQWEs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Q0FBQztJQUN4QyxNQUFNLFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBUb29sdGlwUG9zaXRpb24gPSB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG5cbi8qKlxuICogUmVzb2x2ZXMgYW55IENTUyBgPGNvbG9yPmAgdGhlIGJyb3dzZXIgdW5kZXJzdGFuZHMg4oCUIGluY2x1ZGluZ1xuICogYHJnYih2YXIoLS10b2tlbikpYCwgYGhzbCh2YXIoLS10b2tlbikpYCwgYGNvbG9yLW1peCgpYCwgZXRjLiDigJQgdG8gYSBjb21wdXRlZFxuICogYHJnYigpYCAvIGByZ2JhKClgIHN0cmluZywgdXNpbmcgdGhlIGNhc2NhZGUgZnJvbSBgc2NvcGVFbGVtZW50YCAoZS5nLiB0aGUgY2hhcnRcbiAqIGNvbnRhaW5lcikgc28gZGVzaWduIHRva2VucyBvbiBhbmNlc3RvcnMgYXBwbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ3NzQ29sb3JJbkNvbnRleHQoc2NvcGVFbGVtZW50OiBIVE1MRWxlbWVudCwgY3NzQ29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnIHx8ICFnZXRDb21wdXRlZFN0eWxlKSB7XG4gICAgcmV0dXJuIGNzc0NvbG9yO1xuICB9XG4gIGNvbnN0IGlucHV0ID0gY3NzQ29sb3I/LnRyaW0oKTtcbiAgaWYgKCFpbnB1dCkge1xuICAgIHJldHVybiBjc3NDb2xvcjtcbiAgfVxuXG4gIGNvbnN0IHByb2JlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBwcm9iZS5zdHlsZS5jc3NUZXh0ID1cbiAgICAncG9zaXRpb246YWJzb2x1dGU7bGVmdDotOTk5OXB4O3RvcDotOTk5OXB4O3Zpc2liaWxpdHk6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmU7JztcbiAgcHJvYmUuc3R5bGUuY29sb3IgPSBpbnB1dDtcbiAgc2NvcGVFbGVtZW50LmFwcGVuZENoaWxkKHByb2JlKTtcbiAgdm9pZCBwcm9iZS5vZmZzZXRIZWlnaHQ7XG4gIGNvbnN0IHJlc29sdmVkID0gZ2V0Q29tcHV0ZWRTdHlsZShwcm9iZSkuY29sb3I7XG4gIHByb2JlLnJlbW92ZSgpO1xuXG4gIHJldHVybiByZXNvbHZlZCB8fCBjc3NDb2xvcjtcbn1cblxuLyoqXG4gKiBDb21wdXRlIGVkZ2UtYXdhcmUgdG9vbHRpcCBwb3NpdGlvbiB3aXRoIGludGVsbGlnZW50IHBsYWNlbWVudCxcbiAqIGNvbnNpZGVyaW5nIGF2YWlsYWJsZSBzcGFjZSBpbiBhbGwgZGlyZWN0aW9ucyBhbmQgcHJldmVudGluZyBvdmVyZmxvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVUb29sdGlwUG9zaXRpb24oXG4gIGNvbnRhaW5lclJlY3Q6IERPTVJlY3QsXG4gIHRvb2x0aXBSZWN0OiBET01SZWN0IHwgbnVsbCxcbiAgY2xpZW50WDogbnVtYmVyLFxuICBjbGllbnRZOiBudW1iZXIsXG4gIGdhcDogbnVtYmVyLFxuKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgY29uc3QgY3Vyc29yWCA9IGNsaWVudFggLSBjb250YWluZXJSZWN0LmxlZnQ7XG4gIGNvbnN0IGN1cnNvclkgPSBjbGllbnRZIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgaWYgKCF0b29sdGlwUmVjdCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihjdXJzb3JYICsgZ2FwLCBjb250YWluZXJSZWN0LndpZHRoIC0gZ2FwKSxcbiAgICAgIHk6IE1hdGgubWF4KGdhcCwgTWF0aC5taW4oY3Vyc29yWSwgY29udGFpbmVyUmVjdC5oZWlnaHQgLSBnYXApKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsY3VsYXRlIGF2YWlsYWJsZSBzcGFjZSBpbiBlYWNoIGRpcmVjdGlvblxuICBjb25zdCBzcGFjZVJpZ2h0ID0gY29udGFpbmVyUmVjdC53aWR0aCAtIGN1cnNvclg7XG4gIGNvbnN0IHNwYWNlTGVmdCA9IGN1cnNvclg7XG4gIGNvbnN0IHNwYWNlQmVsb3cgPSBjb250YWluZXJSZWN0LmhlaWdodCAtIGN1cnNvclk7XG4gIGNvbnN0IHNwYWNlQWJvdmUgPSBjdXJzb3JZO1xuXG4gIC8vIERldGVybWluZSBiZXN0IGhvcml6b250YWwgcG9zaXRpb25cbiAgbGV0IHg6IG51bWJlcjtcbiAgaWYgKHNwYWNlUmlnaHQgPj0gdG9vbHRpcFJlY3Qud2lkdGggKyBnYXApIHtcbiAgICAvLyBQb3NpdGlvbiB0byB0aGUgcmlnaHQgb2YgY3Vyc29yXG4gICAgeCA9IGN1cnNvclggKyBnYXA7XG4gIH0gZWxzZSBpZiAoc3BhY2VMZWZ0ID49IHRvb2x0aXBSZWN0LndpZHRoICsgZ2FwKSB7XG4gICAgLy8gUG9zaXRpb24gdG8gdGhlIGxlZnQgb2YgY3Vyc29yXG4gICAgeCA9IGN1cnNvclggLSB0b29sdGlwUmVjdC53aWR0aCAtIGdhcDtcbiAgfSBlbHNlIHtcbiAgICAvLyBDZW50ZXIgaG9yaXpvbnRhbGx5IGlmIG5laXRoZXIgc2lkZSBoYXMgZW5vdWdoIHNwYWNlXG4gICAgeCA9IE1hdGgubWF4KFxuICAgICAgZ2FwLFxuICAgICAgTWF0aC5taW4oKGNvbnRhaW5lclJlY3Qud2lkdGggLSB0b29sdGlwUmVjdC53aWR0aCkgLyAyLCBjb250YWluZXJSZWN0LndpZHRoIC0gdG9vbHRpcFJlY3Qud2lkdGggLSBnYXApLFxuICAgICk7XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgYmVzdCB2ZXJ0aWNhbCBwb3NpdGlvblxuICBsZXQgeTogbnVtYmVyO1xuICBpZiAoc3BhY2VCZWxvdyA+PSB0b29sdGlwUmVjdC5oZWlnaHQgKyBnYXApIHtcbiAgICAvLyBQb3NpdGlvbiBiZWxvdyBjdXJzb3JcbiAgICB5ID0gY3Vyc29yWSArIGdhcDtcbiAgfSBlbHNlIGlmIChzcGFjZUFib3ZlID49IHRvb2x0aXBSZWN0LmhlaWdodCArIGdhcCkge1xuICAgIC8vIFBvc2l0aW9uIGFib3ZlIGN1cnNvclxuICAgIHkgPSBjdXJzb3JZIC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC0gZ2FwO1xuICB9IGVsc2Uge1xuICAgIC8vIENlbnRlciB2ZXJ0aWNhbGx5IGlmIG5laXRoZXIgZGlyZWN0aW9uIGhhcyBlbm91Z2ggc3BhY2VcbiAgICB5ID0gTWF0aC5tYXgoXG4gICAgICBnYXAsXG4gICAgICBNYXRoLm1pbigoY29udGFpbmVyUmVjdC5oZWlnaHQgLSB0b29sdGlwUmVjdC5oZWlnaHQpIC8gMiwgY29udGFpbmVyUmVjdC5oZWlnaHQgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSBnYXApLFxuICAgICk7XG4gIH1cblxuICAvLyBFbnN1cmUgdG9vbHRpcCBzdGF5cyB3aXRoaW4gY29udGFpbmVyIGJvdW5kc1xuICB4ID0gTWF0aC5tYXgoZ2FwLCBNYXRoLm1pbih4LCBjb250YWluZXJSZWN0LndpZHRoIC0gdG9vbHRpcFJlY3Qud2lkdGggLSBnYXApKTtcbiAgeSA9IE1hdGgubWF4KGdhcCwgTWF0aC5taW4oeSwgY29udGFpbmVyUmVjdC5oZWlnaHQgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSBnYXApKTtcblxuICByZXR1cm4geyB4LCB5IH07XG59XG5cbi8qKlxuICogTWFwIGVhc2luZyBvcHRpb24gdG8gZDMgZWFzaW5nIGZ1bmN0aW9uIG5hbWUgdGhhdCBjYWxsZXJzIGNhbiBsb29rdXAgb24gZDMuXG4gKiBLZWVwcyBtYXBwaW5nIGNvbnNpc3RlbnQgYWNyb3NzIGNoYXJ0cy5cbiAqL1xuZXhwb3J0IHR5cGUgRDNFYXNpbmdOYW1lID1cbiAgfCAnZWFzZUxpbmVhcidcbiAgfCAnZWFzZVBvbHlJbk91dCdcbiAgfCAnZWFzZVBvbHlJbidcbiAgfCAnZWFzZVBvbHlPdXQnXG4gIHwgJ2Vhc2VDdWJpYydcbiAgfCAnZWFzZUN1YmljSW4nXG4gIHwgJ2Vhc2VDdWJpY091dCdcbiAgfCAnZWFzZUN1YmljSW5PdXQnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFwRWFzaW5nTmFtZShvcHRpb24/OiBzdHJpbmcpOiBEM0Vhc2luZ05hbWUge1xuICBzd2l0Y2ggKG9wdGlvbikge1xuICAgIGNhc2UgJ2xpbmVhcic6XG4gICAgICByZXR1cm4gJ2Vhc2VMaW5lYXInO1xuICAgIGNhc2UgJ2Vhc2UnOlxuICAgICAgcmV0dXJuICdlYXNlUG9seUluT3V0JztcbiAgICBjYXNlICdlYXNlLWluJzpcbiAgICAgIHJldHVybiAnZWFzZVBvbHlJbic7XG4gICAgY2FzZSAnZWFzZS1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlUG9seU91dCc7XG4gICAgY2FzZSAnZWFzZS1pbi1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlUG9seUluT3V0JztcbiAgICBjYXNlICdjdWJpYyc6XG4gICAgICByZXR1cm4gJ2Vhc2VDdWJpYyc7XG4gICAgY2FzZSAnY3ViaWMtaW4nOlxuICAgICAgcmV0dXJuICdlYXNlQ3ViaWNJbic7XG4gICAgY2FzZSAnY3ViaWMtb3V0JzpcbiAgICAgIHJldHVybiAnZWFzZUN1YmljT3V0JztcbiAgICBjYXNlICdjdWJpYy1pbi1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlQ3ViaWNJbk91dCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnZWFzZUN1YmljT3V0JztcbiAgfVxufVxuXG4vKipcbiAqIEZvcm1hdHMgbGFyZ2UgbnVtYmVycyB3aXRoIGFiYnJldmlhdGlvbnMgKEssIE0sIEIsIFQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMYXJnZU51bWJlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSAwKSByZXR1cm4gJzAnO1xuXG4gIGNvbnN0IGFic1ZhbHVlID0gTWF0aC5hYnModmFsdWUpO1xuICBjb25zdCBzaWduID0gdmFsdWUgPCAwID8gJy0nIDogJyc7XG5cbiAgaWYgKGFic1ZhbHVlID49IDFlMTIpIHtcbiAgICByZXR1cm4gYCR7c2lnbn0keyhhYnNWYWx1ZSAvIDFlMTIpLnRvRml4ZWQoMSl9VGA7XG4gIH1cbiAgaWYgKGFic1ZhbHVlID49IDFlOSkge1xuICAgIHJldHVybiBgJHtzaWdufSR7KGFic1ZhbHVlIC8gMWU5KS50b0ZpeGVkKDEpfUJgO1xuICB9XG4gIGlmIChhYnNWYWx1ZSA+PSAxZTYpIHtcbiAgICByZXR1cm4gYCR7c2lnbn0keyhhYnNWYWx1ZSAvIDFlNikudG9GaXhlZCgxKX1NYDtcbiAgfVxuICBpZiAoYWJzVmFsdWUgPj0gMWUzKSB7XG4gICAgcmV0dXJuIGAke3NpZ259JHsoYWJzVmFsdWUgLyAxZTMpLnRvRml4ZWQoMSl9S2A7XG4gIH1cblxuICByZXR1cm4gdmFsdWUudG9Mb2NhbGVTdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgRDMgZWFzaW5nIGZ1bmN0aW9uIGZvciB0aGUgcHJvdmlkZWQgb3B0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWFzaW5nRnVuY3Rpb24oZDM6IHR5cGVvZiBpbXBvcnQoJ2QzJyksIG9wdGlvbj86IHN0cmluZyk6ICh0OiBudW1iZXIpID0+IG51bWJlciB7XG4gIGNvbnN0IG5hbWUgPSBtYXBFYXNpbmdOYW1lKG9wdGlvbik7XG4gIGNvbnN0IGVhc2luZyA9IChkMyBhcyBhbnkpW25hbWVdO1xuICByZXR1cm4gdHlwZW9mIGVhc2luZyA9PT0gJ2Z1bmN0aW9uJyA/IGVhc2luZyA6IChkMyBhcyBhbnkpLmVhc2VDdWJpY091dDtcbn1cblxuLyoqIFVuaXF1ZSBET00gaWQgcHJlZml4IHBlciBjaGFydCBpbnN0YW5jZSAoU1ZHIGZpbHRlcnMvZ3JhZGllbnRzKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFydEluc3RhbmNlSWQocHJlZml4ID0gJ2F4LWNoYXJ0Jyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtwcmVmaXh9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOSl9YDtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGJhcldpZHRoOiB2YWx1ZXMgPiAxIGFyZSB0cmVhdGVkIGFzIDDigJMxMDAgcGVyY2VudGFnZXMgKGNvbmZpZyBkZWZhdWx0IDgwKSxcbiAqIHZhbHVlcyDiiaQgMSBhcyBmcmFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQmFyV2lkdGhGcmFjdGlvbihiYXJXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkLCBmYWxsYmFja1BlcmNlbnQgPSA4MCk6IG51bWJlciB7XG4gIGNvbnN0IHJhdyA9IGJhcldpZHRoID8/IGZhbGxiYWNrUGVyY2VudDtcbiAgY29uc3QgZnJhY3Rpb24gPSByYXcgPiAxID8gcmF3IC8gMTAwIDogcmF3O1xuICByZXR1cm4gTWF0aC5taW4oMSwgTWF0aC5tYXgoMC4wNSwgZnJhY3Rpb24pKTtcbn1cbiJdfQ==","export const AX_CHARTS = 'ACOREX_CHARTS';\nexport * from './lib/chart-base.interface';\nexport * from './lib/chart-colors';\nexport * from './lib/chart-component-base';\nexport * from './lib/chart-empty-state';\nexport * from './lib/chart-messages';\nexport * from './lib/chart-types';\nexport * from './lib/chart-utils';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWF9DSEFSVFMgPSAnQUNPUkVYX0NIQVJUUyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC1iYXNlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFydC1jb2xvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtY29tcG9uZW50LWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtZW1wdHktc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtbWVzc2FnZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtdXRpbHMnO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNoYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NoYXJ0cy9zcmMvYWNvcmV4LWNoYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
package/funnel-chart/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ interface AXFunnelData {
|
|
|
14
14
|
}
|
|
15
15
|
interface AXFunnelChartMessages {
|
|
16
16
|
noData?: string;
|
|
17
|
+
noDataHelp?: string;
|
|
17
18
|
noDataIcon?: string;
|
|
18
19
|
}
|
|
19
20
|
interface AXFunnelChartOption {
|
|
@@ -88,30 +89,8 @@ declare class AXFunnelChartComponent extends AXChartComponent implements OnDestr
|
|
|
88
89
|
}>;
|
|
89
90
|
protected tooltipData: _angular_core.Signal<AXChartTooltipData>;
|
|
90
91
|
private configToken;
|
|
91
|
-
protected effectiveOptions: _angular_core.Signal<
|
|
92
|
-
|
|
93
|
-
top: number;
|
|
94
|
-
right: number;
|
|
95
|
-
bottom: number;
|
|
96
|
-
left: number;
|
|
97
|
-
};
|
|
98
|
-
width?: number;
|
|
99
|
-
height?: number;
|
|
100
|
-
neckWidth?: number;
|
|
101
|
-
colors?: string[];
|
|
102
|
-
color?: string;
|
|
103
|
-
valueRange?: {
|
|
104
|
-
min: number;
|
|
105
|
-
max: number;
|
|
106
|
-
};
|
|
107
|
-
showLabels?: boolean;
|
|
108
|
-
showSegmentValues?: boolean;
|
|
109
|
-
labelOffset?: number;
|
|
110
|
-
showTooltip?: boolean;
|
|
111
|
-
animationDuration?: number;
|
|
112
|
-
animationEasing?: _acorex_charts.AXAnimationEasing;
|
|
113
|
-
messages?: AXFunnelChartMessages;
|
|
114
|
-
}>;
|
|
92
|
+
protected effectiveOptions: _angular_core.Signal<AXFunnelChartOption>;
|
|
93
|
+
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
115
94
|
constructor();
|
|
116
95
|
ngOnDestroy(): void;
|
|
117
96
|
protected loadD3(): Promise<void>;
|
package/gauge-chart/index.d.ts
CHANGED
|
@@ -84,7 +84,7 @@ interface AXGaugeChartOption {
|
|
|
84
84
|
* Gauge chart data type
|
|
85
85
|
* Represents a single gauge value
|
|
86
86
|
*/
|
|
87
|
-
type AXGaugeChartValue = number;
|
|
87
|
+
type AXGaugeChartValue = number | null;
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
90
|
* Gauge Chart Component
|
|
@@ -115,25 +115,8 @@ declare class AXGaugeChartComponent extends AXChartComponent implements OnDestro
|
|
|
115
115
|
}>;
|
|
116
116
|
protected tooltipData: _angular_core.Signal<AXChartTooltipData>;
|
|
117
117
|
private configToken;
|
|
118
|
-
protected effectiveOptions: _angular_core.Signal<
|
|
119
|
-
|
|
120
|
-
maxValue?: number;
|
|
121
|
-
width?: number;
|
|
122
|
-
height?: number;
|
|
123
|
-
gaugeWidth?: number;
|
|
124
|
-
cornerRadius?: number;
|
|
125
|
-
showValue?: boolean;
|
|
126
|
-
showTooltip?: boolean;
|
|
127
|
-
thresholds?: {
|
|
128
|
-
value: number;
|
|
129
|
-
color: string;
|
|
130
|
-
label?: string;
|
|
131
|
-
}[];
|
|
132
|
-
label?: string;
|
|
133
|
-
animationDuration?: number;
|
|
134
|
-
animationEasing?: _acorex_charts.AXAnimationEasing;
|
|
135
|
-
messages?: AXGaugeChartMessages;
|
|
136
|
-
}>;
|
|
118
|
+
protected effectiveOptions: _angular_core.Signal<AXGaugeChartOption>;
|
|
119
|
+
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
137
120
|
private readonly TOOLTIP_GAP;
|
|
138
121
|
private readonly HALF_CIRCLE_RADIANS;
|
|
139
122
|
private readonly QUARTER_CIRCLE_RADIANS;
|
|
@@ -142,6 +125,9 @@ declare class AXGaugeChartComponent extends AXChartComponent implements OnDestro
|
|
|
142
125
|
private readonly TICK_LABEL_CHAR_WIDTH_RATIO;
|
|
143
126
|
private readonly TICK_LABEL_SIDE_PADDING;
|
|
144
127
|
private readonly LABEL_TICK_CLEARANCE;
|
|
128
|
+
private readonly instanceId;
|
|
129
|
+
private get bgGradientId();
|
|
130
|
+
private thresholdGradientId;
|
|
145
131
|
constructor();
|
|
146
132
|
ngOnDestroy(): void;
|
|
147
133
|
/**
|
package/heatmap-chart/index.d.ts
CHANGED
|
@@ -105,33 +105,8 @@ declare class AXHeatmapChartComponent extends AXChartComponent implements OnDest
|
|
|
105
105
|
}>;
|
|
106
106
|
protected tooltipData: _angular_core.WritableSignal<AXChartTooltipData>;
|
|
107
107
|
private _tooltipRafId;
|
|
108
|
-
protected effectiveOptions: _angular_core.Signal<
|
|
109
|
-
|
|
110
|
-
height?: number;
|
|
111
|
-
margin?: {
|
|
112
|
-
top: number;
|
|
113
|
-
right: number;
|
|
114
|
-
bottom: number;
|
|
115
|
-
left: number;
|
|
116
|
-
};
|
|
117
|
-
colors?: string[];
|
|
118
|
-
color?: string;
|
|
119
|
-
valueRange?: {
|
|
120
|
-
min: number;
|
|
121
|
-
max: number;
|
|
122
|
-
};
|
|
123
|
-
cellPadding?: number;
|
|
124
|
-
borderRadius?: number;
|
|
125
|
-
showXAxis?: boolean;
|
|
126
|
-
showYAxis?: boolean;
|
|
127
|
-
xAxisLabel?: string;
|
|
128
|
-
yAxisLabel?: string;
|
|
129
|
-
rotateXAxisLabels?: boolean | "auto";
|
|
130
|
-
showTooltip?: boolean;
|
|
131
|
-
animationDuration?: number;
|
|
132
|
-
animationEasing?: _acorex_charts.AXAnimationEasing;
|
|
133
|
-
messages?: AXHeatmapMessages;
|
|
134
|
-
}>;
|
|
108
|
+
protected effectiveOptions: _angular_core.Signal<AXHeatmapChartOption>;
|
|
109
|
+
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
135
110
|
constructor();
|
|
136
111
|
private init;
|
|
137
112
|
updateChart(): void;
|
|
@@ -306,32 +306,8 @@ declare class AXHierarchyChartComponent extends AXChartComponent implements AXCh
|
|
|
306
306
|
nodeToggle: _angular_core.OutputEmitterRef<AXHierarchyChartToggleEvent>;
|
|
307
307
|
protected processedData: _angular_core.Signal<AXHierarchyChartNode>;
|
|
308
308
|
protected hasCustomTemplate: _angular_core.Signal<boolean>;
|
|
309
|
-
protected effectiveOptions: _angular_core.Signal<
|
|
310
|
-
|
|
311
|
-
height?: number;
|
|
312
|
-
margin?: AXHierarchyChartMargin;
|
|
313
|
-
nodeRadius?: number;
|
|
314
|
-
nodeStrokeWidth?: number;
|
|
315
|
-
linkWidth?: number;
|
|
316
|
-
linkStyle?: "straight" | "curved" | "rounded" | "step";
|
|
317
|
-
showTooltip?: boolean;
|
|
318
|
-
direction?: "vertical" | "horizontal";
|
|
319
|
-
nodeWidth?: number;
|
|
320
|
-
nodeHeight?: number;
|
|
321
|
-
nodeSpacingX?: number;
|
|
322
|
-
nodeSpacingY?: number;
|
|
323
|
-
collapsible?: boolean;
|
|
324
|
-
expandAll?: boolean;
|
|
325
|
-
className?: string;
|
|
326
|
-
animationDuration?: number;
|
|
327
|
-
animationEasing?: _acorex_charts.AXAnimationEasing;
|
|
328
|
-
messages?: AXHierarchyChartMessages;
|
|
329
|
-
}>;
|
|
330
|
-
protected effectiveMessages: _angular_core.Signal<{
|
|
331
|
-
noData: string;
|
|
332
|
-
noDataHelp: string;
|
|
333
|
-
noDataIcon: string;
|
|
334
|
-
}>;
|
|
309
|
+
protected effectiveOptions: _angular_core.Signal<AXHierarchyChartOption>;
|
|
310
|
+
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
335
311
|
constructor();
|
|
336
312
|
/**
|
|
337
313
|
* Initialize the expanded state for all nodes
|
package/index.d.ts
CHANGED
|
@@ -37,6 +37,49 @@ declare abstract class AXChartComponent {
|
|
|
37
37
|
static ɵdir: i0.ɵɵDirectiveDeclaration<AXChartComponent, never, never, {}, {}, never, never, true, never>;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
interface AXChartEmptyMessageContent {
|
|
41
|
+
icon: string;
|
|
42
|
+
title: string;
|
|
43
|
+
help?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Renders a centered empty-state message inside a chart container.
|
|
47
|
+
* Clears prior SVG / empty-state nodes; leaves Angular tooltip hosts alone.
|
|
48
|
+
*/
|
|
49
|
+
declare function renderChartEmptyMessage(d3: {
|
|
50
|
+
select: (node: HTMLElement) => D3EmptySelection;
|
|
51
|
+
}, container: HTMLElement, message: AXChartEmptyMessageContent): void;
|
|
52
|
+
/** Minimal D3 selection surface used by empty-state rendering. */
|
|
53
|
+
interface D3EmptySelection {
|
|
54
|
+
selectAll: (selector: string) => {
|
|
55
|
+
remove: () => unknown;
|
|
56
|
+
};
|
|
57
|
+
append: (tag: string) => D3EmptyAppend;
|
|
58
|
+
}
|
|
59
|
+
interface D3EmptyAppend {
|
|
60
|
+
attr: (name: string, value: string) => D3EmptyAppend;
|
|
61
|
+
append: (tag: string) => D3EmptyAppend;
|
|
62
|
+
html: (value: string) => D3EmptyAppend;
|
|
63
|
+
text: (value: string) => D3EmptyAppend;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Shared empty-state copy for all charts.
|
|
68
|
+
* Per-chart configs may override icons; default title/help stay consistent.
|
|
69
|
+
*/
|
|
70
|
+
interface AXChartMessages {
|
|
71
|
+
noData?: string;
|
|
72
|
+
noDataHelp?: string;
|
|
73
|
+
allHidden?: string;
|
|
74
|
+
allHiddenHelp?: string;
|
|
75
|
+
noDataIcon?: string;
|
|
76
|
+
allHiddenIcon?: string;
|
|
77
|
+
}
|
|
78
|
+
declare const AX_CHART_DEFAULT_MESSAGES: Required<AXChartMessages>;
|
|
79
|
+
declare function mergeChartMessages(defaults?: AXChartMessages, overrides?: AXChartMessages): Required<AXChartMessages>;
|
|
80
|
+
/** Shallow merge options while preserving nested margin/messages defaults. */
|
|
81
|
+
declare function mergeChartOptions<T extends object>(defaults: T, options?: Partial<T> | null): T;
|
|
82
|
+
|
|
40
83
|
/**
|
|
41
84
|
* Animation easing options for charts
|
|
42
85
|
* Copied from @acorex/cdk/common to remove external dependency
|
|
@@ -81,8 +124,15 @@ declare function formatLargeNumber(value: number): string;
|
|
|
81
124
|
* Returns a D3 easing function for the provided option.
|
|
82
125
|
*/
|
|
83
126
|
declare function getEasingFunction(d3: typeof d3, option?: string): (t: number) => number;
|
|
127
|
+
/** Unique DOM id prefix per chart instance (SVG filters/gradients). */
|
|
128
|
+
declare function createChartInstanceId(prefix?: string): string;
|
|
129
|
+
/**
|
|
130
|
+
* Normalizes barWidth: values > 1 are treated as 0–100 percentages (config default 80),
|
|
131
|
+
* values ≤ 1 as fractions.
|
|
132
|
+
*/
|
|
133
|
+
declare function resolveBarWidthFraction(barWidth: number | undefined, fallbackPercent?: number): number;
|
|
84
134
|
|
|
85
135
|
declare const AX_CHARTS = "ACOREX_CHARTS";
|
|
86
136
|
|
|
87
|
-
export { AXChartComponent, AX_CHARTS, AX_CHART_COLOR_PALETTE, computeTooltipPosition, formatLargeNumber, getChartColor, getEasingFunction, mapEasingName, resolveCssColorInContext };
|
|
88
|
-
export type { AXAnimationEasing, AXChartComponentBase, D3EasingName, NXNativeEvent, TooltipPosition };
|
|
137
|
+
export { AXChartComponent, AX_CHARTS, AX_CHART_COLOR_PALETTE, AX_CHART_DEFAULT_MESSAGES, computeTooltipPosition, createChartInstanceId, formatLargeNumber, getChartColor, getEasingFunction, mapEasingName, mergeChartMessages, mergeChartOptions, renderChartEmptyMessage, resolveBarWidthFraction, resolveCssColorInContext };
|
|
138
|
+
export type { AXAnimationEasing, AXChartComponentBase, AXChartEmptyMessageContent, AXChartMessages, D3EasingName, NXNativeEvent, TooltipPosition };
|
package/line-chart/index.d.ts
CHANGED
|
@@ -136,43 +136,8 @@ declare class AXLineChartComponent extends AXChartComponent implements OnInit, A
|
|
|
136
136
|
protected tooltipData: _angular_core.Signal<AXChartTooltipData>;
|
|
137
137
|
private configToken;
|
|
138
138
|
private chartColors;
|
|
139
|
-
protected effectiveOptions: _angular_core.Signal<
|
|
140
|
-
|
|
141
|
-
height?: number;
|
|
142
|
-
margins?: {
|
|
143
|
-
top?: number;
|
|
144
|
-
right?: number;
|
|
145
|
-
bottom?: number;
|
|
146
|
-
left?: number;
|
|
147
|
-
};
|
|
148
|
-
showXAxis?: boolean;
|
|
149
|
-
showYAxis?: boolean;
|
|
150
|
-
showGrid?: boolean;
|
|
151
|
-
showVerticalGrid?: boolean;
|
|
152
|
-
xAxisLabel?: string;
|
|
153
|
-
yAxisLabel?: string;
|
|
154
|
-
yAxisStartsAtZero?: boolean;
|
|
155
|
-
axisPadding?: number;
|
|
156
|
-
showTooltip?: boolean;
|
|
157
|
-
lineWidth?: number;
|
|
158
|
-
showPoints?: boolean;
|
|
159
|
-
pointRadius?: number;
|
|
160
|
-
smoothLine?: boolean;
|
|
161
|
-
fillArea?: boolean;
|
|
162
|
-
fillOpacity?: number;
|
|
163
|
-
showCrosshair?: boolean;
|
|
164
|
-
animationDuration?: number;
|
|
165
|
-
animationEasing?: _acorex_charts.AXAnimationEasing;
|
|
166
|
-
messages?: AXLineChartMessages;
|
|
167
|
-
}>;
|
|
168
|
-
protected effectiveMessages: _angular_core.Signal<{
|
|
169
|
-
noData: string;
|
|
170
|
-
noDataHelp: string;
|
|
171
|
-
allHidden: string;
|
|
172
|
-
allHiddenHelp: string;
|
|
173
|
-
noDataIcon: string;
|
|
174
|
-
allHiddenIcon: string;
|
|
175
|
-
}>;
|
|
139
|
+
protected effectiveOptions: _angular_core.Signal<AXLineChartOption>;
|
|
140
|
+
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
176
141
|
private readonly MIN_DIMENSION;
|
|
177
142
|
private readonly DEFAULT_MARGIN_TOP;
|
|
178
143
|
private readonly DEFAULT_MARGIN_RIGHT;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/charts",
|
|
3
|
-
"version": "21.0.3-next.
|
|
3
|
+
"version": "21.0.3-next.28",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"d3": ">=7.9.0"
|
|
6
6
|
},
|
|
@@ -15,10 +15,6 @@
|
|
|
15
15
|
"types": "./index.d.ts",
|
|
16
16
|
"default": "./fesm2022/acorex-charts.mjs"
|
|
17
17
|
},
|
|
18
|
-
"./bar-chart": {
|
|
19
|
-
"types": "./bar-chart/index.d.ts",
|
|
20
|
-
"default": "./fesm2022/acorex-charts-bar-chart.mjs"
|
|
21
|
-
},
|
|
22
18
|
"./chart-legend": {
|
|
23
19
|
"types": "./chart-legend/index.d.ts",
|
|
24
20
|
"default": "./fesm2022/acorex-charts-chart-legend.mjs"
|
|
@@ -39,6 +35,10 @@
|
|
|
39
35
|
"types": "./gauge-chart/index.d.ts",
|
|
40
36
|
"default": "./fesm2022/acorex-charts-gauge-chart.mjs"
|
|
41
37
|
},
|
|
38
|
+
"./bar-chart": {
|
|
39
|
+
"types": "./bar-chart/index.d.ts",
|
|
40
|
+
"default": "./fesm2022/acorex-charts-bar-chart.mjs"
|
|
41
|
+
},
|
|
42
42
|
"./heatmap-chart": {
|
|
43
43
|
"types": "./heatmap-chart/index.d.ts",
|
|
44
44
|
"default": "./fesm2022/acorex-charts-heatmap-chart.mjs"
|