@acorex/charts 21.0.2-next.35 → 21.0.2-next.37

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.
Files changed (31) hide show
  1. package/fesm2022/acorex-charts-bar-chart.mjs +17 -17
  2. package/fesm2022/acorex-charts-bar-chart.mjs.map +1 -1
  3. package/fesm2022/acorex-charts-chart-legend.mjs +13 -13
  4. package/fesm2022/acorex-charts-chart-legend.mjs.map +1 -1
  5. package/fesm2022/acorex-charts-chart-tooltip.mjs +10 -10
  6. package/fesm2022/acorex-charts-chart-tooltip.mjs.map +1 -1
  7. package/fesm2022/acorex-charts-donut-chart.mjs +17 -17
  8. package/fesm2022/acorex-charts-donut-chart.mjs.map +1 -1
  9. package/fesm2022/acorex-charts-funnel-chart.mjs +13 -15
  10. package/fesm2022/acorex-charts-funnel-chart.mjs.map +1 -1
  11. package/fesm2022/acorex-charts-gauge-chart.mjs +13 -13
  12. package/fesm2022/acorex-charts-gauge-chart.mjs.map +1 -1
  13. package/fesm2022/acorex-charts-heatmap-chart.mjs +12 -12
  14. package/fesm2022/acorex-charts-heatmap-chart.mjs.map +1 -1
  15. package/fesm2022/acorex-charts-hierarchy-chart.mjs +18 -18
  16. package/fesm2022/acorex-charts-hierarchy-chart.mjs.map +1 -1
  17. package/fesm2022/acorex-charts-line-chart.mjs +15 -18
  18. package/fesm2022/acorex-charts-line-chart.mjs.map +1 -1
  19. package/fesm2022/acorex-charts.mjs +4 -4
  20. package/fesm2022/acorex-charts.mjs.map +1 -1
  21. package/package.json +13 -12
  22. package/{bar-chart/index.d.ts → types/acorex-charts-bar-chart.d.ts} +2 -1
  23. package/{donut-chart/index.d.ts → types/acorex-charts-donut-chart.d.ts} +2 -1
  24. package/{funnel-chart/index.d.ts → types/acorex-charts-funnel-chart.d.ts} +2 -1
  25. package/{gauge-chart/index.d.ts → types/acorex-charts-gauge-chart.d.ts} +2 -1
  26. package/{heatmap-chart/index.d.ts → types/acorex-charts-heatmap-chart.d.ts} +2 -1
  27. package/{hierarchy-chart/index.d.ts → types/acorex-charts-hierarchy-chart.d.ts} +3 -2
  28. package/{line-chart/index.d.ts → types/acorex-charts-line-chart.d.ts} +2 -1
  29. /package/{chart-legend/index.d.ts → types/acorex-charts-chart-legend.d.ts} +0 -0
  30. /package/{chart-tooltip/index.d.ts → types/acorex-charts-chart-tooltip.d.ts} +0 -0
  31. /package/{index.d.ts → types/acorex-charts.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-charts-heatmap-chart.mjs","sources":["../tmp-esm2022/heatmap-chart/lib/heatmap-chart.config.js","../tmp-esm2022/heatmap-chart/lib/heatmap-chart.component.js","../tmp-esm2022/heatmap-chart/acorex-charts-heatmap-chart.js"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nexport const AXHeatmapChartDefaultConfig = {\n margin: { top: 30, right: 30, bottom: 60, left: 60 },\n color: 'rgb(var(--ax-sys-color-primary-500))',\n cellPadding: 0.05,\n borderRadius: 2,\n showXAxis: true,\n showYAxis: true,\n rotateXAxisLabels: 'auto',\n showTooltip: true,\n animationDuration: 800,\n animationEasing: 'cubic-out',\n messages: {\n noData: 'No data available',\n noDataHelp: 'Provide X, Y, and Value data to render the heatmap',\n noDataIcon: 'fa-light fa-grid-2',\n },\n};\nexport const AX_HEATMAP_CHART_CONFIG = new InjectionToken('AX_HEATMAP_CHART_CONFIG', {\n providedIn: 'root',\n factory: () => AXHeatmapChartDefaultConfig,\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhdG1hcC1jaGFydC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvaGVhdG1hcC1jaGFydC9zcmMvbGliL2hlYXRtYXAtY2hhcnQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXlCO0lBQy9ELE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7SUFDcEQsS0FBSyxFQUFFLHNDQUFzQztJQUM3QyxXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsQ0FBQztJQUNmLFNBQVMsRUFBRSxJQUFJO0lBQ2YsU0FBUyxFQUFFLElBQUk7SUFDZixpQkFBaUIsRUFBRSxNQUFNO0lBQ3pCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGlCQUFpQixFQUFFLEdBQUc7SUFDdEIsZUFBZSxFQUFFLFdBQVc7SUFDNUIsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFLG1CQUFtQjtRQUMzQixVQUFVLEVBQUUsb0RBQW9EO1FBQ2hFLFVBQVUsRUFBRSxvQkFBb0I7S0FDakM7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQXVCLHlCQUF5QixFQUFFO0lBQ3pHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQywyQkFBMkI7Q0FDM0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYSGVhdG1hcENoYXJ0T3B0aW9uIH0gZnJvbSAnLi9oZWF0bWFwLWNoYXJ0LnR5cGUnO1xuXG5leHBvcnQgY29uc3QgQVhIZWF0bWFwQ2hhcnREZWZhdWx0Q29uZmlnOiBBWEhlYXRtYXBDaGFydE9wdGlvbiA9IHtcbiAgbWFyZ2luOiB7IHRvcDogMzAsIHJpZ2h0OiAzMCwgYm90dG9tOiA2MCwgbGVmdDogNjAgfSxcbiAgY29sb3I6ICdyZ2IodmFyKC0tYXgtc3lzLWNvbG9yLXByaW1hcnktNTAwKSknLFxuICBjZWxsUGFkZGluZzogMC4wNSxcbiAgYm9yZGVyUmFkaXVzOiAyLFxuICBzaG93WEF4aXM6IHRydWUsXG4gIHNob3dZQXhpczogdHJ1ZSxcbiAgcm90YXRlWEF4aXNMYWJlbHM6ICdhdXRvJyxcbiAgc2hvd1Rvb2x0aXA6IHRydWUsXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiA4MDAsXG4gIGFuaW1hdGlvbkVhc2luZzogJ2N1YmljLW91dCcsXG4gIG1lc3NhZ2VzOiB7XG4gICAgbm9EYXRhOiAnTm8gZGF0YSBhdmFpbGFibGUnLFxuICAgIG5vRGF0YUhlbHA6ICdQcm92aWRlIFgsIFksIGFuZCBWYWx1ZSBkYXRhIHRvIHJlbmRlciB0aGUgaGVhdG1hcCcsXG4gICAgbm9EYXRhSWNvbjogJ2ZhLWxpZ2h0IGZhLWdyaWQtMicsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgQVhfSEVBVE1BUF9DSEFSVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhIZWF0bWFwQ2hhcnRPcHRpb24+KCdBWF9IRUFUTUFQX0NIQVJUX0NPTkZJRycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBBWEhlYXRtYXBDaGFydERlZmF1bHRDb25maWcsXG59KTtcbiJdfQ==","import { AXChartComponent, computeTooltipPosition, getEasingFunction, resolveCssColorInContext } from '@acorex/charts';\nimport { AXChartTooltipComponent } from '@acorex/charts/chart-tooltip';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { map } from 'rxjs';\nimport { AX_HEATMAP_CHART_CONFIG } from './heatmap-chart.config';\nimport * as i0 from \"@angular/core\";\nexport class AXHeatmapChartComponent extends AXChartComponent {\n /** Fixed `viewBox` side; chart scales with CSS `width` / `height` on the host container. */\n static VIEW_BOX_SIZE = 400;\n // X-axis layout (aligned with bar-chart heuristics)\n CHAR_WIDTH_RATIO = 0.65;\n ROTATION_TOLERANCE_SMALL_DATASET = 1.4;\n SMALL_DATASET_THRESHOLD = 6;\n MANY_ITEMS_THRESHOLD = 20;\n VERY_MANY_ITEMS_THRESHOLD = 50;\n MAX_LABEL_LENGTH = 20;\n TICK_AREA_PADDING = 6;\n X_AXIS_TITLE_GAP = 10;\n X_AXIS_TITLE_FONT_SIZE = 14;\n MIN_FONT_SIZE_X_AXIS = 8;\n MAX_FONT_SIZE_X_AXIS = 14;\n // Inject config at the top level\n defaultConfig = inject(AX_HEATMAP_CHART_CONFIG);\n // Inputs\n data = input([], ...(ngDevMode ? [{ debugName: \"data\" }] : []));\n options = input({}, ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n // Outputs\n /** Emitted when a heatmap cell is clicked */\n cellClick = output();\n // View Child\n containerRef = viewChild.required('chartContainer');\n // Internal State\n svg;\n d3;\n _d3Ready = signal(false, ...(ngDevMode ? [{ debugName: \"_d3Ready\" }] : []));\n platformService = inject(AXPlatform);\n isRtl = signal(this.platformService.isRtl(), ...(ngDevMode ? [{ debugName: \"isRtl\" }] : []));\n directionSub;\n // Tooltip State\n tooltipVisible = signal(false, ...(ngDevMode ? [{ debugName: \"tooltipVisible\" }] : []));\n tooltipPosition = signal({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: \"tooltipPosition\" }] : []));\n tooltipData = signal({ title: '', value: '' }, ...(ngDevMode ? [{ debugName: \"tooltipData\" }] : []));\n _tooltipRafId = null;\n // Computed options (referencing the already injected defaultConfig)\n effectiveOptions = computed(() => ({\n ...this.defaultConfig,\n ...this.options(),\n }), ...(ngDevMode ? [{ debugName: \"effectiveOptions\" }] : []));\n constructor() {\n super();\n afterNextRender(() => {\n this.init();\n this.directionSub = this.platformService.directionChange.pipe(map((i) => i.data === 'rtl')).subscribe((isRtl) => {\n this.isRtl.set(isRtl);\n if (this._d3Ready()) {\n this.renderChart();\n }\n });\n });\n // Reactive render when data, options, or D3 readiness change\n effect(() => {\n this.data();\n this.effectiveOptions();\n if (this._d3Ready()) {\n this.renderChart();\n }\n });\n }\n async init() {\n try {\n this.d3 = await import('d3');\n this._d3Ready.set(true);\n }\n catch (err) {\n console.error('Heatmap: Initialization failed', err);\n }\n }\n updateChart() {\n this.renderChart();\n }\n renderChart() {\n const container = this.containerRef().nativeElement;\n const data = this.data() || [];\n // Clear SVG if data is empty\n if (data.length === 0) {\n if (this.svg)\n this.svg.remove();\n this.svg = null;\n return;\n }\n const options = this.effectiveOptions();\n const width = AXHeatmapChartComponent.VIEW_BOX_SIZE;\n const height = AXHeatmapChartComponent.VIEW_BOX_SIZE;\n const isRtl = this.isRtl();\n const baseMargin = options.margin || { top: 20, right: 20, bottom: 40, left: 40 };\n // When rendering RTL, the Y axis is on the right; swap side margins so tick labels\n // have the same breathing room they get on the left in LTR.\n let margin = isRtl\n ? { top: baseMargin.top, right: baseMargin.left, bottom: baseMargin.bottom, left: baseMargin.right }\n : { ...baseMargin };\n const xKeys = Array.from(new Set(data.map((d) => d.x.toString())));\n const yKeys = Array.from(new Set(data.map((d) => d.y.toString())));\n let innerWidth = width - margin.left - margin.right;\n const cellPad = options.cellPadding ?? 0;\n const xScaleProbe = this.d3\n .scaleBand()\n .domain(xKeys)\n .range(isRtl ? [innerWidth, 0] : [0, innerWidth])\n .padding(cellPad);\n const xTickFontSize = this.getHeatmapXTickFontSize(innerWidth, xKeys.length);\n const { tickXKeys, formatXTick } = this.getHeatmapXTickPlan(xKeys);\n const longestXLabel = xKeys.reduce((acc, k) => {\n const t = formatXTick(k);\n return t.length > acc.length ? t : acc;\n }, '');\n const estimatedLabelWidth = longestXLabel.length * xTickFontSize * this.CHAR_WIDTH_RATIO;\n const step = xScaleProbe.step();\n const rotateX = this.shouldRotateHeatmapXLabels(options.rotateXAxisLabels, estimatedLabelWidth, step, xKeys.length);\n const tickAreaHeight = rotateX\n ? estimatedLabelWidth * Math.SQRT1_2 + xTickFontSize * Math.SQRT1_2 + this.TICK_AREA_PADDING\n : xTickFontSize + this.TICK_AREA_PADDING + 2;\n const xAxisTitleReserve = options.xAxisLabel?.trim() ? this.X_AXIS_TITLE_GAP + 16 : 0;\n margin = { ...margin, bottom: Math.max(margin.bottom, tickAreaHeight + xAxisTitleReserve) };\n innerWidth = width - margin.left - margin.right;\n const innerHeight = Math.max(1, height - margin.top - margin.bottom);\n // Create/Select SVG root\n if (!this.svg) {\n this.svg = this.d3\n .select(container)\n .append('svg')\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .style('display', 'block');\n this.svg.append('g').attr('class', 'chart-group');\n }\n this.svg.attr('viewBox', `0 0 ${width} ${height}`);\n const g = this.svg.select('.chart-group').attr('transform', `translate(${margin.left},${margin.top})`);\n // --- Scales ---\n const xScale = this.d3\n .scaleBand()\n .domain(xKeys)\n .range(isRtl ? [innerWidth, 0] : [0, innerWidth])\n .padding(cellPad);\n const yScale = this.d3.scaleBand().domain(yKeys).range([innerHeight, 0]).padding(cellPad);\n const valueExtent = this.d3.extent(data, (d) => d.value);\n const minValue = Number.isFinite(valueExtent[0]) ? valueExtent[0] : 0;\n const maxValue = Number.isFinite(valueExtent[1]) ? valueExtent[1] : minValue + 1;\n const palette = options.colors?.filter(Boolean) ?? [];\n const baseColor = options.color ?? 'rgb(99, 102, 241)';\n const rangeMin = options.valueRange?.min ?? minValue;\n const rangeMax = options.valueRange?.max ?? maxValue;\n const resolvedColorCache = new Map();\n const resolvePaletteColor = (c) => {\n const hit = resolvedColorCache.get(c);\n if (hit !== undefined)\n return hit;\n const out = resolveCssColorInContext(container, c);\n resolvedColorCache.set(c, out);\n return out;\n };\n const resolvedBase = resolvePaletteColor(baseColor);\n const getCellColor = (d) => {\n // If a palette is provided, choose a stable \"random\" color per cell.\n if (palette.length > 0) {\n const key = `${d.x}-${d.y}`;\n const idx = this.hashStringToUint32(key) % palette.length;\n return resolvePaletteColor(palette[idx] ?? baseColor);\n }\n const span = rangeMax - rangeMin;\n const t = span === 0 ? 1 : (d.value - rangeMin) / span;\n const clamped = Math.max(0, Math.min(1, t));\n return this.applyIntensityToResolvedRgb(resolvedBase, clamped);\n };\n // --- Axes ---\n const xAxisBuilder = this.d3\n .axisBottom(xScale)\n .tickSize(0)\n .tickFormat((d) => formatXTick(String(d)));\n if (tickXKeys.length < xKeys.length) {\n xAxisBuilder.tickValues(tickXKeys);\n }\n this.drawAxis(g, 'x-axis', xAxisBuilder, 0, innerHeight, options.showXAxis, isRtl);\n g.select('.x-axis').attr('direction', 'ltr');\n this.styleHeatmapXAxisTicks(g, xTickFontSize, rotateX);\n if (isRtl) {\n this.drawAxis(g, 'y-axis', this.d3.axisRight(yScale).tickSize(0), innerWidth, 0, options.showYAxis, isRtl);\n }\n else {\n this.drawAxis(g, 'y-axis', this.d3.axisLeft(yScale).tickSize(0), 0, 0, options.showYAxis, isRtl);\n }\n this.drawAxisLabels(g, innerWidth, innerHeight, options, isRtl, tickAreaHeight);\n // --- Cells with Data Join ---\n const easing = getEasingFunction(this.d3, options.animationEasing);\n g.selectAll('.cell')\n .data(data, (d) => `${d.x}-${d.y}`)\n .join((enter) => enter.append('rect').attr('class', 'cell').attr('opacity', 0).attr('fill', resolvedBase), (update) => update, (exit) => exit.transition().duration(200).attr('opacity', 0).remove())\n .on('mouseenter', (event, d) => this.showTooltip(event, d, getCellColor(d)))\n .on('mousemove', (event) => this.updateTooltipPos(event))\n .on('click', (_event, d) => this.cellClick.emit(d))\n .on('mouseleave', () => this.hideTooltip())\n .transition()\n .duration(options.animationDuration)\n .ease(easing)\n .attr('x', (d) => xScale(d.x.toString()))\n .attr('y', (d) => yScale(d.y.toString()))\n .attr('width', xScale.bandwidth())\n .attr('height', yScale.bandwidth())\n .attr('rx', options.borderRadius)\n .attr('ry', options.borderRadius)\n .attr('opacity', 1)\n .style('fill', (d) => getCellColor(d));\n }\n hashStringToUint32(input) {\n // Simple, fast, deterministic hash (djb2 variant)\n let hash = 5381;\n for (let i = 0; i < input.length; i++) {\n hash = (hash * 33) ^ input.charCodeAt(i);\n }\n return hash >>> 0;\n }\n /** `resolvedRgb` must be a computed `rgb()` / `rgba()` string (e.g. from {@link resolveCssColorInContext}). */\n applyIntensityToResolvedRgb(resolvedRgb, t) {\n const clamped = Math.max(0, Math.min(1, t));\n const parsed = this.d3.color(resolvedRgb);\n if (!parsed)\n return resolvedRgb;\n const rgb = this.d3.rgb(parsed);\n const minOpacity = 0.12;\n const opacity = minOpacity + clamped * (1 - minOpacity);\n return `rgba(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)},${opacity})`;\n }\n drawAxis(g, className, axisFn, x, y, visible = true, isRtl = false) {\n let axisG = g.select(`.${className}`);\n if (axisG.empty())\n axisG = g.append('g').attr('class', className);\n axisG\n .attr('transform', `translate(${x},${y})`)\n .style('display', visible ? 'block' : 'none')\n .call(axisFn)\n .call((g) => g.select('.domain').remove());\n // Ensure tick labels don't overlap the plot in RTL.\n // `text-anchor` is logical (depends on `direction`), so we set both explicitly.\n axisG.attr('direction', isRtl ? 'rtl' : 'ltr');\n axisG\n .selectAll('.tick text')\n .style('fill', 'rgba(var(--ax-comp-heatmap-chart-labels-color), 0.7)')\n .style('font-weight', '400');\n if (className === 'y-axis') {\n axisG.selectAll('.tick text').attr('text-anchor', 'end');\n }\n axisG.selectAll('line, path').style('stroke', 'rgba(var(--ax-comp-heatmap-chart-axis-color), 0.2)');\n }\n showTooltip(event, item, color) {\n if (!this.effectiveOptions().showTooltip)\n return;\n this.tooltipData.set({\n title: `${item.x} / ${item.y}`,\n value: item.label || item.value.toLocaleString(),\n color: color,\n });\n this.tooltipVisible.set(true);\n this.updateTooltipPos(event);\n }\n updateTooltipPos(event) {\n if (this._tooltipRafId)\n cancelAnimationFrame(this._tooltipRafId);\n this._tooltipRafId = requestAnimationFrame(() => {\n const containerEl = this.containerRef().nativeElement;\n const rect = containerEl.getBoundingClientRect();\n const tooltipEl = containerEl.querySelector('.chart-tooltip');\n const tooltipRect = tooltipEl?.getBoundingClientRect() ?? null;\n const pos = computeTooltipPosition(rect, tooltipRect, event.clientX + 10, event.clientY - 10, 10);\n this.tooltipPosition.set(pos);\n });\n }\n hideTooltip() {\n this.tooltipVisible.set(false);\n }\n ngOnDestroy() {\n this.directionSub?.unsubscribe();\n this.svg?.remove();\n if (this._tooltipRafId)\n cancelAnimationFrame(this._tooltipRafId);\n }\n drawAxisLabels(g, innerWidth, innerHeight, options, isRtl, xTickAreaHeight) {\n const xText = options.xAxisLabel?.trim();\n const yText = options.yAxisLabel?.trim();\n const labels = g.selectAll('.axis-labels').data([0]).join('g').attr('class', 'axis-labels');\n labels\n .selectAll('.ax-heatmap-chart-axis-label-x')\n .data(xText ? [xText] : [])\n .join((enter) => enter.append('text').attr('class', 'ax-heatmap-chart-axis-label ax-heatmap-chart-axis-label-x'), (update) => update, (exit) => exit.remove())\n .attr('x', innerWidth / 2)\n .attr('y', innerHeight + xTickAreaHeight + (xText ? this.X_AXIS_TITLE_GAP : 0))\n .attr('text-anchor', 'middle')\n .attr('direction', 'ltr')\n .style('font-size', `${this.X_AXIS_TITLE_FONT_SIZE}px`)\n .style('font-weight', '500')\n .style('fill', 'rgb(var(--ax-comp-heatmap-chart-axis-label-color))')\n .text((d) => d);\n const yX = isRtl ? innerWidth + 46 : -46;\n labels\n .selectAll('.ax-heatmap-chart-axis-label-y')\n .data(yText ? [yText] : [])\n .join((enter) => enter.append('text').attr('class', 'ax-heatmap-chart-axis-label ax-heatmap-chart-axis-label-y'), (update) => update, (exit) => exit.remove())\n .attr('transform', `translate(${yX}, ${innerHeight / 2}) rotate(-90)`)\n .attr('text-anchor', 'middle')\n .style('font-size', `${this.X_AXIS_TITLE_FONT_SIZE}px`)\n .style('font-weight', '500')\n .style('fill', 'rgb(var(--ax-comp-heatmap-chart-axis-label-color))')\n .text((d) => d);\n }\n getHeatmapXTickFontSize(innerWidth, itemCount) {\n const baseSize = Math.round(innerWidth / 50);\n let adjustedSize = baseSize;\n if (itemCount > this.VERY_MANY_ITEMS_THRESHOLD) {\n adjustedSize = Math.round(baseSize * 0.7);\n }\n else if (itemCount > this.MANY_ITEMS_THRESHOLD) {\n adjustedSize = Math.round(baseSize * 0.85);\n }\n return Math.max(this.MIN_FONT_SIZE_X_AXIS, Math.min(this.MAX_FONT_SIZE_X_AXIS, adjustedSize));\n }\n getHeatmapXTickPlan(xKeys) {\n const n = xKeys.length;\n const maxLabelLength = n > this.MANY_ITEMS_THRESHOLD ? 10 : this.MAX_LABEL_LENGTH;\n let tickXKeys = xKeys;\n if (n > this.VERY_MANY_ITEMS_THRESHOLD) {\n tickXKeys = xKeys.filter((_, i) => i % 5 === 0);\n }\n else if (n > this.MANY_ITEMS_THRESHOLD) {\n tickXKeys = xKeys.filter((_, i) => i % 2 === 0);\n }\n const formatXTick = (d) => this.truncateHeatmapLabel(d, maxLabelLength);\n return { tickXKeys, formatXTick };\n }\n truncateHeatmapLabel(label, maxLength) {\n if (label.length <= maxLength)\n return label;\n if (maxLength <= 1)\n return '…';\n return `${label.substring(0, maxLength - 1)}…`;\n }\n shouldRotateHeatmapXLabels(rotateOption, estimatedLabelWidth, step, domainCount) {\n if (rotateOption === true)\n return true;\n if (rotateOption === false)\n return false;\n if (domainCount === 0)\n return false;\n if (domainCount <= this.SMALL_DATASET_THRESHOLD) {\n return estimatedLabelWidth > step * this.ROTATION_TOLERANCE_SMALL_DATASET;\n }\n return estimatedLabelWidth > step;\n }\n styleHeatmapXAxisTicks(g, fontSize, rotated) {\n const texts = g\n .select('.x-axis')\n .selectAll('.tick text')\n .style('font-size', `${fontSize}px`)\n .style('font-weight', '400')\n .style('fill', 'rgba(var(--ax-comp-heatmap-chart-labels-color), 0.7)')\n .attr('direction', 'ltr');\n if (rotated) {\n texts.attr('transform', 'rotate(-45)').style('text-anchor', 'end').attr('dx', '-0.8em').attr('dy', '0.15em');\n }\n else {\n texts.attr('transform', null).style('text-anchor', 'middle').attr('dx', null).attr('dy', '0.71em');\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXHeatmapChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.3\", type: AXHeatmapChartComponent, isStandalone: true, selector: \"ax-heatmap-chart\", inputs: { data: { classPropertyName: \"data\", publicName: \"data\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: \"cellClick\" }, viewQueries: [{ propertyName: \"containerRef\", first: true, predicate: [\"chartContainer\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-heatmap-chart-container\\\" role=\\\"img\\\" #chartContainer>\\n <ax-chart-tooltip [data]=\\\"tooltipData()\\\" [position]=\\\"tooltipPosition()\\\" [visible]=\\\"tooltipVisible()\\\">\\n </ax-chart-tooltip>\\n @if (data()?.length === 0) {\\n <div class=\\\"ax-heatmap-no-data\\\">\\n <i [class]=\\\"effectiveOptions().messages?.noDataIcon\\\"></i>\\n <p class=\\\"ax-heatmap-no-data-text\\\">{{ effectiveOptions().messages?.noData }}</p>\\n </div>\\n }\\n</div>\\n\", styles: [\"ax-heatmap-chart{display:block;width:100%;height:100%;min-height:0;box-sizing:border-box;--ax-comp-heatmap-chart-axis-label-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-heatmap-chart-labels-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-heatmap-chart-axis-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-heatmap-chart-bg-color: 0, 0, 0, 0}ax-heatmap-chart .ax-heatmap-chart-container{position:relative;width:100%;height:100%;min-height:0;box-sizing:border-box;padding:1rem;overflow:hidden;background-color:rgba(var(--ax-comp-heatmap-chart-bg-color))}ax-heatmap-chart .ax-heatmap-chart-container svg{display:block;width:100%;height:100%;overflow:visible}ax-heatmap-chart .ax-heatmap-chart-container svg g:has(text){font-family:inherit}ax-heatmap-chart .ax-heatmap-chart-container svg .cell{transition:stroke .15s ease}ax-heatmap-chart .ax-heatmap-chart-container svg .cell:hover{stroke:rgba(var(--ax-comp-heatmap-chart-labels-color),.6);stroke-width:2px}ax-heatmap-chart .ax-heatmap-chart-container svg line,ax-heatmap-chart .ax-heatmap-chart-container svg .domain{stroke:rgba(var(--ax-comp-heatmap-chart-axis-color),.2)}ax-heatmap-chart .ax-heatmap-no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:rgba(var(--ax-comp-heatmap-chart-labels-color),.6)}ax-heatmap-chart .ax-heatmap-no-data i{font-size:2rem;margin-bottom:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: AXChartTooltipComponent, selector: \"ax-chart-tooltip\", inputs: [\"data\", \"position\", \"visible\", \"showPercentage\", \"style\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.3\", ngImport: i0, type: AXHeatmapChartComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-heatmap-chart', encapsulation: ViewEncapsulation.None, imports: [AXChartTooltipComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-heatmap-chart-container\\\" role=\\\"img\\\" #chartContainer>\\n <ax-chart-tooltip [data]=\\\"tooltipData()\\\" [position]=\\\"tooltipPosition()\\\" [visible]=\\\"tooltipVisible()\\\">\\n </ax-chart-tooltip>\\n @if (data()?.length === 0) {\\n <div class=\\\"ax-heatmap-no-data\\\">\\n <i [class]=\\\"effectiveOptions().messages?.noDataIcon\\\"></i>\\n <p class=\\\"ax-heatmap-no-data-text\\\">{{ effectiveOptions().messages?.noData }}</p>\\n </div>\\n }\\n</div>\\n\", styles: [\"ax-heatmap-chart{display:block;width:100%;height:100%;min-height:0;box-sizing:border-box;--ax-comp-heatmap-chart-axis-label-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-heatmap-chart-labels-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-heatmap-chart-axis-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-heatmap-chart-bg-color: 0, 0, 0, 0}ax-heatmap-chart .ax-heatmap-chart-container{position:relative;width:100%;height:100%;min-height:0;box-sizing:border-box;padding:1rem;overflow:hidden;background-color:rgba(var(--ax-comp-heatmap-chart-bg-color))}ax-heatmap-chart .ax-heatmap-chart-container svg{display:block;width:100%;height:100%;overflow:visible}ax-heatmap-chart .ax-heatmap-chart-container svg g:has(text){font-family:inherit}ax-heatmap-chart .ax-heatmap-chart-container svg .cell{transition:stroke .15s ease}ax-heatmap-chart .ax-heatmap-chart-container svg .cell:hover{stroke:rgba(var(--ax-comp-heatmap-chart-labels-color),.6);stroke-width:2px}ax-heatmap-chart .ax-heatmap-chart-container svg line,ax-heatmap-chart .ax-heatmap-chart-container svg .domain{stroke:rgba(var(--ax-comp-heatmap-chart-axis-color),.2)}ax-heatmap-chart .ax-heatmap-no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:rgba(var(--ax-comp-heatmap-chart-labels-color),.6)}ax-heatmap-chart .ax-heatmap-no-data i{font-size:2rem;margin-bottom:.5rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhdG1hcC1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jaGFydHMvaGVhdG1hcC1jaGFydC9zcmMvbGliL2hlYXRtYXAtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2hhcnRzL2hlYXRtYXAtY2hhcnQvc3JjL2xpYi9oZWF0bWFwLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSx1QkFBdUIsRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBV2pFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFDM0QsNEZBQTRGO0lBQ3BGLE1BQU0sQ0FBVSxhQUFhLEdBQUcsR0FBRyxDQUFDO0lBRTVDLG9EQUFvRDtJQUNuQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDeEIsZ0NBQWdDLEdBQUcsR0FBRyxDQUFDO0lBQ3ZDLHVCQUF1QixHQUFHLENBQUMsQ0FBQztJQUM1QixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDMUIseUJBQXlCLEdB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Q0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRyxDQUFDO0lBQ0gsQ0FBQzt1R0E1YVUsdUJBQXVCOzJGQUF2Qix1QkFBdUIsdWdCQzlCcEMsK2NBVUEsODhDRGlCWSx1QkFBdUI7OzJGQUd0Qix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUksV0FDNUIsQ0FBQyx1QkFBdUIsQ0FBQyxtQkFDakIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2hhcnRDb21wb25lbnQsIGNvbXB1dGVUb29sdGlwUG9zaXRpb24sIGdldEVhc2luZ0Z1bmN0aW9uLCByZXNvbHZlQ3NzQ29sb3JJbkNvbnRleHQgfSBmcm9tICdAYWNvcmV4L2NoYXJ0cyc7XG5pbXBvcnQgeyBBWENoYXJ0VG9vbHRpcENvbXBvbmVudCwgQVhDaGFydFRvb2x0aXBEYXRhIH0gZnJvbSAnQGFjb3JleC9jaGFydHMvY2hhcnQtdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhfSEVBVE1BUF9DSEFSVF9DT05GSUcgfSBmcm9tICcuL2hlYXRtYXAtY2hhcnQuY29uZmlnJztcbmltcG9ydCB7IEFYSGVhdG1hcENoYXJ0T3B0aW9uLCBBWEhlYXRtYXBEYXRhIH0gZnJvbSAnLi9oZWF0bWFwLWNoYXJ0LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1oZWF0bWFwLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYXRtYXAtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWF0bWFwLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWENoYXJ0VG9vbHRpcENvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWEhlYXRtYXBDaGFydENvbXBvbmVudCBleHRlbmRzIEFYQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiogRml4ZWQgYHZpZXdCb3hgIHNpZGU7IGNoYXJ0IHNjYWxlcyB3aXRoIENTUyBgd2lkdGhgIC8gYGhlaWdodGAgb24gdGhlIGhvc3QgY29udGFpbmVyLiAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBWSUVXX0JPWF9TSVpFID0gNDAwO1xuXG4gIC8vIFgtYXhpcyBsYXlvdXQgKGFsaWduZWQgd2l0aCBiYXItY2hhcnQgaGV1cmlzdGljcylcbiAgcHJpdmF0ZSByZWFkb25seSBDSEFSX1dJRFRIX1JBVElPID0gMC42NTtcbiAgcHJpdmF0ZSByZWFkb25seSBST1RBVElPTl9UT0xFUkFOQ0VfU01BTExfREFUQVNFVCA9IDEuNDtcbiAgcHJpdmF0ZSByZWFkb25seSBTTUFMTF9EQVRBU0VUX1RIUkVTSE9MRCA9IDY7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUFOWV9JVEVNU19USFJFU0hPTEQgPSAyMDtcbiAgcHJpdmF0ZSByZWFkb25seSBWRVJZX01BTllfSVRFTVNfVEhSRVNIT0xEID0gNTA7XG4gIHByaXZhdGUgcmVhZG9ubHkgTUFYX0xBQkVMX0xFTkdUSCA9IDIwO1xuICBwcml2YXRlIHJlYWRvbmx5IFRJQ0tfQVJFQV9QQURESU5HID0gNjtcbiAgcHJpdmF0ZSByZWFkb25seSBYX0FYSVNfVElUTEVfR0FQID0gMTA7XG4gIHByaXZhdGUgcmVhZG9ubHkgWF9BWElTX1RJVExFX0ZPTlRfU0laRSA9IDE0O1xuICBwcml2YXRlIHJlYWRvbmx5IE1JTl9GT05UX1NJWkVfWF9BWElTID0gODtcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfRk9OVF9TSVpFX1hfQVhJUyA9IDE0O1xuXG4gIC8vIEluamVjdCBjb25maWcgYXQgdGhlIHRvcCBsZXZlbFxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRDb25maWcgPSBpbmplY3QoQVhfSEVBVE1BUF9DSEFSVF9DT05GSUcpO1xuXG4gIC8vIElucHV0c1xuICBkYXRhID0gaW5wdXQ8QVhIZWF0bWFwRGF0YVtdPihbXSk7XG4gIG9wdGlvbnMgPSBpbnB1dDxBWEhlYXRtYXBDaGFydE9wdGlvbj4oe30pO1xuXG4gIC8vIE91dHB1dHNcbiAgLyoqIEVtaXR0ZWQgd2hlbiBhIGhlYXRtYXAgY2VsbCBpcyBjbGlja2VkICovXG4gIGNlbGxDbGljayA9IG91dHB1dDxBWEhlYXRtYXBEYXRhPigpO1xuXG4gIC8vIFZpZXcgQ2hpbGRcbiAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjaGFydENvbnRhaW5lcicpO1xuXG4gIC8vIEludGVybmFsIFN0YXRlXG4gIHByaXZhdGUgc3ZnOiBhbnk7XG4gIHByb3RlY3RlZCBkMzogYW55O1xuICBwcml2YXRlIF9kM1JlYWR5ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2UgPSBpbmplY3QoQVhQbGF0Zm9ybSk7XG4gIHByb3RlY3RlZCBpc1J0bCA9IHNpZ25hbCh0aGlzLnBsYXRmb3JtU2VydmljZS5pc1J0bCgpKTtcbiAgcHJpdmF0ZSBkaXJlY3Rpb25TdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgLy8gVG9vbHRpcCBTdGF0ZVxuICBwcm90ZWN0ZWQgdG9vbHRpcFZpc2libGUgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgdG9vbHRpcFBvc2l0aW9uID0gc2lnbmFsKHsgeDogMCwgeTogMCB9KTtcbiAgcHJvdGVjdGVkIHRvb2x0aXBEYXRhID0gc2lnbmFsPEFYQ2hhcnRUb29sdGlwRGF0YT4oeyB0aXRsZTogJycsIHZhbHVlOiAnJyB9KTtcbiAgcHJpdmF0ZSBfdG9vbHRpcFJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvLyBDb21wdXRlZCBvcHRpb25zIChyZWZlcmVuY2luZyB0aGUgYWxyZWFkeSBpbmplY3RlZCBkZWZhdWx0Q29uZmlnKVxuICBwcm90ZWN0ZWQgZWZmZWN0aXZlT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4udGhpcy5kZWZhdWx0Q29uZmlnLFxuICAgIC4uLnRoaXMub3B0aW9ucygpLFxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICAgIHRoaXMuZGlyZWN0aW9uU3ViID0gdGhpcy5wbGF0Zm9ybVNlcnZpY2UuZGlyZWN0aW9uQ2hhbmdlLnBpcGUobWFwKChpKSA9PiBpLmRhdGEgPT09ICdydGwnKSkuc3Vic2NyaWJlKChpc1J0bCkgPT4ge1xuICAgICAgICB0aGlzLmlzUnRsLnNldChpc1J0bCk7XG4gICAgICAgIGlmICh0aGlzLl9kM1JlYWR5KCkpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlckNoYXJ0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gUmVhY3RpdmUgcmVuZGVyIHdoZW4gZGF0YSwgb3B0aW9ucywgb3IgRDMgcmVhZGluZXNzIGNoYW5nZVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmRhdGEoKTtcbiAgICAgIHRoaXMuZWZmZWN0aXZlT3B0aW9ucygpO1xuICAgICAgaWYgKHRoaXMuX2QzUmVhZHkoKSkge1xuICAgICAgICB0aGlzLnJlbmRlckNoYXJ0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZDMgPSBhd2FpdCBpbXBvcnQoJ2QzJyk7XG5cbiAgICAgIHRoaXMuX2QzUmVhZHkuc2V0KHRydWUpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignSGVhdG1hcDogSW5pdGlhbGl6YXRpb24gZmFpbGVkJywgZXJyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDaGFydCgpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YSgpIHx8IFtdO1xuXG4gICAgLy8gQ2xlYXIgU1ZHIGlmIGRhdGEgaXMgZW1wdHlcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLnN2ZykgdGhpcy5zdmcucmVtb3ZlKCk7XG4gICAgICB0aGlzLnN2ZyA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWZmZWN0aXZlT3B0aW9ucygpO1xuICAgIGNvbnN0IHdpZHRoID0gQVhIZWF0bWFwQ2hhcnRDb21wb25lbnQuVklFV19CT1hfU0laRTtcbiAgICBjb25zdCBoZWlnaHQgPSBBWEhlYXRtYXBDaGFydENvbXBvbmVudC5WSUVXX0JPWF9TSVpFO1xuICAgIGNvbnN0IGlzUnRsID0gdGhpcy5pc1J0bCgpO1xuICAgIGNvbnN0IGJhc2VNYXJnaW4gPSBvcHRpb25zLm1hcmdpbiB8fCB7IHRvcDogMjAsIHJpZ2h0OiAyMCwgYm90dG9tOiA0MCwgbGVmdDogNDAgfTtcbiAgICAvLyBXaGVuIHJlbmRlcmluZyBSVEwsIHRoZSBZIGF4aXMgaXMgb24gdGhlIHJpZ2h0OyBzd2FwIHNpZGUgbWFyZ2lucyBzbyB0aWNrIGxhYmVsc1xuICAgIC8vIGhhdmUgdGhlIHNhbWUgYnJlYXRoaW5nIHJvb20gdGhleSBnZXQgb24gdGhlIGxlZnQgaW4gTFRSLlxuICAgIGxldCBtYXJnaW4gPSBpc1J0bFxuICAgICAgPyB7IHRvcDogYmFzZU1hcmdpbi50b3AsIHJpZ2h0OiBiYXNlTWFyZ2luLmxlZnQsIGJvdHRvbTogYmFzZU1hcmdpbi5ib3R0b20sIGxlZnQ6IGJhc2VNYXJnaW4ucmlnaHQgfVxuICAgICAgOiB7IC4uLmJhc2VNYXJnaW4gfTtcblxuICAgIGNvbnN0IHhLZXlzID0gQXJyYXkuZnJvbShuZXcgU2V0KGRhdGEubWFwKChkKSA9PiBkLngudG9TdHJpbmcoKSkpKTtcbiAgICBjb25zdCB5S2V5cyA9IEFycmF5LmZyb20obmV3IFNldChkYXRhLm1hcCgoZCkgPT4gZC55LnRvU3RyaW5nKCkpKSk7XG5cbiAgICBsZXQgaW5uZXJXaWR0aCA9IHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XG4gICAgY29uc3QgY2VsbFBhZCA9IG9wdGlvbnMuY2VsbFBhZGRpbmcgPz8gMDtcbiAgICBjb25zdCB4U2NhbGVQcm9iZSA9IHRoaXMuZDNcbiAgICAgIC5zY2FsZUJhbmQoKVxuICAgICAgLmRvbWFpbih4S2V5cylcbiAgICAgIC5yYW5nZShpc1J0bCA/IFtpbm5lcldpZHRoLCAwXSA6IFswLCBpbm5lcldpZHRoXSlcbiAgICAgIC5wYWRkaW5nKGNlbGxQYWQpO1xuXG4gICAgY29uc3QgeFRpY2tGb250U2l6ZSA9IHRoaXMuZ2V0SGVhdG1hcFhUaWNrRm9udFNpemUoaW5uZXJXaWR0aCwgeEtleXMubGVuZ3RoKTtcbiAgICBjb25zdCB7IHRpY2tYS2V5cywgZm9ybWF0WFRpY2sgfSA9IHRoaXMuZ2V0SGVhdG1hcFhUaWNrUGxhbih4S2V5cyk7XG4gICAgY29uc3QgbG9uZ2VzdFhMYWJlbCA9IHhLZXlzLnJlZHVjZSgoYWNjLCBrKSA9PiB7XG4gICAgICBjb25zdCB0ID0gZm9ybWF0WFRpY2soayk7XG4gICAgICByZXR1cm4gdC5sZW5ndGggPiBhY2MubGVuZ3RoID8gdCA6IGFjYztcbiAgICB9LCAnJyk7XG4gICAgY29uc3QgZXN0aW1hdGVkTGFiZWxXaWR0aCA9IGxvbmdlc3RYTGFiZWwubGVuZ3RoICogeFRpY2tGb250U2l6ZSAqIHRoaXMuQ0hBUl9XSURUSF9SQVRJTztcbiAgICBjb25zdCBzdGVwID0geFNjYWxlUHJvYmUuc3RlcCgpO1xuICAgIGNvbnN0IHJvdGF0ZVggPSB0aGlzLnNob3VsZFJvdGF0ZUhlYXRtYXBYTGFiZWxzKG9wdGlvbnMucm90YXRlWEF4aXNMYWJlbHMsIGVzdGltYXRlZExhYmVsV2lkdGgsIHN0ZXAsIHhLZXlzLmxlbmd0aCk7XG5cbiAgICBjb25zdCB0aWNrQXJlYUhlaWdodCA9IHJvdGF0ZVhcbiAgICAgID8gZXN0aW1hdGVkTGFiZWxXaWR0aCAqIE1hdGguU1FSVDFfMiArIHhUaWNrRm9udFNpemUgKiBNYXRoLlNRUlQxXzIgKyB0aGlzLlRJQ0tfQVJFQV9QQURESU5HXG4gICAgICA6IHhUaWNrRm9udFNpemUgKyB0aGlzLlRJQ0tfQVJFQV9QQURESU5HICsgMjtcblxuICAgIGNvbnN0IHhBeGlzVGl0bGVSZXNlcnZlID0gb3B0aW9ucy54QXhpc0xhYmVsPy50cmltKCkgPyB0aGlzLlhfQVhJU19USVRMRV9HQVAgKyAxNiA6IDA7XG4gICAgbWFyZ2luID0geyAuLi5tYXJnaW4sIGJvdHRvbTogTWF0aC5tYXgobWFyZ2luLmJvdHRvbSwgdGlja0FyZWFIZWlnaHQgKyB4QXhpc1RpdGxlUmVzZXJ2ZSkgfTtcblxuICAgIGlubmVyV2lkdGggPSB3aWR0aCAtIG1hcmdpbi5sZWZ0IC0gbWFyZ2luLnJpZ2h0O1xuICAgIGNvbnN0IGlubmVySGVpZ2h0ID0gTWF0aC5tYXgoMSwgaGVpZ2h0IC0gbWFyZ2luLnRvcCAtIG1hcmdpbi5ib3R0b20pO1xuXG4gICAgLy8gQ3JlYXRlL1NlbGVjdCBTVkcgcm9vdFxuICAgIGlmICghdGhpcy5zdmcpIHtcbiAgICAgIHRoaXMuc3ZnID0gdGhpcy5kM1xuICAgICAgICAuc2VsZWN0KGNvbnRhaW5lcilcbiAgICAgICAgLmFwcGVuZCgnc3ZnJylcbiAgICAgICAgLmF0dHIoJ3dpZHRoJywgJzEwMCUnKVxuICAgICAgICAuYXR0cignaGVpZ2h0JywgJzEwMCUnKVxuICAgICAgICAuYXR0cigncHJlc2VydmVBc3BlY3RSYXRpbycsICd4TWlkWU1pZCBtZWV0JylcbiAgICAgICAgLnN0eWxlKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCdjbGFzcycsICdjaGFydC1ncm91cCcpO1xuICAgIH1cblxuICAgIHRoaXMuc3ZnLmF0dHIoJ3ZpZXdCb3gnLCBgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWApO1xuICAgIGNvbnN0IGcgPSB0aGlzLnN2Zy5zZWxlY3QoJy5jaGFydC1ncm91cCcpLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHttYXJnaW4ubGVmdH0sJHttYXJnaW4udG9wfSlgKTtcblxuICAgIC8vIC0tLSBTY2FsZXMgLS0tXG4gICAgY29uc3QgeFNjYWxlID0gdGhpcy5kM1xuICAgICAgLnNjYWxlQmFuZCgpXG4gICAgICAuZG9tYWluKHhLZXlzKVxuICAgICAgLnJhbmdlKGlzUnRsID8gW2lubmVyV2lkdGgsIDBdIDogWzAsIGlubmVyV2lkdGhdKVxuICAgICAgLnBhZGRpbmcoY2VsbFBhZCk7XG4gICAgY29uc3QgeVNjYWxlID0gdGhpcy5kMy5zY2FsZUJhbmQoKS5kb21haW4oeUtleXMpLnJhbmdlKFtpbm5lckhlaWdodCwgMF0pLnBhZGRpbmcoY2VsbFBhZCk7XG5cbiAgICBjb25zdCB2YWx1ZUV4dGVudCA9IHRoaXMuZDMuZXh0ZW50KGRhdGEsIChkOiBhbnkpID0+IGQudmFsdWUpIGFzIFtudW1iZXIsIG51bWJlcl07XG4gICAgY29uc3QgbWluVmFsdWUgPSBOdW1iZXIuaXNGaW5pdGUodmFsdWVFeHRlbnRbMF0pID8gdmFsdWVFeHRlbnRbMF0gOiAwO1xuICAgIGNvbnN0IG1heFZhbHVlID0gTnVtYmVyLmlzRmluaXRlKHZhbHVlRXh0ZW50WzFdKSA/IHZhbHVlRXh0ZW50WzFdIDogbWluVmFsdWUgKyAxO1xuICAgIGNvbnN0IHBhbGV0dGUgPSBvcHRpb25zLmNvbG9ycz8uZmlsdGVyKEJvb2xlYW4pID8/IFtdO1xuICAgIGNvbnN0IGJhc2VDb2xvciA9IG9wdGlvbnMuY29sb3IgPz8gJ3JnYig5OSwgMTAyLCAyNDEpJztcbiAgICBjb25zdCByYW5nZU1pbiA9IG9wdGlvbnMudmFsdWVSYW5nZT8ubWluID8/IG1pblZhbHVlO1xuICAgIGNvbnN0IHJhbmdlTWF4ID0gb3B0aW9ucy52YWx1ZVJhbmdlPy5tYXggPz8gbWF4VmFsdWU7XG5cbiAgICBjb25zdCByZXNvbHZlZENvbG9yQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGNvbnN0IHJlc29sdmVQYWxldHRlQ29sb3IgPSAoYzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IGhpdCA9IHJlc29sdmVkQ29sb3JDYWNoZS5nZXQoYyk7XG4gICAgICBpZiAoaGl0ICE9PSB1bmRlZmluZWQpIHJldHVybiBoaXQ7XG4gICAgICBjb25zdCBvdXQgPSByZXNvbHZlQ3NzQ29sb3JJbkNvbnRleHQoY29udGFpbmVyLCBjKTtcbiAgICAgIHJlc29sdmVkQ29sb3JDYWNoZS5zZXQoYywgb3V0KTtcbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfTtcbiAgICBjb25zdCByZXNvbHZlZEJhc2UgPSByZXNvbHZlUGFsZXR0ZUNvbG9yKGJhc2VDb2xvcik7XG5cbiAgICBjb25zdCBnZXRDZWxsQ29sb3IgPSAoZDogQVhIZWF0bWFwRGF0YSk6IHN0cmluZyA9PiB7XG4gICAgICAvLyBJZiBhIHBhbGV0dGUgaXMgcHJvdmlkZWQsIGNob29zZSBhIHN0YWJsZSBcInJhbmRvbVwiIGNvbG9yIHBlciBjZWxsLlxuICAgICAgaWYgKHBhbGV0dGUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBrZXkgPSBgJHtkLnh9LSR7ZC55fWA7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuaGFzaFN0cmluZ1RvVWludDMyKGtleSkgJSBwYWxldHRlLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVQYWxldHRlQ29sb3IocGFsZXR0ZVtpZHhdID8/IGJhc2VDb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwYW4gPSByYW5nZU1heCAtIHJhbmdlTWluO1xuICAgICAgY29uc3QgdCA9IHNwYW4gPT09IDAgPyAxIDogKGQudmFsdWUgLSByYW5nZU1pbikgLyBzcGFuO1xuICAgICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHQpKTtcbiAgICAgIHJldHVybiB0aGlzLmFwcGx5SW50ZW5zaXR5VG9SZXNvbHZlZFJnYihyZXNvbHZlZEJhc2UsIGNsYW1wZWQpO1xuICAgIH07XG5cbiAgICAvLyAtLS0gQXhlcyAtLS1cbiAgICBjb25zdCB4QXhpc0J1aWxkZXIgPSB0aGlzLmQzXG4gICAgICAuYXhpc0JvdHRvbSh4U2NhbGUpXG4gICAgICAudGlja1NpemUoMClcbiAgICAgIC50aWNrRm9ybWF0KChkOiBzdHJpbmcgfCBudW1iZXIpID0+IGZvcm1hdFhUaWNrKFN0cmluZyhkKSkpO1xuICAgIGlmICh0aWNrWEtleXMubGVuZ3RoIDwgeEtleXMubGVuZ3RoKSB7XG4gICAgICB4QXhpc0J1aWxkZXIudGlja1ZhbHVlcyh0aWNrWEtleXMpO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd0F4aXMoZywgJ3gtYXhpcycsIHhBeGlzQnVpbGRlciwgMCwgaW5uZXJIZWlnaHQsIG9wdGlvbnMuc2hvd1hBeGlzLCBpc1J0bCk7XG4gICAgZy5zZWxlY3QoJy54LWF4aXMnKS5hdHRyKCdkaXJlY3Rpb24nLCAnbHRyJyk7XG4gICAgdGhpcy5zdHlsZUhlYXRtYXBYQXhpc1RpY2tzKGcsIHhUaWNrRm9udFNpemUsIHJvdGF0ZVgpO1xuXG4gICAgaWYgKGlzUnRsKSB7XG4gICAgICB0aGlzLmRyYXdBeGlzKGcsICd5LWF4aXMnLCB0aGlzLmQzLmF4aXNSaWdodCh5U2NhbGUpLnRpY2tTaXplKDApLCBpbm5lcldpZHRoLCAwLCBvcHRpb25zLnNob3dZQXhpcywgaXNSdGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYXdBeGlzKGcsICd5LWF4aXMnLCB0aGlzLmQzLmF4aXNMZWZ0KHlTY2FsZSkudGlja1NpemUoMCksIDAsIDAsIG9wdGlvbnMuc2hvd1lBeGlzLCBpc1J0bCk7XG4gICAgfVxuICAgIHRoaXMuZHJhd0F4aXNMYWJlbHMoZywgaW5uZXJXaWR0aCwgaW5uZXJIZWlnaHQsIG9wdGlvbnMsIGlzUnRsLCB0aWNrQXJlYUhlaWdodCk7XG5cbiAgICAvLyAtLS0gQ2VsbHMgd2l0aCBEYXRhIEpvaW4gLS0tXG4gICAgY29uc3QgZWFzaW5nID0gZ2V0RWFzaW5nRnVuY3Rpb24odGhpcy5kMywgb3B0aW9ucy5hbmltYXRpb25FYXNpbmcpO1xuXG4gICAgZy5zZWxlY3RBbGwoJy5jZWxsJylcbiAgICAgIC5kYXRhKGRhdGEsIChkOiBhbnkpID0+IGAke2QueH0tJHtkLnl9YClcbiAgICAgIC5qb2luKFxuICAgICAgICAoZW50ZXI6IGFueSkgPT4gZW50ZXIuYXBwZW5kKCdyZWN0JykuYXR0cignY2xhc3MnLCAnY2VsbCcpLmF0dHIoJ29wYWNpdHknLCAwKS5hdHRyKCdmaWxsJywgcmVzb2x2ZWRCYXNlKSxcbiAgICAgICAgKHVwZGF0ZTogYW55KSA9PiB1cGRhdGUsXG4gICAgICAgIChleGl0OiBhbnkpID0+IGV4aXQudHJhbnNpdGlvbigpLmR1cmF0aW9uKDIwMCkuYXR0cignb3BhY2l0eScsIDApLnJlbW92ZSgpLFxuICAgICAgKVxuICAgICAgLm9uKCdtb3VzZWVudGVyJywgKGV2ZW50OiBhbnksIGQ6IEFYSGVhdG1hcERhdGEpID0+IHRoaXMuc2hvd1Rvb2x0aXAoZXZlbnQsIGQsIGdldENlbGxDb2xvcihkKSkpXG4gICAgICAub24oJ21vdXNlbW92ZScsIChldmVudDogYW55KSA9PiB0aGlzLnVwZGF0ZVRvb2x0aXBQb3MoZXZlbnQpKVxuICAgICAgLm9uKCdjbGljaycsIChfZXZlbnQ6IGFueSwgZDogQVhIZWF0bWFwRGF0YSkgPT4gdGhpcy5jZWxsQ2xpY2suZW1pdChkKSlcbiAgICAgIC5vbignbW91c2VsZWF2ZScsICgpID0+IHRoaXMuaGlkZVRvb2x0aXAoKSlcbiAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgIC5kdXJhdGlvbihvcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uKVxuICAgICAgLmVhc2UoZWFzaW5nKVxuICAgICAgLmF0dHIoJ3gnLCAoZDogYW55KSA9PiB4U2NhbGUoZC54LnRvU3RyaW5nKCkpKVxuICAgICAgLmF0dHIoJ3knLCAoZDogYW55KSA9PiB5U2NhbGUoZC55LnRvU3RyaW5nKCkpKVxuICAgICAgLmF0dHIoJ3dpZHRoJywgeFNjYWxlLmJhbmR3aWR0aCgpKVxuICAgICAgLmF0dHIoJ2hlaWdodCcsIHlTY2FsZS5iYW5kd2lkdGgoKSlcbiAgICAgIC5hdHRyKCdyeCcsIG9wdGlvbnMuYm9yZGVyUmFkaXVzKVxuICAgICAgLmF0dHIoJ3J5Jywgb3B0aW9ucy5ib3JkZXJSYWRpdXMpXG4gICAgICAuYXR0cignb3BhY2l0eScsIDEpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAoZDogQVhIZWF0bWFwRGF0YSkgPT4gZ2V0Q2VsbENvbG9yKGQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzaFN0cmluZ1RvVWludDMyKGlucHV0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIC8vIFNpbXBsZSwgZmFzdCwgZGV0ZXJtaW5pc3RpYyBoYXNoIChkamIyIHZhcmlhbnQpXG4gICAgbGV0IGhhc2ggPSA1MzgxO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhc2ggPSAoaGFzaCAqIDMzKSBeIGlucHV0LmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBoYXNoID4+PiAwO1xuICB9XG5cbiAgLyoqIGByZXNvbHZlZFJnYmAgbXVzdCBiZSBhIGNvbXB1dGVkIGByZ2IoKWAgLyBgcmdiYSgpYCBzdHJpbmcgKGUuZy4gZnJvbSB7QGxpbmsgcmVzb2x2ZUNzc0NvbG9ySW5Db250ZXh0fSkuICovXG4gIHByaXZhdGUgYXBwbHlJbnRlbnNpdHlUb1Jlc29sdmVkUmdiKHJlc29sdmVkUmdiOiBzdHJpbmcsIHQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHQpKTtcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLmQzLmNvbG9yKHJlc29sdmVkUmdiKTtcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuIHJlc29sdmVkUmdiO1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuZDMucmdiKHBhcnNlZCk7XG4gICAgY29uc3QgbWluT3BhY2l0eSA9IDAuMTI7XG4gICAgY29uc3Qgb3BhY2l0eSA9IG1pbk9wYWNpdHkgKyBjbGFtcGVkICogKDEgLSBtaW5PcGFjaXR5KTtcbiAgICByZXR1cm4gYHJnYmEoJHtNYXRoLnJvdW5kKHJnYi5yKX0sJHtNYXRoLnJvdW5kKHJnYi5nKX0sJHtNYXRoLnJvdW5kKHJnYi5iKX0sJHtvcGFjaXR5fSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3QXhpcyhnOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nLCBheGlzRm46IGFueSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHZpc2libGUgPSB0cnVlLCBpc1J0bCA9IGZhbHNlKSB7XG4gICAgbGV0IGF4aXNHID0gZy5zZWxlY3QoYC4ke2NsYXNzTmFtZX1gKTtcbiAgICBpZiAoYXhpc0cuZW1wdHkoKSkgYXhpc0cgPSBnLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgY2xhc3NOYW1lKTtcblxuICAgIGF4aXNHXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3h9LCR7eX0pYClcbiAgICAgIC5zdHlsZSgnZGlzcGxheScsIHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnKVxuICAgICAgLmNhbGwoYXhpc0ZuKVxuICAgICAgLmNhbGwoKGc6IGFueSkgPT4gZy5zZWxlY3QoJy5kb21haW4nKS5yZW1vdmUoKSk7XG5cbiAgICAvLyBFbnN1cmUgdGljayBsYWJlbHMgZG9uJ3Qgb3ZlcmxhcCB0aGUgcGxvdCBpbiBSVEwuXG4gICAgLy8gYHRleHQtYW5jaG9yYCBpcyBsb2dpY2FsIChkZXBlbmRzIG9uIGBkaXJlY3Rpb25gKSwgc28gd2Ugc2V0IGJvdGggZXhwbGljaXRseS5cbiAgICBheGlzRy5hdHRyKCdkaXJlY3Rpb24nLCBpc1J0bCA/ICdydGwnIDogJ2x0cicpO1xuICAgIGF4aXNHXG4gICAgICAuc2VsZWN0QWxsKCcudGljayB0ZXh0JylcbiAgICAgIC5zdHlsZSgnZmlsbCcsICdyZ2JhKHZhcigtLWF4LWNvbXAtaGVhdG1hcC1jaGFydC1sYWJlbHMtY29sb3IpLCAwLjcpJylcbiAgICAgIC5zdHlsZSgnZm9udC13ZWlnaHQnLCAnNDAwJyk7XG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gJ3ktYXhpcycpIHtcbiAgICAgIGF4aXNHLnNlbGVjdEFsbCgnLnRpY2sgdGV4dCcpLmF0dHIoJ3RleHQtYW5jaG9yJywgJ2VuZCcpO1xuICAgIH1cblxuICAgIGF4aXNHLnNlbGVjdEFsbCgnbGluZSwgcGF0aCcpLnN0eWxlKCdzdHJva2UnLCAncmdiYSh2YXIoLS1heC1jb21wLWhlYXRtYXAtY2hhcnQtYXhpcy1jb2xvciksIDAuMiknKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXAoZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEFYSGVhdG1hcERhdGEsIGNvbG9yOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZWZmZWN0aXZlT3B0aW9ucygpLnNob3dUb29sdGlwKSByZXR1cm47XG4gICAgdGhpcy50b29sdGlwRGF0YS5zZXQoe1xuICAgICAgdGl0bGU6IGAke2l0ZW0ueH0gLyAke2l0ZW0ueX1gLFxuICAgICAgdmFsdWU6IGl0ZW0ubGFiZWwgfHwgaXRlbS52YWx1ZS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgY29sb3I6IGNvbG9yLFxuICAgIH0pO1xuICAgIHRoaXMudG9vbHRpcFZpc2libGUuc2V0KHRydWUpO1xuICAgIHRoaXMudXBkYXRlVG9vbHRpcFBvcyhldmVudCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBQb3MoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5fdG9vbHRpcFJhZklkKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl90b29sdGlwUmFmSWQpO1xuICAgIHRoaXMuX3Rvb2x0aXBSYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuY29udGFpbmVyUmVmKCkubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnN0IHJlY3QgPSBjb250YWluZXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvb2x0aXBFbCA9IGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3IoJy5jaGFydC10b29sdGlwJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCB0b29sdGlwUmVjdCA9IHRvb2x0aXBFbD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgPz8gbnVsbDtcbiAgICAgIGNvbnN0IHBvcyA9IGNvbXB1dGVUb29sdGlwUG9zaXRpb24ocmVjdCwgdG9vbHRpcFJlY3QsIGV2ZW50LmNsaWVudFggKyAxMCwgZXZlbnQuY2xpZW50WSAtIDEwLCAxMCk7XG4gICAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbi5zZXQocG9zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRvb2x0aXAoKSB7XG4gICAgdGhpcy50b29sdGlwVmlzaWJsZS5zZXQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXJlY3Rpb25TdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdmc/LnJlbW92ZSgpO1xuICAgIGlmICh0aGlzLl90b29sdGlwUmFmSWQpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBSYWZJZCk7XG4gIH1cblxuICBwcml2YXRlIGRyYXdBeGlzTGFiZWxzKFxuICAgIGc6IGFueSxcbiAgICBpbm5lcldpZHRoOiBudW1iZXIsXG4gICAgaW5uZXJIZWlnaHQ6IG51bWJlcixcbiAgICBvcHRpb25zOiBBWEhlYXRtYXBDaGFydE9wdGlvbixcbiAgICBpc1J0bDogYm9vbGVhbixcbiAgICB4VGlja0FyZWFIZWlnaHQ6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgeFRleHQgPSBvcHRpb25zLnhBeGlzTGFiZWw/LnRyaW0oKTtcbiAgICBjb25zdCB5VGV4dCA9IG9wdGlvbnMueUF4aXNMYWJlbD8udHJpbSgpO1xuXG4gICAgY29uc3QgbGFiZWxzID0gZy5zZWxlY3RBbGwoJy5heGlzLWxhYmVscycpLmRhdGEoWzBdKS5qb2luKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcy1sYWJlbHMnKTtcblxuICAgIGxhYmVsc1xuICAgICAgLnNlbGVjdEFsbCgnLmF4LWhlYXRtYXAtY2hhcnQtYXhpcy1sYWJlbC14JylcbiAgICAgIC5kYXRhKHhUZXh0ID8gW3hUZXh0XSA6IFtdKVxuICAgICAgLmpvaW4oXG4gICAgICAgIChlbnRlcjogYW55KSA9PlxuICAgICAgICAgIGVudGVyLmFwcGVuZCgndGV4dCcpLmF0dHIoJ2NsYXNzJywgJ2F4LWhlYXRtYXAtY2hhcnQtYXhpcy1sYWJlbCBheC1oZWF0bWFwLWNoYXJ0LWF4aXMtbGFiZWwteCcpLFxuICAgICAgICAodXBkYXRlOiBhbnkpID0+IHVwZGF0ZSxcbiAgICAgICAgKGV4aXQ6IGFueSkgPT4gZXhpdC5yZW1vdmUoKSxcbiAgICAgIClcbiAgICAgIC5hdHRyKCd4JywgaW5uZXJXaWR0aCAvIDIpXG4gICAgICAuYXR0cigneScsIGlubmVySGVpZ2h0ICsgeFRpY2tBcmVhSGVpZ2h0ICsgKHhUZXh0ID8gdGhpcy5YX0FYSVNfVElUTEVfR0FQIDogMCkpXG4gICAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAgIC5hdHRyKCdkaXJlY3Rpb24nLCAnbHRyJylcbiAgICAgIC5zdHlsZSgnZm9udC1zaXplJywgYCR7dGhpcy5YX0FYSVNfVElUTEVfRk9OVF9TSVpFfXB4YClcbiAgICAgIC5zdHlsZSgnZm9udC13ZWlnaHQnLCAnNTAwJylcbiAgICAgIC5zdHlsZSgnZmlsbCcsICdyZ2IodmFyKC0tYXgtY29tcC1oZWF0bWFwLWNoYXJ0LWF4aXMtbGFiZWwtY29sb3IpKScpXG4gICAgICAudGV4dCgoZDogc3RyaW5nKSA9PiBkKTtcblxuICAgIGNvbnN0IHlYID0gaXNSdGwgPyBpbm5lcldpZHRoICsgNDYgOiAtNDY7XG4gICAgbGFiZWxzXG4gICAgICAuc2VsZWN0QWxsKCcuYXgtaGVhdG1hcC1jaGFydC1heGlzLWxhYmVsLXknKVxuICAgICAgLmRhdGEoeVRleHQgPyBbeVRleHRdIDogW10pXG4gICAgICAuam9pbihcbiAgICAgICAgKGVudGVyOiBhbnkpID0+XG4gICAgICAgICAgZW50ZXIuYXBwZW5kKCd0ZXh0JykuYXR0cignY2xhc3MnLCAnYXgtaGVhdG1hcC1jaGFydC1heGlzLWxhYmVsIGF4LWhlYXRtYXAtY2hhcnQtYXhpcy1sYWJlbC15JyksXG4gICAgICAgICh1cGRhdGU6IGFueSkgPT4gdXBkYXRlLFxuICAgICAgICAoZXhpdDogYW55KSA9PiBleGl0LnJlbW92ZSgpLFxuICAgICAgKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHt5WH0sICR7aW5uZXJIZWlnaHQgLyAyfSkgcm90YXRlKC05MClgKVxuICAgICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsIGAke3RoaXMuWF9BWElTX1RJVExFX0ZPTlRfU0laRX1weGApXG4gICAgICAuc3R5bGUoJ2ZvbnQtd2VpZ2h0JywgJzUwMCcpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAncmdiKHZhcigtLWF4LWNvbXAtaGVhdG1hcC1jaGFydC1heGlzLWxhYmVsLWNvbG9yKSknKVxuICAgICAgLnRleHQoKGQ6IHN0cmluZykgPT4gZCk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlYXRtYXBYVGlja0ZvbnRTaXplKGlubmVyV2lkdGg6IG51bWJlciwgaXRlbUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhc2VTaXplID0gTWF0aC5yb3VuZChpbm5lcldpZHRoIC8gNTApO1xuICAgIGxldCBhZGp1c3RlZFNpemUgPSBiYXNlU2l6ZTtcbiAgICBpZiAoaXRlbUNvdW50ID4gdGhpcy5WRVJZX01BTllfSVRFTVNfVEhSRVNIT0xEKSB7XG4gICAgICBhZGp1c3RlZFNpemUgPSBNYXRoLnJvdW5kKGJhc2VTaXplICogMC43KTtcbiAgICB9IGVsc2UgaWYgKGl0ZW1Db3VudCA+IHRoaXMuTUFOWV9JVEVNU19USFJFU0hPTEQpIHtcbiAgICAgIGFkanVzdGVkU2l6ZSA9IE1hdGgucm91bmQoYmFzZVNpemUgKiAwLjg1KTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuTUlOX0ZPTlRfU0laRV9YX0FYSVMsIE1hdGgubWluKHRoaXMuTUFYX0ZPTlRfU0laRV9YX0FYSVMsIGFkanVzdGVkU2l6ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIZWF0bWFwWFRpY2tQbGFuKHhLZXlzOiBzdHJpbmdbXSk6IHsgdGlja1hLZXlzOiBzdHJpbmdbXTsgZm9ybWF0WFRpY2s6IChkOiBzdHJpbmcpID0+IHN0cmluZyB9IHtcbiAgICBjb25zdCBuID0geEtleXMubGVuZ3RoO1xuICAgIGNvbnN0IG1heExhYmVsTGVuZ3RoID0gbiA+IHRoaXMuTUFOWV9JVEVNU19USFJFU0hPTEQgPyAxMCA6IHRoaXMuTUFYX0xBQkVMX0xFTkdUSDtcbiAgICBsZXQgdGlja1hLZXlzID0geEtleXM7XG4gICAgaWYgKG4gPiB0aGlzLlZFUllfTUFOWV9JVEVNU19USFJFU0hPTEQpIHtcbiAgICAgIHRpY2tYS2V5cyA9IHhLZXlzLmZpbHRlcigoXywgaSkgPT4gaSAlIDUgPT09IDApO1xuICAgIH0gZWxzZSBpZiAobiA+IHRoaXMuTUFOWV9JVEVNU19USFJFU0hPTEQpIHtcbiAgICAgIHRpY2tYS2V5cyA9IHhLZXlzLmZpbHRlcigoXywgaSkgPT4gaSAlIDIgPT09IDApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtYXRYVGljayA9IChkOiBzdHJpbmcpID0+IHRoaXMudHJ1bmNhdGVIZWF0bWFwTGFiZWwoZCwgbWF4TGFiZWxMZW5ndGgpO1xuICAgIHJldHVybiB7IHRpY2tYS2V5cywgZm9ybWF0WFRpY2sgfTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ1bmNhdGVIZWF0bWFwTGFiZWwobGFiZWw6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChsYWJlbC5sZW5ndGggPD0gbWF4TGVuZ3RoKSByZXR1cm4gbGFiZWw7XG4gICAgaWYgKG1heExlbmd0aCA8PSAxKSByZXR1cm4gJ+KApic7XG4gICAgcmV0dXJuIGAke2xhYmVsLnN1YnN0cmluZygwLCBtYXhMZW5ndGggLSAxKX3igKZgO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRSb3RhdGVIZWF0bWFwWExhYmVscyhcbiAgICByb3RhdGVPcHRpb246IGJvb2xlYW4gfCAnYXV0bycgfCB1bmRlZmluZWQsXG4gICAgZXN0aW1hdGVkTGFiZWxXaWR0aDogbnVtYmVyLFxuICAgIHN0ZXA6IG51bWJlcixcbiAgICBkb21haW5Db3VudDogbnVtYmVyLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAocm90YXRlT3B0aW9uID09PSB0cnVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAocm90YXRlT3B0aW9uID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChkb21haW5Db3VudCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChkb21haW5Db3VudCA8PSB0aGlzLlNNQUxMX0RBVEFTRVRfVEhSRVNIT0xEKSB7XG4gICAgICByZXR1cm4gZXN0aW1hdGVkTGFiZWxXaWR0aCA+IHN0ZXAgKiB0aGlzLlJPVEFUSU9OX1RPTEVSQU5DRV9TTUFMTF9EQVRBU0VUO1xuICAgIH1cbiAgICByZXR1cm4gZXN0aW1hdGVkTGFiZWxXaWR0aCA+IHN0ZXA7XG4gIH1cblxuICBwcml2YXRlIHN0eWxlSGVhdG1hcFhBeGlzVGlja3MoZzogYW55LCBmb250U2l6ZTogbnVtYmVyLCByb3RhdGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgdGV4dHMgPSBnXG4gICAgICAuc2VsZWN0KCcueC1heGlzJylcbiAgICAgIC5zZWxlY3RBbGwoJy50aWNrIHRleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCBgJHtmb250U2l6ZX1weGApXG4gICAgICAuc3R5bGUoJ2ZvbnQtd2VpZ2h0JywgJzQwMCcpXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAncmdiYSh2YXIoLS1heC1jb21wLWhlYXRtYXAtY2hhcnQtbGFiZWxzLWNvbG9yKSwgMC43KScpXG4gICAgICAuYXR0cignZGlyZWN0aW9uJywgJ2x0cicpO1xuXG4gICAgaWYgKHJvdGF0ZWQpIHtcbiAgICAgIHRleHRzLmF0dHIoJ3RyYW5zZm9ybScsICdyb3RhdGUoLTQ1KScpLnN0eWxlKCd0ZXh0LWFuY2hvcicsICdlbmQnKS5hdHRyKCdkeCcsICctMC44ZW0nKS5hdHRyKCdkeScsICcwLjE1ZW0nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dHMuYXR0cigndHJhbnNmb3JtJywgbnVsbCkuc3R5bGUoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpLmF0dHIoJ2R4JywgbnVsbCkuYXR0cignZHknLCAnMC43MWVtJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gUlRMIGlzIHRyYWNrZWQgdmlhIEFYUGxhdGZvcm0uZGlyZWN0aW9uQ2hhbmdlXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtaGVhdG1hcC1jaGFydC1jb250YWluZXJcIiByb2xlPVwiaW1nXCIgI2NoYXJ0Q29udGFpbmVyPlxuICA8YXgtY2hhcnQtdG9vbHRpcCBbZGF0YV09XCJ0b29sdGlwRGF0YSgpXCIgW3Bvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbigpXCIgW3Zpc2libGVdPVwidG9vbHRpcFZpc2libGUoKVwiPlxuICA8L2F4LWNoYXJ0LXRvb2x0aXA+XG4gIEBpZiAoZGF0YSgpPy5sZW5ndGggPT09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhdG1hcC1uby1kYXRhXCI+XG4gICAgICA8aSBbY2xhc3NdPVwiZWZmZWN0aXZlT3B0aW9ucygpLm1lc3NhZ2VzPy5ub0RhdGFJY29uXCI+PC9pPlxuICAgICAgPHAgY2xhc3M9XCJheC1oZWF0bWFwLW5vLWRhdGEtdGV4dFwiPnt7IGVmZmVjdGl2ZU9wdGlvbnMoKS5tZXNzYWdlcz8ubm9EYXRhIH19PC9wPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNoYXJ0cy1oZWF0bWFwLWNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2hhcnRzL2hlYXRtYXAtY2hhcnQvc3JjL2Fjb3JleC1jaGFydHMtaGVhdG1hcC1jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-charts-heatmap-chart.mjs","sources":["../../../../packages/charts/heatmap-chart/src/lib/heatmap-chart.config.ts","../../../../packages/charts/heatmap-chart/src/lib/heatmap-chart.component.ts","../../../../packages/charts/heatmap-chart/src/lib/heatmap-chart.component.html","../../../../packages/charts/heatmap-chart/src/acorex-charts-heatmap-chart.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXHeatmapChartOption } from './heatmap-chart.type';\n\nexport const AXHeatmapChartDefaultConfig: AXHeatmapChartOption = {\n margin: { top: 30, right: 30, bottom: 60, left: 60 },\n color: 'rgb(var(--ax-sys-color-primary-500))',\n cellPadding: 0.05,\n borderRadius: 2,\n showXAxis: true,\n showYAxis: true,\n rotateXAxisLabels: 'auto',\n showTooltip: true,\n animationDuration: 800,\n animationEasing: 'cubic-out',\n messages: {\n noData: 'No data available',\n noDataHelp: 'Provide X, Y, and Value data to render the heatmap',\n noDataIcon: 'fa-light fa-grid-2',\n },\n};\n\nexport const AX_HEATMAP_CHART_CONFIG = new InjectionToken<AXHeatmapChartOption>('AX_HEATMAP_CHART_CONFIG', {\n providedIn: 'root',\n factory: () => AXHeatmapChartDefaultConfig,\n});\n","import { AXChartComponent, computeTooltipPosition, getEasingFunction, resolveCssColorInContext } from '@acorex/charts';\nimport { AXChartTooltipComponent, AXChartTooltipData } from '@acorex/charts/chart-tooltip';\nimport { AXPlatform } from '@acorex/core/platform';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { map, Subscription } from 'rxjs';\nimport { AX_HEATMAP_CHART_CONFIG } from './heatmap-chart.config';\nimport { AXHeatmapChartOption, AXHeatmapData } from './heatmap-chart.type';\n\n@Component({\n selector: 'ax-heatmap-chart',\n templateUrl: './heatmap-chart.component.html',\n styleUrls: ['./heatmap-chart.component.css'],\n encapsulation: ViewEncapsulation.None,\n imports: [AXChartTooltipComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXHeatmapChartComponent extends AXChartComponent implements OnDestroy {\n /** Fixed `viewBox` side; chart scales with CSS `width` / `height` on the host container. */\n private static readonly VIEW_BOX_SIZE = 400;\n\n // X-axis layout (aligned with bar-chart heuristics)\n private readonly CHAR_WIDTH_RATIO = 0.65;\n private readonly ROTATION_TOLERANCE_SMALL_DATASET = 1.4;\n private readonly SMALL_DATASET_THRESHOLD = 6;\n private readonly MANY_ITEMS_THRESHOLD = 20;\n private readonly VERY_MANY_ITEMS_THRESHOLD = 50;\n private readonly MAX_LABEL_LENGTH = 20;\n private readonly TICK_AREA_PADDING = 6;\n private readonly X_AXIS_TITLE_GAP = 10;\n private readonly X_AXIS_TITLE_FONT_SIZE = 14;\n private readonly MIN_FONT_SIZE_X_AXIS = 8;\n private readonly MAX_FONT_SIZE_X_AXIS = 14;\n\n // Inject config at the top level\n private readonly defaultConfig = inject(AX_HEATMAP_CHART_CONFIG);\n\n // Inputs\n data = input<AXHeatmapData[]>([]);\n options = input<AXHeatmapChartOption>({});\n\n // Outputs\n /** Emitted when a heatmap cell is clicked */\n cellClick = output<AXHeatmapData>();\n\n // View Child\n private readonly containerRef = viewChild.required<ElementRef<HTMLDivElement>>('chartContainer');\n\n // Internal State\n private svg: any;\n protected d3: any;\n private _d3Ready = signal(false);\n private platformService = inject(AXPlatform);\n protected isRtl = signal(this.platformService.isRtl());\n private directionSub?: Subscription;\n\n // Tooltip State\n protected tooltipVisible = signal(false);\n protected tooltipPosition = signal({ x: 0, y: 0 });\n protected tooltipData = signal<AXChartTooltipData>({ title: '', value: '' });\n private _tooltipRafId: number | null = null;\n\n // Computed options (referencing the already injected defaultConfig)\n protected effectiveOptions = computed(() => ({\n ...this.defaultConfig,\n ...this.options(),\n }));\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.init();\n this.directionSub = this.platformService.directionChange.pipe(map((i) => i.data === 'rtl')).subscribe((isRtl) => {\n this.isRtl.set(isRtl);\n if (this._d3Ready()) {\n this.renderChart();\n }\n });\n });\n\n // Reactive render when data, options, or D3 readiness change\n effect(() => {\n this.data();\n this.effectiveOptions();\n if (this._d3Ready()) {\n this.renderChart();\n }\n });\n }\n\n private async init() {\n try {\n this.d3 = await import('d3');\n\n this._d3Ready.set(true);\n } catch (err) {\n console.error('Heatmap: Initialization failed', err);\n }\n }\n\n public updateChart(): void {\n this.renderChart();\n }\n\n private renderChart() {\n const container = this.containerRef().nativeElement;\n const data = this.data() || [];\n\n // Clear SVG if data is empty\n if (data.length === 0) {\n if (this.svg) this.svg.remove();\n this.svg = null;\n return;\n }\n\n const options = this.effectiveOptions();\n const width = AXHeatmapChartComponent.VIEW_BOX_SIZE;\n const height = AXHeatmapChartComponent.VIEW_BOX_SIZE;\n const isRtl = this.isRtl();\n const baseMargin = options.margin || { top: 20, right: 20, bottom: 40, left: 40 };\n // When rendering RTL, the Y axis is on the right; swap side margins so tick labels\n // have the same breathing room they get on the left in LTR.\n let margin = isRtl\n ? { top: baseMargin.top, right: baseMargin.left, bottom: baseMargin.bottom, left: baseMargin.right }\n : { ...baseMargin };\n\n const xKeys = Array.from(new Set(data.map((d) => d.x.toString())));\n const yKeys = Array.from(new Set(data.map((d) => d.y.toString())));\n\n let innerWidth = width - margin.left - margin.right;\n const cellPad = options.cellPadding ?? 0;\n const xScaleProbe = this.d3\n .scaleBand()\n .domain(xKeys)\n .range(isRtl ? [innerWidth, 0] : [0, innerWidth])\n .padding(cellPad);\n\n const xTickFontSize = this.getHeatmapXTickFontSize(innerWidth, xKeys.length);\n const { tickXKeys, formatXTick } = this.getHeatmapXTickPlan(xKeys);\n const longestXLabel = xKeys.reduce((acc, k) => {\n const t = formatXTick(k);\n return t.length > acc.length ? t : acc;\n }, '');\n const estimatedLabelWidth = longestXLabel.length * xTickFontSize * this.CHAR_WIDTH_RATIO;\n const step = xScaleProbe.step();\n const rotateX = this.shouldRotateHeatmapXLabels(options.rotateXAxisLabels, estimatedLabelWidth, step, xKeys.length);\n\n const tickAreaHeight = rotateX\n ? estimatedLabelWidth * Math.SQRT1_2 + xTickFontSize * Math.SQRT1_2 + this.TICK_AREA_PADDING\n : xTickFontSize + this.TICK_AREA_PADDING + 2;\n\n const xAxisTitleReserve = options.xAxisLabel?.trim() ? this.X_AXIS_TITLE_GAP + 16 : 0;\n margin = { ...margin, bottom: Math.max(margin.bottom, tickAreaHeight + xAxisTitleReserve) };\n\n innerWidth = width - margin.left - margin.right;\n const innerHeight = Math.max(1, height - margin.top - margin.bottom);\n\n // Create/Select SVG root\n if (!this.svg) {\n this.svg = this.d3\n .select(container)\n .append('svg')\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('preserveAspectRatio', 'xMidYMid meet')\n .style('display', 'block');\n this.svg.append('g').attr('class', 'chart-group');\n }\n\n this.svg.attr('viewBox', `0 0 ${width} ${height}`);\n const g = this.svg.select('.chart-group').attr('transform', `translate(${margin.left},${margin.top})`);\n\n // --- Scales ---\n const xScale = this.d3\n .scaleBand()\n .domain(xKeys)\n .range(isRtl ? [innerWidth, 0] : [0, innerWidth])\n .padding(cellPad);\n const yScale = this.d3.scaleBand().domain(yKeys).range([innerHeight, 0]).padding(cellPad);\n\n const valueExtent = this.d3.extent(data, (d: any) => d.value) as [number, number];\n const minValue = Number.isFinite(valueExtent[0]) ? valueExtent[0] : 0;\n const maxValue = Number.isFinite(valueExtent[1]) ? valueExtent[1] : minValue + 1;\n const palette = options.colors?.filter(Boolean) ?? [];\n const baseColor = options.color ?? 'rgb(99, 102, 241)';\n const rangeMin = options.valueRange?.min ?? minValue;\n const rangeMax = options.valueRange?.max ?? maxValue;\n\n const resolvedColorCache = new Map<string, string>();\n const resolvePaletteColor = (c: string): string => {\n const hit = resolvedColorCache.get(c);\n if (hit !== undefined) return hit;\n const out = resolveCssColorInContext(container, c);\n resolvedColorCache.set(c, out);\n return out;\n };\n const resolvedBase = resolvePaletteColor(baseColor);\n\n const getCellColor = (d: AXHeatmapData): string => {\n // If a palette is provided, choose a stable \"random\" color per cell.\n if (palette.length > 0) {\n const key = `${d.x}-${d.y}`;\n const idx = this.hashStringToUint32(key) % palette.length;\n return resolvePaletteColor(palette[idx] ?? baseColor);\n }\n\n const span = rangeMax - rangeMin;\n const t = span === 0 ? 1 : (d.value - rangeMin) / span;\n const clamped = Math.max(0, Math.min(1, t));\n return this.applyIntensityToResolvedRgb(resolvedBase, clamped);\n };\n\n // --- Axes ---\n const xAxisBuilder = this.d3\n .axisBottom(xScale)\n .tickSize(0)\n .tickFormat((d: string | number) => formatXTick(String(d)));\n if (tickXKeys.length < xKeys.length) {\n xAxisBuilder.tickValues(tickXKeys);\n }\n\n this.drawAxis(g, 'x-axis', xAxisBuilder, 0, innerHeight, options.showXAxis, isRtl);\n g.select('.x-axis').attr('direction', 'ltr');\n this.styleHeatmapXAxisTicks(g, xTickFontSize, rotateX);\n\n if (isRtl) {\n this.drawAxis(g, 'y-axis', this.d3.axisRight(yScale).tickSize(0), innerWidth, 0, options.showYAxis, isRtl);\n } else {\n this.drawAxis(g, 'y-axis', this.d3.axisLeft(yScale).tickSize(0), 0, 0, options.showYAxis, isRtl);\n }\n this.drawAxisLabels(g, innerWidth, innerHeight, options, isRtl, tickAreaHeight);\n\n // --- Cells with Data Join ---\n const easing = getEasingFunction(this.d3, options.animationEasing);\n\n g.selectAll('.cell')\n .data(data, (d: any) => `${d.x}-${d.y}`)\n .join(\n (enter: any) => enter.append('rect').attr('class', 'cell').attr('opacity', 0).attr('fill', resolvedBase),\n (update: any) => update,\n (exit: any) => exit.transition().duration(200).attr('opacity', 0).remove(),\n )\n .on('mouseenter', (event: any, d: AXHeatmapData) => this.showTooltip(event, d, getCellColor(d)))\n .on('mousemove', (event: any) => this.updateTooltipPos(event))\n .on('click', (_event: any, d: AXHeatmapData) => this.cellClick.emit(d))\n .on('mouseleave', () => this.hideTooltip())\n .transition()\n .duration(options.animationDuration)\n .ease(easing)\n .attr('x', (d: any) => xScale(d.x.toString()))\n .attr('y', (d: any) => yScale(d.y.toString()))\n .attr('width', xScale.bandwidth())\n .attr('height', yScale.bandwidth())\n .attr('rx', options.borderRadius)\n .attr('ry', options.borderRadius)\n .attr('opacity', 1)\n .style('fill', (d: AXHeatmapData) => getCellColor(d));\n }\n\n private hashStringToUint32(input: string): number {\n // Simple, fast, deterministic hash (djb2 variant)\n let hash = 5381;\n for (let i = 0; i < input.length; i++) {\n hash = (hash * 33) ^ input.charCodeAt(i);\n }\n return hash >>> 0;\n }\n\n /** `resolvedRgb` must be a computed `rgb()` / `rgba()` string (e.g. from {@link resolveCssColorInContext}). */\n private applyIntensityToResolvedRgb(resolvedRgb: string, t: number): string {\n const clamped = Math.max(0, Math.min(1, t));\n const parsed = this.d3.color(resolvedRgb);\n if (!parsed) return resolvedRgb;\n const rgb = this.d3.rgb(parsed);\n const minOpacity = 0.12;\n const opacity = minOpacity + clamped * (1 - minOpacity);\n return `rgba(${Math.round(rgb.r)},${Math.round(rgb.g)},${Math.round(rgb.b)},${opacity})`;\n }\n\n private drawAxis(g: any, className: string, axisFn: any, x: number, y: number, visible = true, isRtl = false) {\n let axisG = g.select(`.${className}`);\n if (axisG.empty()) axisG = g.append('g').attr('class', className);\n\n axisG\n .attr('transform', `translate(${x},${y})`)\n .style('display', visible ? 'block' : 'none')\n .call(axisFn)\n .call((g: any) => g.select('.domain').remove());\n\n // Ensure tick labels don't overlap the plot in RTL.\n // `text-anchor` is logical (depends on `direction`), so we set both explicitly.\n axisG.attr('direction', isRtl ? 'rtl' : 'ltr');\n axisG\n .selectAll('.tick text')\n .style('fill', 'rgba(var(--ax-comp-heatmap-chart-labels-color), 0.7)')\n .style('font-weight', '400');\n if (className === 'y-axis') {\n axisG.selectAll('.tick text').attr('text-anchor', 'end');\n }\n\n axisG.selectAll('line, path').style('stroke', 'rgba(var(--ax-comp-heatmap-chart-axis-color), 0.2)');\n }\n\n private showTooltip(event: MouseEvent, item: AXHeatmapData, color: string) {\n if (!this.effectiveOptions().showTooltip) return;\n this.tooltipData.set({\n title: `${item.x} / ${item.y}`,\n value: item.label || item.value.toLocaleString(),\n color: color,\n });\n this.tooltipVisible.set(true);\n this.updateTooltipPos(event);\n }\n\n private updateTooltipPos(event: MouseEvent) {\n if (this._tooltipRafId) cancelAnimationFrame(this._tooltipRafId);\n this._tooltipRafId = requestAnimationFrame(() => {\n const containerEl = this.containerRef().nativeElement;\n const rect = containerEl.getBoundingClientRect();\n const tooltipEl = containerEl.querySelector('.chart-tooltip') as HTMLElement;\n const tooltipRect = tooltipEl?.getBoundingClientRect() ?? null;\n const pos = computeTooltipPosition(rect, tooltipRect, event.clientX + 10, event.clientY - 10, 10);\n this.tooltipPosition.set(pos);\n });\n }\n\n private hideTooltip() {\n this.tooltipVisible.set(false);\n }\n\n ngOnDestroy(): void {\n this.directionSub?.unsubscribe();\n this.svg?.remove();\n if (this._tooltipRafId) cancelAnimationFrame(this._tooltipRafId);\n }\n\n private drawAxisLabels(\n g: any,\n innerWidth: number,\n innerHeight: number,\n options: AXHeatmapChartOption,\n isRtl: boolean,\n xTickAreaHeight: number,\n ) {\n const xText = options.xAxisLabel?.trim();\n const yText = options.yAxisLabel?.trim();\n\n const labels = g.selectAll('.axis-labels').data([0]).join('g').attr('class', 'axis-labels');\n\n labels\n .selectAll('.ax-heatmap-chart-axis-label-x')\n .data(xText ? [xText] : [])\n .join(\n (enter: any) =>\n enter.append('text').attr('class', 'ax-heatmap-chart-axis-label ax-heatmap-chart-axis-label-x'),\n (update: any) => update,\n (exit: any) => exit.remove(),\n )\n .attr('x', innerWidth / 2)\n .attr('y', innerHeight + xTickAreaHeight + (xText ? this.X_AXIS_TITLE_GAP : 0))\n .attr('text-anchor', 'middle')\n .attr('direction', 'ltr')\n .style('font-size', `${this.X_AXIS_TITLE_FONT_SIZE}px`)\n .style('font-weight', '500')\n .style('fill', 'rgb(var(--ax-comp-heatmap-chart-axis-label-color))')\n .text((d: string) => d);\n\n const yX = isRtl ? innerWidth + 46 : -46;\n labels\n .selectAll('.ax-heatmap-chart-axis-label-y')\n .data(yText ? [yText] : [])\n .join(\n (enter: any) =>\n enter.append('text').attr('class', 'ax-heatmap-chart-axis-label ax-heatmap-chart-axis-label-y'),\n (update: any) => update,\n (exit: any) => exit.remove(),\n )\n .attr('transform', `translate(${yX}, ${innerHeight / 2}) rotate(-90)`)\n .attr('text-anchor', 'middle')\n .style('font-size', `${this.X_AXIS_TITLE_FONT_SIZE}px`)\n .style('font-weight', '500')\n .style('fill', 'rgb(var(--ax-comp-heatmap-chart-axis-label-color))')\n .text((d: string) => d);\n }\n\n private getHeatmapXTickFontSize(innerWidth: number, itemCount: number): number {\n const baseSize = Math.round(innerWidth / 50);\n let adjustedSize = baseSize;\n if (itemCount > this.VERY_MANY_ITEMS_THRESHOLD) {\n adjustedSize = Math.round(baseSize * 0.7);\n } else if (itemCount > this.MANY_ITEMS_THRESHOLD) {\n adjustedSize = Math.round(baseSize * 0.85);\n }\n return Math.max(this.MIN_FONT_SIZE_X_AXIS, Math.min(this.MAX_FONT_SIZE_X_AXIS, adjustedSize));\n }\n\n private getHeatmapXTickPlan(xKeys: string[]): { tickXKeys: string[]; formatXTick: (d: string) => string } {\n const n = xKeys.length;\n const maxLabelLength = n > this.MANY_ITEMS_THRESHOLD ? 10 : this.MAX_LABEL_LENGTH;\n let tickXKeys = xKeys;\n if (n > this.VERY_MANY_ITEMS_THRESHOLD) {\n tickXKeys = xKeys.filter((_, i) => i % 5 === 0);\n } else if (n > this.MANY_ITEMS_THRESHOLD) {\n tickXKeys = xKeys.filter((_, i) => i % 2 === 0);\n }\n const formatXTick = (d: string) => this.truncateHeatmapLabel(d, maxLabelLength);\n return { tickXKeys, formatXTick };\n }\n\n private truncateHeatmapLabel(label: string, maxLength: number): string {\n if (label.length <= maxLength) return label;\n if (maxLength <= 1) return '…';\n return `${label.substring(0, maxLength - 1)}…`;\n }\n\n private shouldRotateHeatmapXLabels(\n rotateOption: boolean | 'auto' | undefined,\n estimatedLabelWidth: number,\n step: number,\n domainCount: number,\n ): boolean {\n if (rotateOption === true) return true;\n if (rotateOption === false) return false;\n if (domainCount === 0) return false;\n if (domainCount <= this.SMALL_DATASET_THRESHOLD) {\n return estimatedLabelWidth > step * this.ROTATION_TOLERANCE_SMALL_DATASET;\n }\n return estimatedLabelWidth > step;\n }\n\n private styleHeatmapXAxisTicks(g: any, fontSize: number, rotated: boolean): void {\n const texts = g\n .select('.x-axis')\n .selectAll('.tick text')\n .style('font-size', `${fontSize}px`)\n .style('font-weight', '400')\n .style('fill', 'rgba(var(--ax-comp-heatmap-chart-labels-color), 0.7)')\n .attr('direction', 'ltr');\n\n if (rotated) {\n texts.attr('transform', 'rotate(-45)').style('text-anchor', 'end').attr('dx', '-0.8em').attr('dy', '0.15em');\n } else {\n texts.attr('transform', null).style('text-anchor', 'middle').attr('dx', null).attr('dy', '0.71em');\n }\n }\n\n // RTL is tracked via AXPlatform.directionChange\n}\n","<div class=\"ax-heatmap-chart-container\" role=\"img\" #chartContainer>\n <ax-chart-tooltip [data]=\"tooltipData()\" [position]=\"tooltipPosition()\" [visible]=\"tooltipVisible()\">\n </ax-chart-tooltip>\n @if (data()?.length === 0) {\n <div class=\"ax-heatmap-no-data\">\n <i [class]=\"effectiveOptions().messages?.noDataIcon\"></i>\n <p class=\"ax-heatmap-no-data-text\">{{ effectiveOptions().messages?.noData }}</p>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ class AXHierarchyChartComponent extends AXChartComponent {
49
49
  // Chart container reference
50
50
  chartContainer = viewChild.required('chartContainer');
51
51
  // Custom node template provided by the user
52
- customNodeTemplate = contentChild('nodeTemplate', ...(ngDevMode ? [{ debugName: "customNodeTemplate" }] : []));
52
+ customNodeTemplate = contentChild('nodeTemplate', ...(ngDevMode ? [{ debugName: "customNodeTemplate" }] : /* istanbul ignore next */ []));
53
53
  // Services
54
54
  ngZone = inject(NgZone);
55
55
  viewContainerRef = inject(ViewContainerRef);
@@ -57,17 +57,17 @@ class AXHierarchyChartComponent extends AXChartComponent {
57
57
  // D3 instance
58
58
  d3;
59
59
  // Internal state signals
60
- _expandedNodes = signal(new Map(), ...(ngDevMode ? [{ debugName: "_expandedNodes" }] : []));
61
- _initialized = signal(false, ...(ngDevMode ? [{ debugName: "_initialized" }] : []));
62
- _rendered = signal(false, ...(ngDevMode ? [{ debugName: "_rendered" }] : []));
63
- _dimensions = signal({ width: 0, height: 0 }, ...(ngDevMode ? [{ debugName: "_dimensions" }] : []));
64
- _nodeElements = signal(new Map(), ...(ngDevMode ? [{ debugName: "_nodeElements" }] : [])); // Store references to node elements
65
- _chartData = signal(null, ...(ngDevMode ? [{ debugName: "_chartData" }] : [])); // Store the current chart data and layout
60
+ _expandedNodes = signal(new Map(), ...(ngDevMode ? [{ debugName: "_expandedNodes" }] : /* istanbul ignore next */ []));
61
+ _initialized = signal(false, ...(ngDevMode ? [{ debugName: "_initialized" }] : /* istanbul ignore next */ []));
62
+ _rendered = signal(false, ...(ngDevMode ? [{ debugName: "_rendered" }] : /* istanbul ignore next */ []));
63
+ _dimensions = signal({ width: 0, height: 0 }, ...(ngDevMode ? [{ debugName: "_dimensions" }] : /* istanbul ignore next */ []));
64
+ _nodeElements = signal(new Map(), ...(ngDevMode ? [{ debugName: "_nodeElements" }] : /* istanbul ignore next */ [])); // Store references to node elements
65
+ _chartData = signal(null, ...(ngDevMode ? [{ debugName: "_chartData" }] : /* istanbul ignore next */ [])); // Store the current chart data and layout
66
66
  embeddedViews = [];
67
67
  // Inputs
68
- data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
69
- options = input({}, ...(ngDevMode ? [{ debugName: "options" }] : []));
70
- nodeTemplate = input(null, ...(ngDevMode ? [{ debugName: "nodeTemplate" }] : []));
68
+ data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
69
+ options = input({}, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
70
+ nodeTemplate = input(null, ...(ngDevMode ? [{ debugName: "nodeTemplate" }] : /* istanbul ignore next */ []));
71
71
  // Outputs
72
72
  itemClick = output();
73
73
  nodeToggle = output();
@@ -76,17 +76,17 @@ class AXHierarchyChartComponent extends AXChartComponent {
76
76
  const data = this.data();
77
77
  // Handle both single node and array formats
78
78
  return Array.isArray(data) ? { id: 'root', children: data } : data;
79
- }, ...(ngDevMode ? [{ debugName: "processedData" }] : []));
79
+ }, ...(ngDevMode ? [{ debugName: "processedData" }] : /* istanbul ignore next */ []));
80
80
  // Check if custom template is available
81
81
  hasCustomTemplate = computed(() => {
82
82
  return Boolean(this.customNodeTemplate() || this.nodeTemplate());
83
- }, ...(ngDevMode ? [{ debugName: "hasCustomTemplate" }] : []));
83
+ }, ...(ngDevMode ? [{ debugName: "hasCustomTemplate" }] : /* istanbul ignore next */ []));
84
84
  effectiveOptions = computed(() => {
85
85
  return {
86
86
  ...this.configToken,
87
87
  ...this.options(),
88
88
  };
89
- }, ...(ngDevMode ? [{ debugName: "effectiveOptions" }] : []));
89
+ }, ...(ngDevMode ? [{ debugName: "effectiveOptions" }] : /* istanbul ignore next */ []));
90
90
  // Messages with defaults
91
91
  effectiveMessages = computed(() => {
92
92
  const defaultMessages = {
@@ -98,7 +98,7 @@ class AXHierarchyChartComponent extends AXChartComponent {
98
98
  ...defaultMessages,
99
99
  ...this.effectiveOptions().messages,
100
100
  };
101
- }, ...(ngDevMode ? [{ debugName: "effectiveMessages" }] : []));
101
+ }, ...(ngDevMode ? [{ debugName: "effectiveMessages" }] : /* istanbul ignore next */ []));
102
102
  constructor() {
103
103
  super();
104
104
  // Dynamically load D3 and initialize the chart when the component is ready
@@ -716,13 +716,13 @@ class AXHierarchyChartComponent extends AXChartComponent {
716
716
  .style('opacity', '0.6')
717
717
  .text(this.effectiveMessages().noDataHelp);
718
718
  }
719
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXHierarchyChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
720
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.3", type: AXHierarchyChartComponent, isStandalone: true, selector: "ax-hierarchy-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", nodeToggle: "nodeToggle" }, queries: [{ propertyName: "customNodeTemplate", first: true, predicate: ["nodeTemplate"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-hierarchy-chart\" role=\"img\" #chartContainer></div>\n", styles: ["ax-hierarchy-chart{display:block;width:100%;height:100%;min-height:300px;--ax-comp-hierarchy-chart-node-color: var(--ax-sys-color-primary-500);--ax-comp-hierarchy-chart-node-stroke-color: var(--ax-sys-color-primary-400);--ax-comp-hierarchy-chart-link-color: var(--ax-sys-color-primary-400);--ax-comp-hierarchy-chart-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-hierarchy-chart-bg-color: 0, 0, 0, 0;color:rgb(var(--ax-comp-hierarchy-chart-text-color));background-color:rgba(var(--ax-comp-hierarchy-chart-bg-color))}ax-hierarchy-chart .ax-hierarchy-chart{width:100%;height:100%;min-height:300px;position:relative;overflow:hidden}ax-hierarchy-chart .ax-hierarchy-chart svg{width:100%;height:100%;max-width:100%;max-height:100%;overflow:visible}ax-hierarchy-chart .ax-hierarchy-chart svg g:has(text){font-family:inherit}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message{position:absolute;text-align:center;transform:translate(-50%,-50%);background-color:rgb(var(--ax-comp-hierarchy-chart-bg-color));padding:1.5rem;border-radius:.5rem;border:1px solid rgba(var(--ax-sys-color-surface));width:80%;max-width:300px}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-icon{opacity:.6;margin-bottom:.75rem}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-text{font-size:1rem;font-weight:600;margin-bottom:.5rem}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-help{font-size:.8rem;opacity:.6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
719
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHierarchyChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
720
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: AXHierarchyChartComponent, isStandalone: true, selector: "ax-hierarchy-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, nodeTemplate: { classPropertyName: "nodeTemplate", publicName: "nodeTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", nodeToggle: "nodeToggle" }, queries: [{ propertyName: "customNodeTemplate", first: true, predicate: ["nodeTemplate"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-hierarchy-chart\" role=\"img\" #chartContainer></div>\n", styles: ["ax-hierarchy-chart{display:block;width:100%;height:100%;min-height:300px;--ax-comp-hierarchy-chart-node-color: var(--ax-sys-color-primary-500);--ax-comp-hierarchy-chart-node-stroke-color: var(--ax-sys-color-primary-400);--ax-comp-hierarchy-chart-link-color: var(--ax-sys-color-primary-400);--ax-comp-hierarchy-chart-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-hierarchy-chart-bg-color: 0, 0, 0, 0;color:rgb(var(--ax-comp-hierarchy-chart-text-color));background-color:rgba(var(--ax-comp-hierarchy-chart-bg-color))}ax-hierarchy-chart .ax-hierarchy-chart{width:100%;height:100%;min-height:300px;position:relative;overflow:hidden}ax-hierarchy-chart .ax-hierarchy-chart svg{width:100%;height:100%;max-width:100%;max-height:100%;overflow:visible}ax-hierarchy-chart .ax-hierarchy-chart svg g:has(text){font-family:inherit}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message{position:absolute;text-align:center;transform:translate(-50%,-50%);background-color:rgb(var(--ax-comp-hierarchy-chart-bg-color));padding:1.5rem;border-radius:.5rem;border:1px solid rgba(var(--ax-sys-color-surface));width:80%;max-width:300px}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-icon{opacity:.6;margin-bottom:.75rem}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-text{font-size:1rem;font-weight:600;margin-bottom:.5rem}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-help{font-size:.8rem;opacity:.6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
721
721
  }
722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXHierarchyChartComponent, decorators: [{
722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXHierarchyChartComponent, decorators: [{
723
723
  type: Component,
724
724
  args: [{ selector: 'ax-hierarchy-chart', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-hierarchy-chart\" role=\"img\" #chartContainer></div>\n", styles: ["ax-hierarchy-chart{display:block;width:100%;height:100%;min-height:300px;--ax-comp-hierarchy-chart-node-color: var(--ax-sys-color-primary-500);--ax-comp-hierarchy-chart-node-stroke-color: var(--ax-sys-color-primary-400);--ax-comp-hierarchy-chart-link-color: var(--ax-sys-color-primary-400);--ax-comp-hierarchy-chart-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-hierarchy-chart-bg-color: 0, 0, 0, 0;color:rgb(var(--ax-comp-hierarchy-chart-text-color));background-color:rgba(var(--ax-comp-hierarchy-chart-bg-color))}ax-hierarchy-chart .ax-hierarchy-chart{width:100%;height:100%;min-height:300px;position:relative;overflow:hidden}ax-hierarchy-chart .ax-hierarchy-chart svg{width:100%;height:100%;max-width:100%;max-height:100%;overflow:visible}ax-hierarchy-chart .ax-hierarchy-chart svg g:has(text){font-family:inherit}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message{position:absolute;text-align:center;transform:translate(-50%,-50%);background-color:rgb(var(--ax-comp-hierarchy-chart-bg-color));padding:1.5rem;border-radius:.5rem;border:1px solid rgba(var(--ax-sys-color-surface));width:80%;max-width:300px}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-icon{opacity:.6;margin-bottom:.75rem}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-text{font-size:1rem;font-weight:600;margin-bottom:.5rem}ax-hierarchy-chart .ax-hierarchy-chart-no-data-message .ax-hierarchy-chart-no-data-help{font-size:.8rem;opacity:.6}\n"] }]
725
- }], ctorParameters: () => [] });
725
+ }], ctorParameters: () => [], propDecorators: { chartContainer: [{ type: i0.ViewChild, args: ['chartContainer', { isSignal: true }] }], customNodeTemplate: [{ type: i0.ContentChild, args: ['nodeTemplate', { isSignal: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], nodeTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodeTemplate", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], nodeToggle: [{ type: i0.Output, args: ["nodeToggle"] }] } });
726
726
 
727
727
  /**
728
728
  * Generated bundle index. Do not edit.