@acorex/charts 22.0.0-next.2 → 22.0.0-next.21
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/fesm2022/acorex-charts-bar-chart.mjs +20 -50
- package/fesm2022/acorex-charts-bar-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-chart-legend.mjs +16 -11
- package/fesm2022/acorex-charts-chart-legend.mjs.map +1 -1
- package/fesm2022/acorex-charts-chart-tooltip.mjs +8 -7
- package/fesm2022/acorex-charts-chart-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-charts-donut-chart.mjs +19 -10
- package/fesm2022/acorex-charts-donut-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-funnel-chart.mjs +40 -20
- package/fesm2022/acorex-charts-funnel-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-gauge-chart.mjs +13 -14
- package/fesm2022/acorex-charts-gauge-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-heatmap-chart.mjs +36 -20
- package/fesm2022/acorex-charts-heatmap-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-hierarchy-chart.mjs +25 -64
- package/fesm2022/acorex-charts-hierarchy-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-line-chart.mjs +21 -14
- package/fesm2022/acorex-charts-line-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts.mjs +29 -25
- package/fesm2022/acorex-charts.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-charts-bar-chart.d.ts +4 -4
- package/types/acorex-charts-chart-legend.d.ts +7 -1
- package/types/acorex-charts-donut-chart.d.ts +4 -0
- package/types/acorex-charts-funnel-chart.d.ts +3 -4
- package/types/acorex-charts-gauge-chart.d.ts +1 -0
- package/types/acorex-charts-heatmap-chart.d.ts +3 -2
- package/types/acorex-charts-hierarchy-chart.d.ts +0 -8
- package/types/acorex-charts-line-chart.d.ts +4 -0
- package/types/acorex-charts.d.ts +4 -3
|
@@ -1 +1 @@
|
|
|
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-empty-state.ts","../../../../packages/charts/src/lib/chart-messages.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 interface AXChartEmptyMessageContent {\n icon: string;\n title: string;\n help?: string;\n}\n\n/**\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(\n d3: { select: (node: HTMLElement) => D3EmptySelection },\n container: HTMLElement,\n message: AXChartEmptyMessageContent,\n): void {\n const root = d3.select(container);\n root.selectAll('svg, .ax-chart-empty').remove();\n\n const card = root.append('div').attr('class', 'ax-chart-empty').append('div').attr('class', 'ax-chart-empty__card');\n\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\n card.append('div').attr('class', 'ax-chart-empty__title').text(message.title);\n\n if (message.help) {\n card.append('div').attr('class', 'ax-chart-empty__help').text(message.help);\n }\n}\n\n/** Minimal D3 selection surface used by empty-state rendering. */\ninterface D3EmptySelection {\n selectAll: (selector: string) => { remove: () => unknown };\n append: (tag: string) => D3EmptyAppend;\n}\n\ninterface D3EmptyAppend {\n attr: (name: string, value: string) => D3EmptyAppend;\n append: (tag: string) => D3EmptyAppend;\n html: (value: string) => D3EmptyAppend;\n text: (value: string) => D3EmptyAppend;\n}\n","/**\n * Shared empty-state copy for all charts.\n * Per-chart configs may override icons; default title/help stay consistent.\n */\nexport interface AXChartMessages {\n noData?: string;\n noDataHelp?: string;\n allHidden?: string;\n allHiddenHelp?: string;\n noDataIcon?: string;\n allHiddenIcon?: string;\n}\n\nexport const AX_CHART_DEFAULT_MESSAGES: Required<AXChartMessages> = {\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};\n\nexport function mergeChartMessages(\n defaults: AXChartMessages = {},\n overrides?: AXChartMessages,\n): Required<AXChartMessages> {\n return {\n ...AX_CHART_DEFAULT_MESSAGES,\n ...defaults,\n ...overrides,\n };\n}\n\n/** Shallow merge options while preserving nested margin/messages defaults. */\nexport function mergeChartOptions<T extends object>(defaults: T, options?: Partial<T> | null): T {\n const opts = (options ?? {}) as Partial<T>;\n const result = { ...defaults, ...opts } as T & {\n messages?: AXChartMessages;\n margins?: object;\n margin?: object;\n };\n\n const defaultRecord = defaults as {\n messages?: AXChartMessages;\n margins?: object;\n margin?: object;\n };\n const optionRecord = opts as {\n messages?: AXChartMessages;\n margins?: object;\n margin?: object;\n };\n\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\n return result;\n}\n","export type TooltipPosition = { x: number; y: number };\n\n/**\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: HTMLElement, cssColor: string): string {\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\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\n return resolved || cssColor;\n}\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 containerLeft = containerRect.left;\n const containerTop = containerRect.top;\n const containerRight = containerRect.right;\n const containerBottom = containerRect.bottom;\n\n if (!tooltipRect) {\n return {\n x: Math.min(clientX + gap, containerRight - gap),\n y: Math.max(containerTop + gap, Math.min(clientY + gap, containerBottom - gap)),\n };\n }\n\n const spaceRight = containerRight - clientX;\n const spaceLeft = clientX - containerLeft;\n const spaceBelow = containerBottom - clientY;\n const spaceAbove = clientY - containerTop;\n\n let x: number;\n if (spaceRight >= tooltipRect.width + gap) {\n x = clientX + gap;\n } else if (spaceLeft >= tooltipRect.width + gap) {\n x = clientX - tooltipRect.width - gap;\n } else {\n x = Math.max(\n containerLeft + gap,\n Math.min(\n containerLeft + (containerRect.width - tooltipRect.width) / 2,\n containerRight - tooltipRect.width - gap,\n ),\n );\n }\n\n let y: number;\n if (spaceBelow >= tooltipRect.height + gap) {\n y = clientY + gap;\n } else if (spaceAbove >= tooltipRect.height + gap) {\n y = clientY - tooltipRect.height - gap;\n } else {\n y = Math.max(\n containerTop + gap,\n Math.min(\n containerTop + (containerRect.height - tooltipRect.height) / 2,\n containerBottom - tooltipRect.height - gap,\n ),\n );\n }\n\n x = Math.max(containerLeft + gap, Math.min(x, containerRight - tooltipRect.width - gap));\n y = Math.max(containerTop + gap, Math.min(y, containerBottom - 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\n/** Unique DOM id prefix per chart instance (SVG filters/gradients). */\nexport function createChartInstanceId(prefix = 'ax-chart'): string {\n return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;\n}\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: number | undefined, fallbackPercent = 80): number {\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","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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"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-empty-state.ts","../../../../packages/charts/src/lib/chart-messages.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 interface AXChartEmptyMessageContent {\n icon: string;\n title: string;\n help?: string;\n}\n\n/**\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(\n d3: { select: (node: HTMLElement) => D3EmptySelection },\n container: HTMLElement,\n message: AXChartEmptyMessageContent,\n): void {\n const root = d3.select(container);\n root.selectAll('svg, .ax-chart-empty').remove();\n\n const card = root.append('div').attr('class', 'ax-chart-empty').append('div').attr('class', 'ax-chart-empty__card');\n\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\n card.append('div').attr('class', 'ax-chart-empty__title').text(message.title);\n\n if (message.help) {\n card.append('div').attr('class', 'ax-chart-empty__help').text(message.help);\n }\n}\n\n/** Minimal D3 selection surface used by empty-state rendering. */\ninterface D3EmptySelection {\n selectAll: (selector: string) => { remove: () => unknown };\n append: (tag: string) => D3EmptyAppend;\n}\n\ninterface D3EmptyAppend {\n attr: (name: string, value: string) => D3EmptyAppend;\n append: (tag: string) => D3EmptyAppend;\n html: (value: string) => D3EmptyAppend;\n text: (value: string) => D3EmptyAppend;\n}\n","/**\n * Shared empty-state copy for all charts.\n * Per-chart configs may override icons; default title/help stay consistent.\n */\nexport interface AXChartMessages {\n noData?: string;\n noDataHelp?: string;\n allHidden?: string;\n allHiddenHelp?: string;\n noDataIcon?: string;\n allHiddenIcon?: string;\n}\n\nexport const AX_CHART_DEFAULT_MESSAGES: Required<AXChartMessages> = {\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};\n\nexport function mergeChartMessages(\n defaults: AXChartMessages = {},\n overrides?: AXChartMessages,\n): Required<AXChartMessages> {\n return {\n ...AX_CHART_DEFAULT_MESSAGES,\n ...defaults,\n ...overrides,\n };\n}\n\n/** Shallow merge options while preserving nested margin/messages defaults. */\nexport function mergeChartOptions<T extends object>(defaults: T, options?: Partial<T> | null): T {\n const opts = (options ?? {}) as Partial<T>;\n const result = { ...defaults, ...opts } as T & {\n messages?: AXChartMessages;\n margins?: object;\n margin?: object;\n };\n\n const defaultRecord = defaults as {\n messages?: AXChartMessages;\n margins?: object;\n margin?: object;\n };\n const optionRecord = opts as {\n messages?: AXChartMessages;\n margins?: object;\n margin?: object;\n };\n\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\n return result;\n}\n","export type TooltipPosition = { x: number; y: number };\n\n/**\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: HTMLElement, cssColor: string): string {\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\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\n return resolved || cssColor;\n}\n\n/**\n * Compute edge-aware tooltip position relative to the chart container,\n * using pointer viewport coordinates (clientX/clientY) and keeping the\n * tooltip inside the container bounds.\n */\nexport function computeTooltipPosition(\n containerEl: HTMLElement,\n tooltipRect: DOMRect | null,\n clientX: number,\n clientY: number,\n gap: number,\n): TooltipPosition {\n const containerRect = containerEl.getBoundingClientRect();\n const pointerX = clientX - containerRect.left - containerEl.clientLeft;\n const pointerY = clientY - containerRect.top - containerEl.clientTop;\n const containerWidth = containerEl.clientWidth;\n const containerHeight = containerEl.clientHeight;\n\n if (!tooltipRect) {\n return {\n x: Math.min(Math.max(gap, pointerX + gap), containerWidth - gap),\n y: Math.min(Math.max(gap, pointerY + gap), containerHeight - gap),\n };\n }\n\n const tooltipWidth = tooltipRect.width;\n const tooltipHeight = tooltipRect.height;\n const spaceRight = containerWidth - pointerX;\n const spaceLeft = pointerX;\n const spaceBelow = containerHeight - pointerY;\n const spaceAbove = pointerY;\n\n let x: number;\n if (spaceRight >= tooltipWidth + gap) {\n x = pointerX + gap;\n } else if (spaceLeft >= tooltipWidth + gap) {\n x = pointerX - tooltipWidth - gap;\n } else {\n x = Math.max(\n gap,\n Math.min((containerWidth - tooltipWidth) / 2, containerWidth - tooltipWidth - gap),\n );\n }\n\n let y: number;\n if (spaceBelow >= tooltipHeight + gap) {\n y = pointerY + gap;\n } else if (spaceAbove >= tooltipHeight + gap) {\n y = pointerY - tooltipHeight - gap;\n } else {\n y = Math.max(\n gap,\n Math.min((containerHeight - tooltipHeight) / 2, containerHeight - tooltipHeight - gap),\n );\n }\n\n x = Math.max(gap, Math.min(x, containerWidth - tooltipWidth - gap));\n y = Math.max(gap, Math.min(y, containerHeight - tooltipHeight - 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\n/** Unique DOM id prefix per chart instance (SVG filters/gradients). */\nexport function createChartInstanceId(prefix = 'ax-chart'): string {\n return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;\n}\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: number | undefined, fallbackPercent = 80): number {\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","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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -165,12 +165,15 @@ declare class AXBarChartComponent extends AXChartComponent implements OnDestroy,
|
|
|
165
165
|
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
166
166
|
private readonly hiddenBars;
|
|
167
167
|
private readonly hiddenSeries;
|
|
168
|
+
private readonly _legendStateVersion;
|
|
169
|
+
readonly legendStateVersion: _angular_core.Signal<number>;
|
|
168
170
|
private readonly isClusteredMode;
|
|
169
171
|
private readonly visibleData;
|
|
170
172
|
private readonly hasVisibleData;
|
|
171
173
|
private isClusteredData;
|
|
172
174
|
private getClusterSeriesLabels;
|
|
173
175
|
constructor();
|
|
176
|
+
private bumpLegendState;
|
|
174
177
|
ngOnDestroy(): void;
|
|
175
178
|
/**
|
|
176
179
|
* Loads D3.js dynamically
|
|
@@ -241,10 +244,7 @@ declare class AXBarChartComponent extends AXChartComponent implements OnDestroy,
|
|
|
241
244
|
private handleBarHover;
|
|
242
245
|
private updateTooltipPosition;
|
|
243
246
|
private scheduleTooltipPosition;
|
|
244
|
-
|
|
245
|
-
* Enhanced tooltip positioning that considers chart boundaries and prevents overflow
|
|
246
|
-
*/
|
|
247
|
-
private computeEnhancedTooltipPosition;
|
|
247
|
+
private cancelTooltipPosition;
|
|
248
248
|
/**
|
|
249
249
|
* Handles bar click event
|
|
250
250
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { Signal, ElementRef } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Defines a legend item
|
|
@@ -17,6 +17,10 @@ interface AXChartLegendItem {
|
|
|
17
17
|
* Interface that chart components should implement to work with the legend
|
|
18
18
|
*/
|
|
19
19
|
interface AXChartLegendCompatible {
|
|
20
|
+
/**
|
|
21
|
+
* Increments when legend-affecting chart state changes (data, visibility toggles).
|
|
22
|
+
*/
|
|
23
|
+
legendStateVersion?: Signal<number>;
|
|
20
24
|
/**
|
|
21
25
|
* Returns the data items for the legend
|
|
22
26
|
*/
|
|
@@ -69,6 +73,7 @@ declare class AXChartLegendComponent {
|
|
|
69
73
|
* Reference to legend container for measuring dimensions
|
|
70
74
|
*/
|
|
71
75
|
legendContainer: _angular_core.Signal<ElementRef<HTMLDivElement>>;
|
|
76
|
+
private readonly interactionVersion;
|
|
72
77
|
protected showValues: _angular_core.Signal<boolean>;
|
|
73
78
|
protected showPercentage: _angular_core.Signal<boolean>;
|
|
74
79
|
protected containerClass: _angular_core.Signal<{
|
|
@@ -89,6 +94,7 @@ declare class AXChartLegendComponent {
|
|
|
89
94
|
* Handle mouse leave on legend items
|
|
90
95
|
*/
|
|
91
96
|
protected onItemMouseLeave(item: AXChartLegendItem): void;
|
|
97
|
+
protected hasValidPercentage(value: number | undefined): boolean;
|
|
92
98
|
/**
|
|
93
99
|
* Get legend container dimensions
|
|
94
100
|
*/
|
|
@@ -138,6 +138,8 @@ declare class AXDonutChartComponent extends AXChartComponent implements OnDestro
|
|
|
138
138
|
private svg;
|
|
139
139
|
private pieData;
|
|
140
140
|
private hiddenSegments;
|
|
141
|
+
private readonly _legendStateVersion;
|
|
142
|
+
readonly legendStateVersion: _angular_core.Signal<number>;
|
|
141
143
|
private _initialized;
|
|
142
144
|
private _rendered;
|
|
143
145
|
private _isInitialAnimating;
|
|
@@ -174,6 +176,7 @@ declare class AXDonutChartComponent extends AXChartComponent implements OnDestro
|
|
|
174
176
|
protected isSegmentHidden(id: string): boolean;
|
|
175
177
|
constructor();
|
|
176
178
|
private readonly dataChangeEffect;
|
|
179
|
+
private bumpLegendState;
|
|
177
180
|
/**
|
|
178
181
|
* Highlights a specific segment by ID
|
|
179
182
|
* @param id The segment ID to highlight, or null to clear highlight
|
|
@@ -271,6 +274,7 @@ declare class AXDonutChartComponent extends AXChartComponent implements OnDestro
|
|
|
271
274
|
private handleSegmentLeave;
|
|
272
275
|
private updateTooltipPosition;
|
|
273
276
|
private scheduleTooltipPosition;
|
|
277
|
+
private cancelTooltipPosition;
|
|
274
278
|
/**
|
|
275
279
|
* Adds center display with total value
|
|
276
280
|
*/
|
|
@@ -64,10 +64,6 @@ interface AXFunnelChartOption {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
declare class AXFunnelChartComponent extends AXChartComponent implements OnDestroy, AXChartComponentBase {
|
|
67
|
-
/**
|
|
68
|
-
* Fixed SVG coordinate system; the graphic scales to the container via `width`/`height: 100%` + `viewBox`.
|
|
69
|
-
* Margins and geometry are expressed in these units (same numeric scale as a ~400px reference viewport).
|
|
70
|
-
*/
|
|
71
67
|
private static readonly VIEW_BOX_SIZE;
|
|
72
68
|
data: _angular_core.InputSignal<AXFunnelData[]>;
|
|
73
69
|
options: _angular_core.InputSignal<AXFunnelChartOption>;
|
|
@@ -82,6 +78,8 @@ declare class AXFunnelChartComponent extends AXChartComponent implements OnDestr
|
|
|
82
78
|
private _tooltipPosition;
|
|
83
79
|
private _tooltipData;
|
|
84
80
|
private _tooltipRafId;
|
|
81
|
+
private _pendingTooltipCoords;
|
|
82
|
+
private readonly TOOLTIP_GAP;
|
|
85
83
|
protected tooltipVisible: _angular_core.Signal<boolean>;
|
|
86
84
|
protected tooltipPosition: _angular_core.Signal<{
|
|
87
85
|
x: number;
|
|
@@ -108,6 +106,7 @@ declare class AXFunnelChartComponent extends AXChartComponent implements OnDestr
|
|
|
108
106
|
private showTooltip;
|
|
109
107
|
private updateTooltipPosition;
|
|
110
108
|
private scheduleTooltipPosition;
|
|
109
|
+
private cancelTooltipPosition;
|
|
111
110
|
private hideTooltip;
|
|
112
111
|
cleanupChart(): void;
|
|
113
112
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFunnelChartComponent, never>;
|
|
@@ -187,6 +187,7 @@ declare class AXGaugeChartComponent extends AXChartComponent implements OnDestro
|
|
|
187
187
|
private showSingleRangeTooltip;
|
|
188
188
|
private updateTooltipPosition;
|
|
189
189
|
private scheduleTooltipPosition;
|
|
190
|
+
private cancelTooltipPosition;
|
|
190
191
|
/**
|
|
191
192
|
* Hides the tooltip
|
|
192
193
|
*/
|
|
@@ -73,7 +73,6 @@ interface AXHeatmapChartOption {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
declare class AXHeatmapChartComponent extends AXChartComponent implements OnDestroy {
|
|
76
|
-
/** Fixed `viewBox` side; chart scales with CSS `width` / `height` on the host container. */
|
|
77
76
|
private static readonly VIEW_BOX_SIZE;
|
|
78
77
|
private readonly CHAR_WIDTH_RATIO;
|
|
79
78
|
private readonly ROTATION_TOLERANCE_SMALL_DATASET;
|
|
@@ -105,11 +104,12 @@ declare class AXHeatmapChartComponent extends AXChartComponent implements OnDest
|
|
|
105
104
|
}>;
|
|
106
105
|
protected tooltipData: _angular_core.WritableSignal<AXChartTooltipData>;
|
|
107
106
|
private _tooltipRafId;
|
|
107
|
+
private _pendingTooltipCoords;
|
|
108
|
+
private readonly TOOLTIP_GAP;
|
|
108
109
|
protected effectiveOptions: _angular_core.Signal<AXHeatmapChartOption>;
|
|
109
110
|
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
110
111
|
constructor();
|
|
111
112
|
private init;
|
|
112
|
-
updateChart(): void;
|
|
113
113
|
private renderChart;
|
|
114
114
|
private hashStringToUint32;
|
|
115
115
|
/** `resolvedRgb` must be a computed `rgb()` / `rgba()` string (e.g. from {@link resolveCssColorInContext}). */
|
|
@@ -118,6 +118,7 @@ declare class AXHeatmapChartComponent extends AXChartComponent implements OnDest
|
|
|
118
118
|
private showTooltip;
|
|
119
119
|
private updateTooltipPos;
|
|
120
120
|
private scheduleTooltipPosition;
|
|
121
|
+
private cancelTooltipPosition;
|
|
121
122
|
private hideTooltip;
|
|
122
123
|
ngOnDestroy(): void;
|
|
123
124
|
private drawAxisLabels;
|
|
@@ -309,10 +309,6 @@ declare class AXHierarchyChartComponent extends AXChartComponent implements AXCh
|
|
|
309
309
|
protected effectiveOptions: _angular_core.Signal<AXHierarchyChartOption>;
|
|
310
310
|
protected effectiveMessages: _angular_core.Signal<Required<_acorex_charts.AXChartMessages>>;
|
|
311
311
|
constructor();
|
|
312
|
-
/**
|
|
313
|
-
* Initialize the expanded state for all nodes
|
|
314
|
-
*/
|
|
315
|
-
private initializeExpandedState;
|
|
316
312
|
/**
|
|
317
313
|
* Dynamically load D3.js to reduce initial bundle size
|
|
318
314
|
*/
|
|
@@ -348,10 +344,6 @@ declare class AXHierarchyChartComponent extends AXChartComponent implements AXCh
|
|
|
348
344
|
ngOnDestroy(): void;
|
|
349
345
|
private destroyEmbeddedViews;
|
|
350
346
|
updateChart(): void;
|
|
351
|
-
/**
|
|
352
|
-
* Get D3 easing function from string name
|
|
353
|
-
*/
|
|
354
|
-
private getEasingFunction;
|
|
355
347
|
/**
|
|
356
348
|
* Shows a message when no data is available
|
|
357
349
|
*/
|
|
@@ -127,6 +127,8 @@ declare class AXLineChartComponent extends AXChartComponent implements OnInit, A
|
|
|
127
127
|
private _initialized;
|
|
128
128
|
private _rendered;
|
|
129
129
|
private hiddenSeries;
|
|
130
|
+
private readonly _legendStateVersion;
|
|
131
|
+
readonly legendStateVersion: _angular_core.Signal<number>;
|
|
130
132
|
private _fullNormalizedData;
|
|
131
133
|
protected tooltipVisible: _angular_core.Signal<boolean>;
|
|
132
134
|
protected tooltipPosition: _angular_core.Signal<{
|
|
@@ -251,6 +253,7 @@ declare class AXLineChartComponent extends AXChartComponent implements OnInit, A
|
|
|
251
253
|
*/
|
|
252
254
|
private calculateMaxYAxisTickLabelWidth;
|
|
253
255
|
ngOnInit(): void;
|
|
256
|
+
private bumpLegendState;
|
|
254
257
|
ngAfterViewInit(): void;
|
|
255
258
|
ngOnDestroy(): void;
|
|
256
259
|
getLegendItems(): AXChartLegendItem[];
|
|
@@ -274,6 +277,7 @@ declare class AXLineChartComponent extends AXChartComponent implements OnInit, A
|
|
|
274
277
|
private showCrosshairLines;
|
|
275
278
|
private updateTooltipPosition;
|
|
276
279
|
private scheduleTooltipPosition;
|
|
280
|
+
private cancelTooltipPosition;
|
|
277
281
|
private handlePointClick;
|
|
278
282
|
private showNoDataMessage;
|
|
279
283
|
private showAllSeriesHiddenMessage;
|
package/types/acorex-charts.d.ts
CHANGED
|
@@ -106,10 +106,11 @@ type TooltipPosition = {
|
|
|
106
106
|
*/
|
|
107
107
|
declare function resolveCssColorInContext(scopeElement: HTMLElement, cssColor: string): string;
|
|
108
108
|
/**
|
|
109
|
-
* Compute edge-aware tooltip position
|
|
110
|
-
*
|
|
109
|
+
* Compute edge-aware tooltip position relative to the chart container,
|
|
110
|
+
* using pointer viewport coordinates (clientX/clientY) and keeping the
|
|
111
|
+
* tooltip inside the container bounds.
|
|
111
112
|
*/
|
|
112
|
-
declare function computeTooltipPosition(
|
|
113
|
+
declare function computeTooltipPosition(containerEl: HTMLElement, tooltipRect: DOMRect | null, clientX: number, clientY: number, gap: number): TooltipPosition;
|
|
113
114
|
/**
|
|
114
115
|
* Map easing option to d3 easing function name that callers can lookup on d3.
|
|
115
116
|
* Keeps mapping consistent across charts.
|