@acorex/charts 21.0.0-next.6 → 21.0.0-next.60

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.
@@ -1,4 +1,5 @@
1
- import { InjectionToken } from '@angular/core';
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, signal, afterNextRender, Directive } from '@angular/core';
2
3
 
3
4
  // Default color palette for charts
4
5
  const AX_CHART_COLOR_PALETTE = new InjectionToken('AX_CHART_COLOR_PALETTE', {
@@ -48,8 +49,42 @@ function getChartColor(index, palette) {
48
49
  }
49
50
 
50
51
  /**
51
- * Compute edge-aware tooltip position with right-first placement,
52
- * left fallback, vertical centering, and clamping within bounds.
52
+ * Base component class for all chart components
53
+ * Copied from @acorex/cdk/common NXComponent to remove external dependency
54
+ */
55
+ class AXChartComponent {
56
+ #elementRef = inject(ElementRef);
57
+ #isRendered = signal(false, ...(ngDevMode ? [{ debugName: "#isRendered" }] : []));
58
+ isRendered = this.#isRendered.asReadonly();
59
+ #afterNextRender = afterNextRender(() => {
60
+ if (!this.isRendered()) {
61
+ this.nativeElement['__axContext__'] = this;
62
+ this.#isRendered.set(true);
63
+ }
64
+ });
65
+ /**
66
+ * Gets the native HTML element of the component
67
+ */
68
+ get nativeElement() {
69
+ return this.#elementRef.nativeElement;
70
+ }
71
+ /**
72
+ * Gets the host HTML element of the component (alias for nativeElement)
73
+ * @returns T - The native DOM element associated with this component
74
+ */
75
+ getHostElement() {
76
+ return this.#elementRef.nativeElement;
77
+ }
78
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
79
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: AXChartComponent, isStandalone: true, ngImport: i0 });
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXChartComponent, decorators: [{
82
+ type: Directive
83
+ }] });
84
+
85
+ /**
86
+ * Compute edge-aware tooltip position with intelligent placement,
87
+ * considering available space in all directions and preventing overflow.
53
88
  */
54
89
  function computeTooltipPosition(containerRect, tooltipRect, clientX, clientY, gap) {
55
90
  const cursorX = clientX - containerRect.left;
@@ -60,12 +95,41 @@ function computeTooltipPosition(containerRect, tooltipRect, clientX, clientY, ga
60
95
  y: Math.max(gap, Math.min(cursorY, containerRect.height - gap)),
61
96
  };
62
97
  }
63
- let x = cursorX + gap;
64
- if (x + tooltipRect.width > containerRect.width - gap) {
98
+ // Calculate available space in each direction
99
+ const spaceRight = containerRect.width - cursorX;
100
+ const spaceLeft = cursorX;
101
+ const spaceBelow = containerRect.height - cursorY;
102
+ const spaceAbove = cursorY;
103
+ // Determine best horizontal position
104
+ let x;
105
+ if (spaceRight >= tooltipRect.width + gap) {
106
+ // Position to the right of cursor
107
+ x = cursorX + gap;
108
+ }
109
+ else if (spaceLeft >= tooltipRect.width + gap) {
110
+ // Position to the left of cursor
65
111
  x = cursorX - tooltipRect.width - gap;
66
112
  }
113
+ else {
114
+ // Center horizontally if neither side has enough space
115
+ x = Math.max(gap, Math.min((containerRect.width - tooltipRect.width) / 2, containerRect.width - tooltipRect.width - gap));
116
+ }
117
+ // Determine best vertical position
118
+ let y;
119
+ if (spaceBelow >= tooltipRect.height + gap) {
120
+ // Position below cursor
121
+ y = cursorY + gap;
122
+ }
123
+ else if (spaceAbove >= tooltipRect.height + gap) {
124
+ // Position above cursor
125
+ y = cursorY - tooltipRect.height - gap;
126
+ }
127
+ else {
128
+ // Center vertically if neither direction has enough space
129
+ y = Math.max(gap, Math.min((containerRect.height - tooltipRect.height) / 2, containerRect.height - tooltipRect.height - gap));
130
+ }
131
+ // Ensure tooltip stays within container bounds
67
132
  x = Math.max(gap, Math.min(x, containerRect.width - tooltipRect.width - gap));
68
- let y = cursorY - tooltipRect.height / 2;
69
133
  y = Math.max(gap, Math.min(y, containerRect.height - tooltipRect.height - gap));
70
134
  return { x, y };
71
135
  }
@@ -93,6 +157,28 @@ function mapEasingName(option) {
93
157
  return 'easeCubicOut';
94
158
  }
95
159
  }
160
+ /**
161
+ * Formats large numbers with abbreviations (K, M, B, T)
162
+ */
163
+ function formatLargeNumber(value) {
164
+ if (value === 0)
165
+ return '0';
166
+ const absValue = Math.abs(value);
167
+ const sign = value < 0 ? '-' : '';
168
+ if (absValue >= 1e12) {
169
+ return `${sign}${(absValue / 1e12).toFixed(1)}T`;
170
+ }
171
+ if (absValue >= 1e9) {
172
+ return `${sign}${(absValue / 1e9).toFixed(1)}B`;
173
+ }
174
+ if (absValue >= 1e6) {
175
+ return `${sign}${(absValue / 1e6).toFixed(1)}M`;
176
+ }
177
+ if (absValue >= 1e3) {
178
+ return `${sign}${(absValue / 1e3).toFixed(1)}K`;
179
+ }
180
+ return value.toLocaleString();
181
+ }
96
182
  /**
97
183
  * Returns a D3 easing function for the provided option.
98
184
  */
@@ -108,5 +194,5 @@ const AX_CHARTS = 'ACOREX_CHARTS';
108
194
  * Generated bundle index. Do not edit.
109
195
  */
110
196
 
111
- export { AX_CHARTS, AX_CHART_COLOR_PALETTE, computeTooltipPosition, getChartColor, getEasingFunction, mapEasingName };
197
+ export { AXChartComponent, AX_CHARTS, AX_CHART_COLOR_PALETTE, computeTooltipPosition, formatLargeNumber, getChartColor, getEasingFunction, mapEasingName };
112
198
  //# 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-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==","/**\n * Compute edge-aware tooltip position with right-first placement,\n * left fallback, vertical centering, and clamping within bounds.\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 let x = cursorX + gap;\n if (x + tooltipRect.width > containerRect.width - gap) {\n x = cursorX - tooltipRect.width - gap;\n }\n x = Math.max(gap, Math.min(x, containerRect.width - tooltipRect.width - gap));\n let y = cursorY - tooltipRect.height / 2;\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 * 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2xpYi9jaGFydC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLGFBQXNCLEVBQ3RCLFdBQTJCLEVBQzNCLE9BQWUsRUFDZixPQUFlLEVBQ2YsR0FBVztJQUVYLE1BQU0sT0FBTyxHQUFHLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLE9BQU8sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBRTVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPO1lBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxhQUFhLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNyRCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztTQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdEIsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3RELENBQUMsR0FBRyxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDeEMsQ0FBQztJQUNELENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU5RSxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWhGLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDbEIsQ0FBQztBQWdCRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWU7SUFDM0MsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssUUFBUTtZQUNYLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLEtBQUssTUFBTTtZQUNULE9BQU8sZUFBZSxDQUFDO1FBQ3pCLEtBQUssU0FBUztZQUNaLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLEtBQUssVUFBVTtZQUNiLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssYUFBYTtZQUNoQixPQUFPLGVBQWUsQ0FBQztRQUN6QixLQUFLLE9BQU87WUFDVixPQUFPLFdBQVcsQ0FBQztRQUNyQixLQUFLLFVBQVU7WUFDYixPQUFPLGFBQWEsQ0FBQztRQUN2QixLQUFLLFdBQVc7WUFDZCxPQUFPLGNBQWMsQ0FBQztRQUN4QixLQUFLLGNBQWM7WUFDakIsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQjtZQUNFLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBdUIsRUFBRSxNQUFlO0lBQ3hFLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBSSxFQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsRUFBVSxDQUFDLFlBQVksQ0FBQztBQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVG9vbHRpcFBvc2l0aW9uID0geyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuXG4vKipcbiAqIENvbXB1dGUgZWRnZS1hd2FyZSB0b29sdGlwIHBvc2l0aW9uIHdpdGggcmlnaHQtZmlyc3QgcGxhY2VtZW50LFxuICogbGVmdCBmYWxsYmFjaywgdmVydGljYWwgY2VudGVyaW5nLCBhbmQgY2xhbXBpbmcgd2l0aGluIGJvdW5kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVUb29sdGlwUG9zaXRpb24oXG4gIGNvbnRhaW5lclJlY3Q6IERPTVJlY3QsXG4gIHRvb2x0aXBSZWN0OiBET01SZWN0IHwgbnVsbCxcbiAgY2xpZW50WDogbnVtYmVyLFxuICBjbGllbnRZOiBudW1iZXIsXG4gIGdhcDogbnVtYmVyLFxuKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgY29uc3QgY3Vyc29yWCA9IGNsaWVudFggLSBjb250YWluZXJSZWN0LmxlZnQ7XG4gIGNvbnN0IGN1cnNvclkgPSBjbGllbnRZIC0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgaWYgKCF0b29sdGlwUmVjdCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihjdXJzb3JYICsgZ2FwLCBjb250YWluZXJSZWN0LndpZHRoIC0gZ2FwKSxcbiAgICAgIHk6IE1hdGgubWF4KGdhcCwgTWF0aC5taW4oY3Vyc29yWSwgY29udGFpbmVyUmVjdC5oZWlnaHQgLSBnYXApKSxcbiAgICB9O1xuICB9XG5cbiAgbGV0IHggPSBjdXJzb3JYICsgZ2FwO1xuICBpZiAoeCArIHRvb2x0aXBSZWN0LndpZHRoID4gY29udGFpbmVyUmVjdC53aWR0aCAtIGdhcCkge1xuICAgIHggPSBjdXJzb3JYIC0gdG9vbHRpcFJlY3Qud2lkdGggLSBnYXA7XG4gIH1cbiAgeCA9IE1hdGgubWF4KGdhcCwgTWF0aC5taW4oeCwgY29udGFpbmVyUmVjdC53aWR0aCAtIHRvb2x0aXBSZWN0LndpZHRoIC0gZ2FwKSk7XG5cbiAgbGV0IHkgPSBjdXJzb3JZIC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC8gMjtcbiAgeSA9IE1hdGgubWF4KGdhcCwgTWF0aC5taW4oeSwgY29udGFpbmVyUmVjdC5oZWlnaHQgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSBnYXApKTtcblxuICByZXR1cm4geyB4LCB5IH07XG59XG5cbi8qKlxuICogTWFwIGVhc2luZyBvcHRpb24gdG8gZDMgZWFzaW5nIGZ1bmN0aW9uIG5hbWUgdGhhdCBjYWxsZXJzIGNhbiBsb29rdXAgb24gZDMuXG4gKiBLZWVwcyBtYXBwaW5nIGNvbnNpc3RlbnQgYWNyb3NzIGNoYXJ0cy5cbiAqL1xuZXhwb3J0IHR5cGUgRDNFYXNpbmdOYW1lID1cbiAgfCAnZWFzZUxpbmVhcidcbiAgfCAnZWFzZVBvbHlJbk91dCdcbiAgfCAnZWFzZVBvbHlJbidcbiAgfCAnZWFzZVBvbHlPdXQnXG4gIHwgJ2Vhc2VDdWJpYydcbiAgfCAnZWFzZUN1YmljSW4nXG4gIHwgJ2Vhc2VDdWJpY091dCdcbiAgfCAnZWFzZUN1YmljSW5PdXQnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFwRWFzaW5nTmFtZShvcHRpb24/OiBzdHJpbmcpOiBEM0Vhc2luZ05hbWUge1xuICBzd2l0Y2ggKG9wdGlvbikge1xuICAgIGNhc2UgJ2xpbmVhcic6XG4gICAgICByZXR1cm4gJ2Vhc2VMaW5lYXInO1xuICAgIGNhc2UgJ2Vhc2UnOlxuICAgICAgcmV0dXJuICdlYXNlUG9seUluT3V0JztcbiAgICBjYXNlICdlYXNlLWluJzpcbiAgICAgIHJldHVybiAnZWFzZVBvbHlJbic7XG4gICAgY2FzZSAnZWFzZS1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlUG9seU91dCc7XG4gICAgY2FzZSAnZWFzZS1pbi1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlUG9seUluT3V0JztcbiAgICBjYXNlICdjdWJpYyc6XG4gICAgICByZXR1cm4gJ2Vhc2VDdWJpYyc7XG4gICAgY2FzZSAnY3ViaWMtaW4nOlxuICAgICAgcmV0dXJuICdlYXNlQ3ViaWNJbic7XG4gICAgY2FzZSAnY3ViaWMtb3V0JzpcbiAgICAgIHJldHVybiAnZWFzZUN1YmljT3V0JztcbiAgICBjYXNlICdjdWJpYy1pbi1vdXQnOlxuICAgICAgcmV0dXJuICdlYXNlQ3ViaWNJbk91dCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnZWFzZUN1YmljT3V0JztcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBEMyBlYXNpbmcgZnVuY3Rpb24gZm9yIHRoZSBwcm92aWRlZCBvcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFYXNpbmdGdW5jdGlvbihkMzogdHlwZW9mIGltcG9ydCgnZDMnKSwgb3B0aW9uPzogc3RyaW5nKTogKHQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbmFtZSA9IG1hcEVhc2luZ05hbWUob3B0aW9uKTtcbiAgY29uc3QgZWFzaW5nID0gKGQzIGFzIGFueSlbbmFtZV07XG4gIHJldHVybiB0eXBlb2YgZWFzaW5nID09PSAnZnVuY3Rpb24nID8gZWFzaW5nIDogKGQzIGFzIGFueSkuZWFzZUN1YmljT3V0O1xufVxuIl19","export const AX_CHARTS = 'ACOREX_CHARTS';\nexport * from './lib/chart-base.interface';\nexport * from './lib/chart-colors';\nexport * from './lib/chart-utils';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVhfQ0hBUlRTID0gJ0FDT1JFWF9DSEFSVFMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtYmFzZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhcnQtY29sb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXJ0LXV0aWxzJztcbiJdfQ==","/**\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":["../../../../packages/charts/src/lib/chart-colors.ts","../../../../packages/charts/src/lib/chart-component-base.ts","../../../../packages/charts/src/lib/chart-utils.ts","../../../../packages/charts/src/index.ts","../../../../packages/charts/src/acorex-charts.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n// Default color palette for charts\nexport const AX_CHART_COLOR_PALETTE = new InjectionToken<string[]>(\n 'AX_CHART_COLOR_PALETTE',\n {\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\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\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: number, palette: string[]): string {\n return palette[index % palette.length];\n}\n","import { afterNextRender, Directive, ElementRef, inject, signal } from '@angular/core';\n\n/**\n * Base component class for all chart components\n * Copied from @acorex/cdk/common NXComponent to remove external dependency\n */\n@Directive()\nexport abstract class AXChartComponent {\n #elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n #isRendered = signal(false);\n\n protected isRendered = this.#isRendered.asReadonly();\n\n #afterNextRender = afterNextRender(() => {\n if (!this.isRendered()) {\n this.nativeElement['__axContext__'] = this;\n this.#isRendered.set(true);\n }\n });\n\n /**\n * Gets the native HTML element of the component\n */\n public get nativeElement(): HTMLElement {\n return this.#elementRef.nativeElement;\n }\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 public getHostElement<T = HTMLElement>(): T {\n return this.#elementRef.nativeElement as T;\n }\n}\n","export type TooltipPosition = { x: number; y: number };\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(\n containerRect: DOMRect,\n tooltipRect: DOMRect | null,\n clientX: number,\n clientY: number,\n gap: number,\n): TooltipPosition {\n const cursorX = clientX - containerRect.left;\n const cursorY = clientY - containerRect.top;\n\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\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\n // Determine best horizontal position\n let x: number;\n if (spaceRight >= tooltipRect.width + gap) {\n // Position to the right of cursor\n x = cursorX + gap;\n } else if (spaceLeft >= tooltipRect.width + gap) {\n // Position to the left of cursor\n x = cursorX - tooltipRect.width - gap;\n } else {\n // Center horizontally if neither side has enough space\n x = Math.max(\n gap,\n Math.min((containerRect.width - tooltipRect.width) / 2, containerRect.width - tooltipRect.width - gap),\n );\n }\n\n // Determine best vertical position\n let y: number;\n if (spaceBelow >= tooltipRect.height + gap) {\n // Position below cursor\n y = cursorY + gap;\n } else if (spaceAbove >= tooltipRect.height + gap) {\n // Position above cursor\n y = cursorY - tooltipRect.height - gap;\n } else {\n // Center vertically if neither direction has enough space\n y = Math.max(\n gap,\n Math.min((containerRect.height - tooltipRect.height) / 2, containerRect.height - tooltipRect.height - gap),\n );\n }\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\n return { x, y };\n}\n\n/**\n * Map easing option to d3 easing function name that callers can lookup on d3.\n * Keeps mapping consistent across charts.\n */\nexport type D3EasingName =\n | 'easeLinear'\n | 'easePolyInOut'\n | 'easePolyIn'\n | 'easePolyOut'\n | 'easeCubic'\n | 'easeCubicIn'\n | 'easeCubicOut'\n | 'easeCubicInOut';\n\nexport function mapEasingName(option?: string): D3EasingName {\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/**\n * Formats large numbers with abbreviations (K, M, B, T)\n */\nexport function formatLargeNumber(value: number): string {\n if (value === 0) return '0';\n\n const absValue = Math.abs(value);\n const sign = value < 0 ? '-' : '';\n\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\n return value.toLocaleString();\n}\n\n/**\n * Returns a D3 easing function for the provided option.\n */\nexport function getEasingFunction(d3: typeof import('d3'), option?: string): (t: number) => number {\n const name = mapEasingName(option);\n const easing = (d3 as any)[name];\n return typeof easing === 'function' ? easing : (d3 as any).easeCubicOut;\n}\n","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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
- import * as _acorex_cdk_common from '@acorex/cdk/common';
2
- import { AXAnimationEasing } from '@acorex/cdk/common';
1
+ import * as _acorex_charts from '@acorex/charts';
2
+ import { AXAnimationEasing, AXChartComponent, AXChartComponentBase } from '@acorex/charts';
3
3
  import * as d3 from 'd3';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { OnDestroy, InjectionToken } from '@angular/core';
6
- import { AXChartComponentBase } from '@acorex/charts';
7
6
  import { AXChartTooltipData } from '@acorex/charts/chart-tooltip';
8
7
 
9
8
  /**
@@ -91,8 +90,7 @@ type AXGaugeChartValue = number;
91
90
  * Gauge Chart Component
92
91
  * Renders a semi-circular gauge chart with animated needle and thresholds
93
92
  */
94
- declare class AXGaugeChartComponent implements OnDestroy, AXChartComponentBase {
95
- private cdr;
93
+ declare class AXGaugeChartComponent extends AXChartComponent implements OnDestroy, AXChartComponentBase {
96
94
  /** Chart value input */
97
95
  value: _angular_core.InputSignal<number>;
98
96
  /** Chart options input */
@@ -104,6 +102,7 @@ declare class AXGaugeChartComponent implements OnDestroy, AXChartComponentBase {
104
102
  private _rendered;
105
103
  private _prevValue;
106
104
  private _prevOptionsString;
105
+ private _lastContainerRect;
107
106
  private _tooltipVisible;
108
107
  private _tooltipPosition;
109
108
  private _tooltipData;
@@ -130,10 +129,13 @@ declare class AXGaugeChartComponent implements OnDestroy, AXChartComponentBase {
130
129
  }[];
131
130
  label?: string;
132
131
  animationDuration?: number;
133
- animationEasing?: _acorex_cdk_common.AXAnimationEasing;
132
+ animationEasing?: _acorex_charts.AXAnimationEasing;
134
133
  messages?: AXGaugeChartMessages;
135
134
  }>;
136
135
  private readonly TOOLTIP_GAP;
136
+ private readonly HALF_CIRCLE_RADIANS;
137
+ private readonly QUARTER_CIRCLE_RADIANS;
138
+ private readonly DEGREES_PER_RADIAN;
137
139
  constructor();
138
140
  ngOnDestroy(): void;
139
141
  /**
@@ -151,7 +153,7 @@ declare class AXGaugeChartComponent implements OnDestroy, AXChartComponentBase {
151
153
  /**
152
154
  * Updates only the value display and dial position without recreating the chart
153
155
  */
154
- protected updateValueAndDial(value: number): void;
156
+ updateValueAndDial(value: number): void;
155
157
  /**
156
158
  * Draw the background arc
157
159
  */
@@ -170,6 +172,7 @@ declare class AXGaugeChartComponent implements OnDestroy, AXChartComponentBase {
170
172
  private showSingleRangeTooltip;
171
173
  /**
172
174
  * Updates the tooltip position based on the mouse event
175
+ * For gauge charts, we need simpler coordinate handling since D3 events are already in container coordinates
173
176
  */
174
177
  private updateTooltipPosition;
175
178
  /**
@@ -1,8 +1,7 @@
1
- import * as _acorex_cdk_common from '@acorex/cdk/common';
2
- import { AXAnimationEasing, NXNativeEvent, NXComponent } from '@acorex/cdk/common';
1
+ import * as _acorex_charts from '@acorex/charts';
2
+ import { AXAnimationEasing, NXNativeEvent, AXChartComponent, AXChartComponentBase } from '@acorex/charts';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { TemplateRef, InjectionToken } from '@angular/core';
5
- import { AXChartComponentBase } from '@acorex/charts';
6
5
 
7
6
  /**
8
7
  * Represents a node in the hierarchy chart.
@@ -286,7 +285,7 @@ interface AXHierarchyChartToggleEvent {
286
285
  *
287
286
  * Supports both default node styling and custom node templates.
288
287
  */
289
- declare class AXHierarchyChartComponent extends NXComponent implements AXChartComponentBase {
288
+ declare class AXHierarchyChartComponent extends AXChartComponent implements AXChartComponentBase {
290
289
  private chartContainer;
291
290
  customNodeTemplate: _angular_core.Signal<TemplateRef<AXHierarchyChartNodeContext>>;
292
291
  private ngZone;
@@ -324,7 +323,7 @@ declare class AXHierarchyChartComponent extends NXComponent implements AXChartCo
324
323
  expandAll?: boolean;
325
324
  className?: string;
326
325
  animationDuration?: number;
327
- animationEasing?: _acorex_cdk_common.AXAnimationEasing;
326
+ animationEasing?: _acorex_charts.AXAnimationEasing;
328
327
  messages?: AXHierarchyChartMessages;
329
328
  }>;
330
329
  protected effectiveMessages: _angular_core.Signal<{
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as i0 from '@angular/core';
1
2
  import { InjectionToken } from '@angular/core';
2
3
  import * as d3 from 'd3';
3
4
 
@@ -16,13 +17,47 @@ declare const AX_CHART_COLOR_PALETTE: InjectionToken<string[]>;
16
17
  */
17
18
  declare function getChartColor(index: number, palette: string[]): string;
18
19
 
20
+ /**
21
+ * Base component class for all chart components
22
+ * Copied from @acorex/cdk/common NXComponent to remove external dependency
23
+ */
24
+ declare abstract class AXChartComponent {
25
+ #private;
26
+ protected isRendered: i0.Signal<boolean>;
27
+ /**
28
+ * Gets the native HTML element of the component
29
+ */
30
+ get nativeElement(): HTMLElement;
31
+ /**
32
+ * Gets the host HTML element of the component (alias for nativeElement)
33
+ * @returns T - The native DOM element associated with this component
34
+ */
35
+ getHostElement<T = HTMLElement>(): T;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXChartComponent, never>;
37
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXChartComponent, never, never, {}, {}, never, never, true, never>;
38
+ }
39
+
40
+ /**
41
+ * Animation easing options for charts
42
+ * Copied from @acorex/cdk/common to remove external dependency
43
+ */
44
+ type AXAnimationEasing = 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'cubic' | 'cubic-in' | 'cubic-out' | 'cubic-in-out';
45
+ /**
46
+ * Native event wrapper
47
+ * Copied from @acorex/cdk/common to remove external dependency
48
+ */
49
+ interface NXNativeEvent {
50
+ nativeEvent: MouseEvent | TouchEvent;
51
+ sender: any;
52
+ }
53
+
19
54
  type TooltipPosition = {
20
55
  x: number;
21
56
  y: number;
22
57
  };
23
58
  /**
24
- * Compute edge-aware tooltip position with right-first placement,
25
- * left fallback, vertical centering, and clamping within bounds.
59
+ * Compute edge-aware tooltip position with intelligent placement,
60
+ * considering available space in all directions and preventing overflow.
26
61
  */
27
62
  declare function computeTooltipPosition(containerRect: DOMRect, tooltipRect: DOMRect | null, clientX: number, clientY: number, gap: number): TooltipPosition;
28
63
  /**
@@ -31,6 +66,10 @@ declare function computeTooltipPosition(containerRect: DOMRect, tooltipRect: DOM
31
66
  */
32
67
  type D3EasingName = 'easeLinear' | 'easePolyInOut' | 'easePolyIn' | 'easePolyOut' | 'easeCubic' | 'easeCubicIn' | 'easeCubicOut' | 'easeCubicInOut';
33
68
  declare function mapEasingName(option?: string): D3EasingName;
69
+ /**
70
+ * Formats large numbers with abbreviations (K, M, B, T)
71
+ */
72
+ declare function formatLargeNumber(value: number): string;
34
73
  /**
35
74
  * Returns a D3 easing function for the provided option.
36
75
  */
@@ -38,5 +77,5 @@ declare function getEasingFunction(d3: typeof d3, option?: string): (t: number)
38
77
 
39
78
  declare const AX_CHARTS = "ACOREX_CHARTS";
40
79
 
41
- export { AX_CHARTS, AX_CHART_COLOR_PALETTE, computeTooltipPosition, getChartColor, getEasingFunction, mapEasingName };
42
- export type { AXChartComponentBase, D3EasingName, TooltipPosition };
80
+ export { AXChartComponent, AX_CHARTS, AX_CHART_COLOR_PALETTE, computeTooltipPosition, formatLargeNumber, getChartColor, getEasingFunction, mapEasingName };
81
+ export type { AXAnimationEasing, AXChartComponentBase, D3EasingName, NXNativeEvent, TooltipPosition };
@@ -1,9 +1,8 @@
1
- import * as _acorex_cdk_common from '@acorex/cdk/common';
2
- import { AXAnimationEasing, NXNativeEvent, NXComponent } from '@acorex/cdk/common';
1
+ import * as _acorex_charts from '@acorex/charts';
2
+ import { AXAnimationEasing, NXNativeEvent, AXChartComponent, AXChartComponentBase } from '@acorex/charts';
3
3
  import * as d3 from 'd3';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { OnInit, AfterViewInit, OnDestroy, InjectionToken } from '@angular/core';
6
- import { AXChartComponentBase } from '@acorex/charts';
7
6
  import { AXChartLegendCompatible, AXChartLegendItem } from '@acorex/charts/chart-legend';
8
7
  import { AXChartTooltipData } from '@acorex/charts/chart-tooltip';
9
8
 
@@ -103,7 +102,7 @@ type AXLineChartValue = AXLineChartData[] | AXLineChartData;
103
102
  /**
104
103
  * Line Chart Component for rendering data as lines with interactive hover effects and animations
105
104
  */
106
- declare class AXLineChartComponent extends NXComponent implements OnInit, AfterViewInit, OnDestroy, AXChartLegendCompatible, AXChartComponentBase {
105
+ declare class AXLineChartComponent extends AXChartComponent implements OnInit, AfterViewInit, OnDestroy, AXChartLegendCompatible, AXChartComponentBase {
107
106
  #private;
108
107
  data: _angular_core.InputSignal<AXLineChartValue>;
109
108
  options: _angular_core.InputSignal<AXLineChartOption>;
@@ -134,7 +133,6 @@ declare class AXLineChartComponent extends NXComponent implements OnInit, AfterV
134
133
  protected tooltipData: _angular_core.Signal<AXChartTooltipData>;
135
134
  private configToken;
136
135
  private chartColors;
137
- private platform;
138
136
  protected effectiveOptions: _angular_core.Signal<{
139
137
  width?: number;
140
138
  height?: number;
@@ -161,7 +159,7 @@ declare class AXLineChartComponent extends NXComponent implements OnInit, AfterV
161
159
  fillOpacity?: number;
162
160
  showCrosshair?: boolean;
163
161
  animationDuration?: number;
164
- animationEasing?: _acorex_cdk_common.AXAnimationEasing;
162
+ animationEasing?: _acorex_charts.AXAnimationEasing;
165
163
  messages?: AXLineChartMessages;
166
164
  }>;
167
165
  protected effectiveMessages: _angular_core.Signal<{
@@ -172,7 +170,73 @@ declare class AXLineChartComponent extends NXComponent implements OnInit, AfterV
172
170
  noDataIcon: string;
173
171
  allHiddenIcon: string;
174
172
  }>;
173
+ private readonly MIN_DIMENSION;
174
+ private readonly MIN_CONTAINER_DIMENSION;
175
+ private readonly DEFAULT_MARGIN_TOP;
176
+ private readonly DEFAULT_MARGIN_RIGHT;
177
+ private readonly DEFAULT_MARGIN_BOTTOM;
178
+ private readonly DEFAULT_MARGIN_LEFT;
179
+ private readonly MIN_MARGIN_BOTTOM;
180
+ private readonly MIN_MARGIN_LEFT;
181
+ private readonly MAX_EXTRA_MARGIN;
182
+ private readonly DEFAULT_LINE_WIDTH;
183
+ private readonly DEFAULT_POINT_RADIUS;
184
+ private readonly DEFAULT_FILL_OPACITY;
185
+ private readonly LINE_HIGHLIGHT_MULTIPLIER;
186
+ private readonly POINT_HIGHLIGHT_MULTIPLIER;
187
+ private readonly POINT_STROKE_WIDTH;
188
+ private readonly POINT_HOVER_STROKE_WIDTH;
189
+ private readonly GRID_DASH_ARRAY;
190
+ private readonly CROSSHAIR_DASH_ARRAY;
191
+ private readonly CROSSHAIR_OPACITY;
192
+ private readonly HOVER_TRANSITION_DURATION;
193
+ private readonly ANIMATION_END_BUFFER;
194
+ private readonly POINT_ANIMATION_DELAY_MS;
195
+ private readonly POINT_ANIMATION_DELAY_RATIO;
196
+ private readonly POINT_ANIMATION_DURATION_RATIO;
197
+ private readonly AXIS_LABEL_FONT_SIZE;
198
+ private readonly CHAR_WIDTH_RATIO;
199
+ private readonly FONT_WIDTH_MULTIPLIER;
200
+ private readonly MAX_LABEL_LENGTH;
201
+ private readonly MIN_FONT_SIZE_X;
202
+ private readonly MAX_FONT_SIZE_X;
203
+ private readonly MIN_FONT_SIZE_Y;
204
+ private readonly MAX_FONT_SIZE_Y;
205
+ private readonly FONT_PADDING;
206
+ private readonly Y_AXIS_PADDING;
207
+ private readonly MAX_POINTS_TO_RENDER;
208
+ private readonly POINT_COORDINATE_PRECISION;
209
+ private readonly MANY_ITEMS_THRESHOLD;
210
+ private readonly VERY_MANY_ITEMS_THRESHOLD;
175
211
  private readonly TOOLTIP_GAP;
212
+ /**
213
+ * Normalizes input data to consistent array format with originalIndex
214
+ */
215
+ private normalizeData;
216
+ /**
217
+ * Gets unique identifier for a series
218
+ */
219
+ private getSeriesIdentifier;
220
+ /**
221
+ * Calculates dynamic font size based on available space
222
+ */
223
+ private calculateDynamicFontSize;
224
+ /**
225
+ * Creates a unique key for point coordinates (for overlap detection)
226
+ */
227
+ private createPointKey;
228
+ /**
229
+ * Removes series elements from the chart
230
+ */
231
+ private removeSeriesElements;
232
+ /**
233
+ * Truncates long labels with ellipsis
234
+ */
235
+ private truncateLabel;
236
+ /**
237
+ * Calculates maximum width needed for Y-axis tick labels
238
+ */
239
+ private calculateMaxYAxisTickLabelWidth;
176
240
  ngOnInit(): void;
177
241
  ngAfterViewInit(): void;
178
242
  ngOnDestroy(): void;
@@ -199,7 +263,6 @@ declare class AXLineChartComponent extends NXComponent implements OnInit, AfterV
199
263
  private showNoDataMessage;
200
264
  private showAllSeriesHiddenMessage;
201
265
  private handleOverlappingPointsHover;
202
- private getEasingFunction;
203
266
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLineChartComponent, never>;
204
267
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLineChartComponent, "ax-line-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; }, never, never, true, never>;
205
268
  }
package/package.json CHANGED
@@ -1,9 +1,7 @@
1
1
  {
2
2
  "name": "@acorex/charts",
3
- "version": "21.0.0-next.6",
3
+ "version": "21.0.0-next.60",
4
4
  "peerDependencies": {
5
- "@acorex/cdk": "21.0.0-next.6",
6
- "@acorex/core": "21.0.0-next.6",
7
5
  "@angular/common": "^20.0.0",
8
6
  "@angular/core": "^20.0.0",
9
7
  "d3": "^7.9.0"