@praxisui/charts 3.0.0-beta.8 → 3.0.0-beta.9

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.
@@ -5000,4 +5000,3 @@ var praxisChartConfigEditor = /*#__PURE__*/Object.freeze({
5000
5000
  */
5001
5001
 
5002
5002
  export { ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_I18N, PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_COMBO, PRAXIS_CHART_BACKEND_MOCK_DONUT, PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR, PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR, PRAXIS_CHART_BACKEND_MOCK_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartsText };
5003
- //# sourceMappingURL=praxisui-charts.mjs.map
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@praxisui/charts",
3
- "version": "3.0.0-beta.8",
3
+ "version": "3.0.0-beta.9",
4
4
  "description": "Metadata-driven charts library for Praxis UI Angular with engine adapters and Apache ECharts as the initial renderer.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
7
7
  "@angular/core": "^20.0.0",
8
- "@praxisui/core": "^3.0.0-beta.8"
8
+ "@praxisui/core": "^3.0.0-beta.9"
9
9
  },
10
10
  "dependencies": {
11
11
  "echarts": "^6.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"praxisui-charts.mjs","sources":["../../../projects/praxis-charts/src/lib/services/chart-data-transformer.service.ts","../../../projects/praxis-charts/src/lib/services/chart-option-builder.service.ts","../../../projects/praxis-charts/src/lib/adapters/echarts/echarts-engine.adapter.ts","../../../projects/praxis-charts/src/lib/services/chart-contract-normalizer.service.ts","../../../projects/praxis-charts/src/lib/services/chart-contract-validation.service.ts","../../../projects/praxis-charts/src/lib/services/chart-canonical-contract-mapper.service.ts","../../../projects/praxis-charts/src/lib/services/chart-stats-api.service.ts","../../../projects/praxis-charts/src/lib/tokens/chart-engine.token.ts","../../../projects/praxis-charts/src/lib/components/praxis-chart/praxis-chart.component.ts","../../../projects/praxis-charts/src/lib/mocks/chart-drilldown.mock.ts","../../../projects/praxis-charts/src/lib/components/praxis-chart-drilldown-panel/praxis-chart-drilldown-panel.component.ts","../../../projects/praxis-charts/src/lib/components/praxis-chart-state-probe/praxis-chart-state-probe.component.ts","../../../projects/praxis-charts/src/lib/praxis-chart.metadata.ts","../../../projects/praxis-charts/src/lib/praxis-chart-drilldown-panel.metadata.ts","../../../projects/praxis-charts/src/lib/praxis-chart-state-probe.metadata.ts","../../../projects/praxis-charts/src/lib/examples/praxis-chart-showcase-widget.component.ts","../../../projects/praxis-charts/src/lib/examples/praxis-chart-showcase-widget.metadata.ts","../../../projects/praxis-charts/src/lib/providers/charts.providers.ts","../../../projects/praxis-charts/src/lib/services/chart-metadata-registration.service.ts","../../../projects/praxis-charts/src/lib/services/chart-schema-mapper.service.ts","../../../projects/praxis-charts/src/lib/services/chart-backend-payload-adapter.service.ts","../../../projects/praxis-charts/src/lib/mocks/chart-backend.mock.ts","../../../projects/praxis-charts/src/lib/examples/chart-backend-mock.examples.ts","../../../projects/praxis-charts/src/lib/examples/praxis-chart-composition-showcase.component.ts","../../../projects/praxis-charts/src/lib/i18n/charts.en-US.ts","../../../projects/praxis-charts/src/lib/i18n/charts.pt-BR.ts","../../../projects/praxis-charts/src/lib/i18n/charts.i18n.ts","../../../projects/praxis-charts/src/lib/config-editor/services/chart-editor-defaults.service.ts","../../../projects/praxis-charts/src/lib/config-editor/services/chart-editor-preview-mapper.service.ts","../../../projects/praxis-charts/src/lib/config-editor/praxis-chart-config-editor.ts","../../../projects/praxis-charts/src/lib/config-editor/praxis-chart-config-editor.html","../../../projects/praxis-charts/src/public-api.ts","../../../projects/praxis-charts/src/praxisui-charts.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type { PraxisChartAxisType } from '../models/chart-axis.model';\nimport type { PraxisChartDataRow } from '../models/chart-dataset.model';\nimport type { PraxisChartSeriesConfig } from '../models/chart-series.model';\n\nexport interface PraxisChartCartesianSeries {\n id: string;\n name: string;\n type: 'bar' | 'line' | 'scatter';\n axis?: 'primary' | 'secondary';\n stack?: string;\n smooth?: boolean;\n area?: boolean;\n color?: string;\n labelsVisible?: boolean;\n points: Array<number | null | [number | string, number | null]>;\n}\n\nexport interface PraxisChartPieSlice {\n id: string;\n name: string;\n value: number;\n color?: string;\n}\n\nexport interface PraxisChartTransformedData {\n mode: 'cartesian' | 'pie' | 'scatter';\n categories: string[];\n series: PraxisChartCartesianSeries[];\n slices: PraxisChartPieSlice[];\n hasData: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartDataTransformerService {\n transform(config: PraxisChartConfig, rows: PraxisChartDataRow[]): PraxisChartTransformedData {\n if (config.type === 'pie' || config.type === 'donut') {\n return this.transformPie(config, rows);\n }\n\n if (config.type === 'scatter') {\n return this.transformScatter(config, rows);\n }\n\n return this.transformCartesian(config, rows);\n }\n\n private transformCartesian(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n ): PraxisChartTransformedData {\n const categoryField = config.axes?.x?.field;\n if (!categoryField || !rows.length || !config.series.length) {\n return {\n mode: 'cartesian',\n categories: [],\n series: [],\n slices: [],\n hasData: false,\n };\n }\n\n const categories = Array.from(\n new Set(rows.map((row) => this.normalizeCategory(row[categoryField]))),\n );\n\n const series = config.series.map((seriesConfig) =>\n this.buildCartesianSeries(config, seriesConfig, rows, categories),\n );\n\n return {\n mode: 'cartesian',\n categories,\n series,\n slices: [],\n hasData: categories.length > 0 && series.some((item) => item.points.some((point) => point !== null)),\n };\n }\n\n private transformPie(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n ): PraxisChartTransformedData {\n const seriesConfig = config.series[0];\n const categoryField = seriesConfig?.categoryField ?? config.axes?.x?.field;\n if (!seriesConfig || !categoryField || !rows.length) {\n return {\n mode: 'pie',\n categories: [],\n series: [],\n slices: [],\n hasData: false,\n };\n }\n\n const bucket = new Map<string, number>();\n for (const row of rows) {\n const key = this.normalizeCategory(row[categoryField]);\n const nextValue = this.extractMetricValue(row, seriesConfig);\n bucket.set(key, (bucket.get(key) ?? 0) + nextValue);\n }\n\n const slices = Array.from(bucket.entries()).map(([name, value]) => ({\n id: `${seriesConfig.id}:${name}`,\n name,\n value,\n color: seriesConfig.color,\n }));\n\n return {\n mode: 'pie',\n categories: slices.map((slice) => slice.name),\n series: [],\n slices,\n hasData: slices.some((slice) => slice.value > 0),\n };\n }\n\n private buildCartesianSeries(\n config: PraxisChartConfig,\n seriesConfig: PraxisChartSeriesConfig,\n rows: PraxisChartDataRow[],\n categories: string[],\n ): PraxisChartCartesianSeries {\n const categoryField = config.axes?.x?.field;\n const byCategory = new Map<string, PraxisChartDataRow[]>();\n\n for (const row of rows) {\n const key = this.normalizeCategory(row[categoryField!]);\n const bucket = byCategory.get(key) ?? [];\n bucket.push(row);\n byCategory.set(key, bucket);\n }\n\n return {\n id: seriesConfig.id,\n name: seriesConfig.name ?? seriesConfig.metric?.label ?? seriesConfig.id,\n type: this.resolveCartesianSeriesType(config, seriesConfig),\n axis: seriesConfig.axis ?? 'primary',\n stack: config.type === 'stacked-bar' || config.type === 'stacked-area' ? seriesConfig.stackId ?? 'stack-1' : undefined,\n smooth: seriesConfig.smooth ?? this.isAreaLikeSeries(config, seriesConfig),\n area: this.isAreaLikeSeries(config, seriesConfig),\n color: seriesConfig.color,\n labelsVisible: seriesConfig.labels?.visible ?? false,\n points: categories.map((category) => {\n const bucket = byCategory.get(category) ?? [];\n if (!bucket.length) return null;\n return this.aggregate(bucket, seriesConfig);\n }),\n };\n }\n\n private resolveCartesianSeriesType(\n config: PraxisChartConfig,\n seriesConfig: PraxisChartSeriesConfig,\n ): 'bar' | 'line' {\n if (config.type === 'combo') {\n return seriesConfig.type === 'bar' ? 'bar' : 'line';\n }\n\n return config.type === 'bar' || config.type === 'stacked-bar' || config.type === 'horizontal-bar'\n ? 'bar'\n : 'line';\n }\n\n private isAreaLikeSeries(\n config: PraxisChartConfig,\n seriesConfig: PraxisChartSeriesConfig,\n ): boolean {\n if (config.type === 'combo') {\n return seriesConfig.type === 'area';\n }\n\n return config.type === 'area' || config.type === 'stacked-area';\n }\n\n private transformScatter(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n ): PraxisChartTransformedData {\n const xField = config.axes?.x?.field;\n const seriesConfig = config.series[0];\n const yField = config.axes?.y?.field ?? seriesConfig?.metric?.field;\n if (!xField || !seriesConfig || !yField || !rows.length) {\n return {\n mode: 'scatter',\n categories: [],\n series: [],\n slices: [],\n hasData: false,\n };\n }\n\n const points = rows\n .map((row) => {\n const xValue = this.extractScatterXValue(row[xField], config.axes?.x?.type);\n const yValue = this.extractMetricValue(row, {\n ...seriesConfig,\n metric: {\n ...seriesConfig.metric,\n field: yField,\n },\n });\n if (xValue === null || !Number.isFinite(yValue)) {\n return null;\n }\n\n return [xValue, yValue] as [number | string, number];\n })\n .filter((point): point is [number | string, number] => point !== null);\n\n return {\n mode: 'scatter',\n categories: [],\n series: [\n {\n id: seriesConfig.id,\n name: seriesConfig.name ?? seriesConfig.metric?.label ?? seriesConfig.id,\n type: 'scatter',\n color: seriesConfig.color,\n labelsVisible: seriesConfig.labels?.visible ?? false,\n points,\n },\n ],\n slices: [],\n hasData: points.length > 0,\n };\n }\n\n private aggregate(rows: PraxisChartDataRow[], seriesConfig: PraxisChartSeriesConfig): number {\n const aggregation = seriesConfig.metric?.aggregation ?? 'sum';\n if (aggregation === 'count') {\n return rows.length;\n }\n\n const values = rows\n .map((row) => this.extractMetricValue(row, seriesConfig))\n .filter((value) => Number.isFinite(value));\n\n if (!values.length) return 0;\n\n switch (aggregation) {\n case 'avg':\n return values.reduce((sum, value) => sum + value, 0) / values.length;\n case 'min':\n return Math.min(...values);\n case 'max':\n return Math.max(...values);\n case 'sum':\n default:\n return values.reduce((sum, value) => sum + value, 0);\n }\n }\n\n private extractMetricValue(row: PraxisChartDataRow, seriesConfig: PraxisChartSeriesConfig): number {\n const field = seriesConfig.metric?.field;\n if (!field) {\n return 1;\n }\n\n const value = row[field];\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n return 0;\n }\n\n private normalizeCategory(value: unknown): string {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n if (value === null || value === undefined || value === '') {\n return 'undefined';\n }\n\n return String(value);\n }\n\n private extractScatterXValue(\n value: unknown,\n axisType?: PraxisChartAxisType,\n ): number | string | null {\n if (value instanceof Date) {\n return axisType === 'time' ? value.toISOString() : value.getTime();\n }\n\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) return null;\n const parsed = Number(trimmed);\n if (axisType === 'value' && Number.isFinite(parsed)) {\n return parsed;\n }\n return trimmed;\n }\n\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { EChartsCoreOption, PieSeriesOption, ScatterSeriesOption } from 'echarts';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport { PraxisChartDataTransformerService } from './chart-data-transformer.service';\nimport type { PraxisChartDataRow } from '../models/chart-dataset.model';\n\nconst PRAXIS_CHART_DEFAULT_PALETTE = ['#1263b4', '#0f766e', '#f08c00', '#c92a2a', '#7b61ff'];\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartOptionBuilderService {\n constructor(\n private readonly transformer: PraxisChartDataTransformerService,\n ) {}\n\n build(config: PraxisChartConfig, rows: PraxisChartDataRow[]): EChartsCoreOption {\n const transformed = this.transformer.transform(config, rows);\n const palette = config.theme?.palette?.length ? config.theme.palette : PRAXIS_CHART_DEFAULT_PALETTE;\n const tooltipEnabled = config.theme?.tooltip?.enabled ?? true;\n const legendVisible = config.theme?.legend?.visible ?? true;\n\n if (transformed.mode === 'pie') {\n const pieSeries: PieSeriesOption = {\n type: 'pie',\n radius: config.type === 'donut' ? ['45%', '70%'] : '70%',\n label: {\n show: config.series[0]?.labels?.visible ?? false,\n },\n data: transformed.slices.map((slice) => ({\n name: slice.name,\n value: slice.value,\n itemStyle: slice.color ? { color: slice.color } : undefined,\n })),\n };\n\n return {\n backgroundColor: config.theme?.backgroundColor,\n color: palette,\n title: {\n text: this.resolveText(config.title),\n subtext: this.resolveText(config.subtitle),\n left: 'center',\n },\n tooltip: tooltipEnabled ? { trigger: 'item' } : undefined,\n legend: legendVisible\n ? { show: true, orient: 'horizontal', bottom: 0 }\n : { show: false },\n series: [pieSeries],\n };\n }\n\n if (transformed.mode === 'scatter') {\n const scatterSeries: ScatterSeriesOption[] = transformed.series.map((series) => ({\n id: series.id,\n name: series.name,\n type: 'scatter',\n label: { show: series.labelsVisible },\n itemStyle: series.color ? { color: series.color } : undefined,\n data: series.points as Array<[number | string, number]>,\n }));\n\n return {\n backgroundColor: config.theme?.backgroundColor,\n color: palette,\n title: {\n text: this.resolveText(config.title),\n subtext: this.resolveText(config.subtitle),\n left: 'left',\n },\n tooltip: tooltipEnabled ? { trigger: 'item' } : undefined,\n legend: legendVisible ? { show: true, top: 0 } : { show: false },\n grid: this.buildGrid(),\n xAxis: {\n type: config.axes?.x?.type ?? 'value',\n name: config.axes?.x?.label,\n axisLabel: {\n show: config.axes?.x?.labels?.visible ?? true,\n rotate: config.axes?.x?.labels?.rotate ?? 0,\n },\n },\n yAxis: {\n type: config.axes?.y?.type ?? 'value',\n name: config.axes?.y?.label,\n min: config.axes?.y?.min,\n max: config.axes?.y?.max,\n axisLabel: {\n show: config.axes?.y?.labels?.visible ?? true,\n },\n },\n series: scatterSeries,\n };\n }\n\n const horizontal = config.orientation === 'horizontal' || config.type === 'horizontal-bar';\n\n return {\n backgroundColor: config.theme?.backgroundColor,\n color: palette,\n title: {\n text: this.resolveText(config.title),\n subtext: this.resolveText(config.subtitle),\n left: 'left',\n },\n tooltip: tooltipEnabled\n ? { trigger: config.theme?.tooltip?.trigger ?? 'axis' }\n : undefined,\n legend: legendVisible\n ? { show: true, top: 0 }\n : { show: false },\n grid: this.buildGrid(),\n xAxis: horizontal\n ? {\n type: config.axes?.y?.type ?? 'value',\n name: config.axes?.y?.label,\n min: config.axes?.y?.min,\n max: config.axes?.y?.max,\n axisLabel: {\n show: config.axes?.y?.labels?.visible ?? true,\n },\n }\n : {\n type: config.axes?.x?.type ?? 'category',\n name: config.axes?.x?.label,\n data: transformed.categories,\n axisLabel: {\n show: config.axes?.x?.labels?.visible ?? true,\n rotate: config.axes?.x?.labels?.rotate ?? 0,\n },\n },\n yAxis: horizontal\n ? {\n type: config.axes?.x?.type ?? 'category',\n name: config.axes?.x?.label,\n data: transformed.categories,\n axisLabel: {\n show: config.axes?.x?.labels?.visible ?? true,\n rotate: config.axes?.x?.labels?.rotate ?? 0,\n },\n }\n : this.buildCartesianYAxis(config),\n series: transformed.series.map((series) => ({\n id: series.id,\n name: series.name,\n type: series.type,\n yAxisIndex: series.axis === 'secondary' ? 1 : 0,\n stack: series.stack,\n smooth: series.smooth,\n areaStyle: series.area ? {} : undefined,\n label: { show: series.labelsVisible },\n itemStyle: series.color ? { color: series.color } : undefined,\n data: series.points,\n })),\n };\n }\n\n private resolveText(value: unknown): string | undefined {\n if (!value) return undefined;\n if (typeof value === 'string') return value;\n if (typeof value === 'object' && value && 'text' in (value as Record<string, unknown>)) {\n const text = (value as { text?: string }).text;\n return text || undefined;\n }\n return undefined;\n }\n\n private buildGrid(): EChartsCoreOption['grid'] {\n return {\n top: 56,\n right: 24,\n bottom: 32,\n left: 48,\n // ECharts deprecou containLabel; esta combinacao preserva o mesmo comportamento\n // sem depender da feature legacy de grid.\n outerBoundsMode: 'same',\n outerBoundsContain: 'axisLabel',\n };\n }\n\n private buildCartesianYAxis(config: PraxisChartConfig) {\n const primaryAxis = {\n type: config.axes?.y?.type ?? 'value',\n name: config.axes?.y?.label,\n min: config.axes?.y?.min,\n max: config.axes?.y?.max,\n axisLabel: {\n show: config.axes?.y?.labels?.visible ?? true,\n },\n };\n\n if (!config.axes?.ySecondary) {\n return primaryAxis;\n }\n\n return [\n primaryAxis,\n {\n type: config.axes.ySecondary.type ?? 'value',\n name: config.axes.ySecondary.label,\n min: config.axes.ySecondary.min,\n max: config.axes.ySecondary.max,\n position: config.axes.ySecondary.position ?? 'right',\n axisLabel: {\n show: config.axes.ySecondary.labels?.visible ?? true,\n },\n },\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { EChartsCoreOption, EChartsType } from 'echarts/core';\nimport { init, use } from 'echarts/core';\nimport { BarChart, LineChart, PieChart, ScatterChart } from 'echarts/charts';\nimport {\n AriaComponent,\n DatasetComponent,\n GridComponent,\n LegendComponent,\n TitleComponent,\n TooltipComponent,\n TransformComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport type {\n PraxisChartEngineAdapter,\n PraxisChartEngineRenderPayload,\n} from '../chart-engine.adapter';\nimport { PraxisChartOptionBuilderService } from '../../services/chart-option-builder.service';\n\nuse([\n AriaComponent,\n BarChart,\n CanvasRenderer,\n DatasetComponent,\n GridComponent,\n LegendComponent,\n LineChart,\n PieChart,\n ScatterChart,\n TitleComponent,\n TooltipComponent,\n TransformComponent,\n]);\n\n@Injectable()\nexport class EChartsEngineAdapter implements PraxisChartEngineAdapter {\n private chart?: EChartsType;\n\n constructor(\n private readonly optionBuilder: PraxisChartOptionBuilderService,\n ) {}\n\n render(host: HTMLElement, payload: PraxisChartEngineRenderPayload): void {\n if (!this.chart) {\n this.chart = init(host);\n }\n\n const option: EChartsCoreOption = this.optionBuilder.build(payload.config, payload.data);\n this.chart?.setOption(option, true);\n this.chart?.off('click');\n this.chart?.on('click', (params: any) => {\n payload.onPointClick?.({\n chartId: payload.config.id,\n seriesId: params?.seriesId,\n seriesName: params?.seriesName,\n category: params?.name,\n value: params?.value,\n data: params?.data,\n });\n });\n }\n\n resize(): void {\n this.chart?.resize();\n }\n\n destroy(): void {\n this.chart?.dispose();\n this.chart = undefined;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { PraxisXUiChartContract } from '../models/x-ui-chart.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ChartContractNormalizerService {\n normalize(input: PraxisXUiChartContract): PraxisXUiChartContract {\n let document = structuredClone(input);\n\n document = this.normalizeMotion(document);\n document = this.normalizeKindSpecificFields(document);\n document = this.normalizeOperationSpecificFields(document);\n document = this.normalizeSourceSpecificFields(document);\n\n return document;\n }\n\n private normalizeMotion(document: PraxisXUiChartContract): PraxisXUiChartContract {\n if (!document.motion) {\n return document;\n }\n\n if (document.motion.enabled === false) {\n return {\n ...document,\n motion: {\n enabled: false,\n },\n };\n }\n\n return {\n ...document,\n motion: {\n enabled: document.motion.enabled ?? true,\n preset: document.motion.preset ?? 'standard',\n },\n };\n }\n\n private normalizeKindSpecificFields(document: PraxisXUiChartContract): PraxisXUiChartContract {\n let nextDocument = document;\n\n if (document.kind === 'horizontal-bar') {\n nextDocument = {\n ...nextDocument,\n orientation: 'horizontal',\n };\n }\n\n if (document.kind !== 'combo' && document.metrics?.length) {\n nextDocument = {\n ...nextDocument,\n metrics: document.metrics.map((metric) => ({\n ...metric,\n axis: undefined,\n seriesKind: undefined,\n })),\n };\n }\n\n if ((document.kind === 'pie' || document.kind === 'donut' || this.isDistribution(document)) && document.metrics?.length) {\n nextDocument = {\n ...nextDocument,\n metrics: document.metrics.slice(0, 1),\n };\n }\n\n return nextDocument;\n }\n\n private normalizeOperationSpecificFields(document: PraxisXUiChartContract): PraxisXUiChartContract {\n if (document.source.kind !== 'praxis.stats') {\n return document;\n }\n\n const options = { ...document.source.options };\n\n if (document.source.operation !== 'timeseries') {\n options.granularity = undefined;\n options.fillGaps = undefined;\n }\n\n if (document.source.operation !== 'distribution') {\n options.mode = undefined;\n options.bucketSize = undefined;\n options.bucketCount = undefined;\n }\n\n return {\n ...document,\n source: {\n ...document.source,\n options,\n },\n };\n }\n\n private normalizeSourceSpecificFields(document: PraxisXUiChartContract): PraxisXUiChartContract {\n if (document.source.kind === 'derived') {\n return {\n ...document,\n source: {\n kind: 'derived',\n },\n };\n }\n\n return document;\n }\n\n private isDistribution(document: PraxisXUiChartContract): boolean {\n return document.source.kind === 'praxis.stats' && document.source.operation === 'distribution';\n }\n}\n","import { Injectable } from '@angular/core';\nimport type {\n PraxisXUiChartContract,\n PraxisXUiChartEventAction,\n} from '../models/x-ui-chart.model';\nimport type {\n ChartContractValidationIssue,\n ChartContractValidationResult,\n} from './chart-contract-validation.models';\n\n@Injectable({ providedIn: 'root' })\nexport class ChartContractValidationService {\n validate(document: PraxisXUiChartContract): ChartContractValidationResult {\n const issues: ChartContractValidationIssue[] = [];\n\n this.validateSource(document, issues);\n this.validateTheme(document, issues);\n this.validateMetrics(document, issues);\n this.validateKinds(document, issues);\n this.validateEvents(document, issues);\n\n return {\n valid: !issues.some((issue) => issue.severity === 'error'),\n issues,\n };\n }\n\n private validateSource(\n document: PraxisXUiChartContract,\n issues: ChartContractValidationIssue[],\n ): void {\n if (document.source.kind !== 'praxis.stats' && document.source.kind !== 'derived') {\n issues.push(this.error(\n 'unsupported-source-kind',\n 'source.kind',\n `x-ui.chart source.kind=\"${document.source.kind}\" is not supported in @praxisui/charts.`,\n ));\n }\n\n if (document.source.kind === 'praxis.stats' && !document.source.resource?.trim()) {\n issues.push(this.error(\n 'missing-resource',\n 'source.resource',\n 'x-ui.chart source.resource is required for source.kind=\"praxis.stats\".',\n ));\n }\n\n if (document.source.kind === 'praxis.stats' && !document.source.operation) {\n issues.push(this.error(\n 'missing-operation',\n 'source.operation',\n 'x-ui.chart source.operation is required for source.kind=\"praxis.stats\".',\n ));\n }\n }\n\n private validateTheme(\n document: PraxisXUiChartContract,\n issues: ChartContractValidationIssue[],\n ): void {\n if (document.theme?.palette && typeof document.theme.palette === 'string') {\n issues.push(this.error(\n 'palette-token-unsupported',\n 'theme.palette',\n 'x-ui.chart theme.palette as palette token reference is not yet implemented in @praxisui/charts.',\n ));\n }\n\n if (document.theme?.variant) {\n issues.push(this.error(\n 'theme-variant-unsupported',\n 'theme.variant',\n 'x-ui.chart theme.variant is not yet implemented in @praxisui/charts.',\n ));\n }\n }\n\n private validateMetrics(\n document: PraxisXUiChartContract,\n issues: ChartContractValidationIssue[],\n ): void {\n if (!document.metrics?.length) {\n issues.push(this.error(\n 'missing-metric',\n 'metrics',\n 'x-ui.chart requires at least one metric for the current @praxisui/charts runtime.',\n ));\n }\n\n const aggregations = [\n ...(document.metrics?.map((metric) => metric.aggregation).filter(Boolean) ?? []),\n ...(document.aggregations?.map((aggregation) => aggregation.operation) ?? []),\n ];\n\n if (aggregations.includes('distinct-count')) {\n issues.push(this.error(\n 'distinct-count-unsupported',\n 'metrics',\n 'x-ui.chart aggregation \"distinct-count\" is not yet implemented in @praxisui/charts.',\n ));\n }\n }\n\n private validateKinds(\n document: PraxisXUiChartContract,\n issues: ChartContractValidationIssue[],\n ): void {\n const metricCount = document.metrics?.length ?? 0;\n\n if (document.kind !== 'pie' && document.kind !== 'donut' && !document.dimensions?.length) {\n issues.push(this.error(\n 'missing-dimension',\n 'dimensions',\n 'x-ui.chart cartesian charts require at least one dimension in the current @praxisui/charts runtime.',\n ));\n }\n\n if ((document.kind === 'pie' || document.kind === 'donut') && !document.dimensions?.[0]?.field) {\n issues.push(this.error(\n 'pie-missing-dimension',\n 'dimensions[0].field',\n 'x-ui.chart pie/donut charts require a first dimension for category mapping.',\n ));\n }\n\n if ((document.kind === 'pie' || document.kind === 'donut') && metricCount > 1) {\n issues.push(this.error(\n 'pie-multi-metric',\n 'metrics',\n 'x-ui.chart pie/donut charts with multiple metrics are not yet implemented in @praxisui/charts.',\n ));\n }\n\n if (document.kind === 'combo' && metricCount < 2) {\n issues.push(this.error(\n 'combo-min-metrics',\n 'metrics',\n 'x-ui.chart combo charts require at least two metrics.',\n ));\n }\n\n if (document.kind !== 'combo' && document.metrics?.some((metric) => metric.axis === 'secondary')) {\n issues.push(this.error(\n 'secondary-axis-non-combo',\n 'metrics',\n 'x-ui.chart axis=\"secondary\" is supported only for combo charts in @praxisui/charts.',\n ));\n }\n\n if (\n document.source.kind === 'praxis.stats'\n && document.source.operation === 'distribution'\n && metricCount > 1\n ) {\n issues.push(this.error(\n 'distribution-single-metric',\n 'metrics',\n 'x-ui.chart praxis.stats distribution currently supports only a single metric in @praxisui/charts.',\n ));\n }\n\n if (document.kind === 'horizontal-bar' && document.orientation && document.orientation !== 'horizontal') {\n issues.push(this.error(\n 'horizontal-bar-orientation',\n 'orientation',\n 'x-ui.chart kind=\"horizontal-bar\" requires orientation=\"horizontal\" when orientation is provided.',\n ));\n }\n\n if (document.kind === 'scatter' && !document.dimensions?.[0]?.field) {\n issues.push(this.error(\n 'scatter-missing-dimension',\n 'dimensions[0].field',\n 'x-ui.chart scatter charts require dimensions[0].field for the x axis.',\n ));\n }\n\n if (document.kind === 'scatter' && !document.metrics?.[0]?.field) {\n issues.push(this.error(\n 'scatter-missing-metric',\n 'metrics[0].field',\n 'x-ui.chart scatter charts require metrics[0].field for the y axis.',\n ));\n }\n\n if (\n document.kind === 'combo'\n && document.source.kind === 'praxis.stats'\n && document.source.operation !== 'group-by'\n && document.source.operation !== 'timeseries'\n ) {\n issues.push(this.error(\n 'combo-operation-unsupported',\n 'source.operation',\n 'x-ui.chart combo charts over praxis.stats currently support only group-by or timeseries operations in @praxisui/charts.',\n ));\n }\n }\n\n private validateEvents(\n document: PraxisXUiChartContract,\n issues: ChartContractValidationIssue[],\n ): void {\n this.validateEventAction('pointClick', document.events?.pointClick, issues);\n this.validateEventAction('drillDown', document.events?.drillDown, issues);\n\n if (document.events?.selectionChange) {\n issues.push(this.error(\n 'selection-change-unsupported',\n 'events.selectionChange',\n 'x-ui.chart selectionChange/crossFilter declarative runtime actions are not yet implemented in @praxisui/charts.',\n ));\n }\n\n if (document.events?.crossFilter) {\n issues.push(this.error(\n 'cross-filter-unsupported',\n 'events.crossFilter',\n 'x-ui.chart selectionChange/crossFilter declarative runtime actions are not yet implemented in @praxisui/charts.',\n ));\n }\n }\n\n private validateEventAction(\n eventKey: 'pointClick' | 'drillDown',\n eventAction: PraxisXUiChartEventAction | undefined,\n issues: ChartContractValidationIssue[],\n ): void {\n if (!eventAction?.action) {\n return;\n }\n\n if (eventAction.action !== 'emit' && !eventAction.target?.trim()) {\n issues.push(this.error(\n `${eventKey}-missing-target`,\n `events.${eventKey}.target`,\n `x-ui.chart events.${eventKey}.target is required when action=\"${eventAction.action}\".`,\n ));\n }\n }\n\n private error(code: string, field: string, message: string): ChartContractValidationIssue {\n return {\n severity: 'error',\n code,\n field,\n message,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { PraxisTextValue } from '@praxisui/core';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type {\n PraxisChartDistributionStatsRequest,\n PraxisChartDataSource,\n PraxisChartGroupByStatsRequest,\n PraxisChartQueryConfig,\n PraxisChartQueryMetricConfig,\n PraxisChartStatsMetricRequest,\n PraxisChartStatsOrderBy,\n PraxisChartStatsRequest,\n PraxisChartTimeSeriesStatsRequest,\n} from '../models/chart-dataset.model';\nimport type { PraxisChartSeriesConfig, PraxisChartType } from '../models/chart-series.model';\nimport type {\n PraxisXUiChartAggregation,\n PraxisXUiChartContract,\n PraxisXUiChartMetric,\n PraxisXUiChartMotion,\n PraxisXUiChartStatsDistributionMode,\n PraxisXUiChartStatsSourceOptions,\n PraxisXUiChartStatsOrderBy,\n PraxisXUiChartTextValue,\n} from '../models/x-ui-chart.model';\nimport { ChartContractNormalizerService } from './chart-contract-normalizer.service';\nimport { ChartContractValidationService } from './chart-contract-validation.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartCanonicalContractMapperService {\n constructor(\n private readonly normalizer: ChartContractNormalizerService = new ChartContractNormalizerService(),\n private readonly validator: ChartContractValidationService = new ChartContractValidationService(),\n ) {}\n\n toPraxisChartConfig(contract: PraxisXUiChartContract): PraxisChartConfig {\n const normalizedContract = this.normalizer.normalize(contract);\n const validation = this.validator.validate(normalizedContract);\n const firstError = validation.issues.find((issue) => issue.severity === 'error');\n\n if (firstError) {\n throw new Error(firstError.message);\n }\n\n return {\n id: normalizedContract.chartId,\n type: normalizedContract.kind as PraxisChartType,\n orientation: this.resolveOrientation(normalizedContract),\n title: this.mapTextValue(normalizedContract.title),\n subtitle: this.mapTextValue(normalizedContract.subtitle),\n height: normalizedContract.height,\n axes: this.buildAxes(normalizedContract),\n series: this.buildSeries(normalizedContract),\n dataSource: this.buildDataSource(normalizedContract),\n interactions: this.buildInteractions(normalizedContract),\n theme: this.buildTheme(normalizedContract),\n motion: this.buildMotion(normalizedContract.motion),\n emptyState: normalizedContract.state?.empty\n ? {\n title: this.mapTextValue(normalizedContract.state.empty.title),\n description: this.mapTextValue(normalizedContract.state.empty.description),\n }\n : undefined,\n state: {\n loadingLabel: this.mapTextValue(normalizedContract.state?.loading?.title),\n error: normalizedContract.state?.error\n ? {\n title: this.mapTextValue(normalizedContract.state.error.title),\n description: this.mapTextValue(normalizedContract.state.error.description),\n }\n : undefined,\n },\n };\n }\n\n private buildAxes(contract: PraxisXUiChartContract): PraxisChartConfig['axes'] {\n const firstDimension = contract.dimensions?.[0];\n const firstMetric = contract.metrics?.[0];\n const secondaryMetric = contract.metrics?.find((metric) => metric.axis === 'secondary');\n const metricCount = contract.metrics?.length ?? 0;\n\n if (contract.kind === 'pie' || contract.kind === 'donut') {\n return {\n x: {\n field: firstDimension?.field,\n label: this.toLabel(firstDimension?.label),\n },\n };\n }\n\n if (contract.kind === 'scatter') {\n return {\n x: {\n field: firstDimension?.field,\n label: this.toLabel(firstDimension?.label),\n type: firstDimension?.role === 'time' ? 'time' : 'value',\n },\n y: {\n field: firstMetric?.field,\n label: this.toLabel(firstMetric?.label),\n type: 'value',\n },\n };\n }\n\n return {\n x: {\n field: firstDimension?.field,\n label: this.toLabel(firstDimension?.label),\n type: firstDimension?.role === 'time' ? 'time' : 'category',\n },\n y: {\n label: metricCount > 1 ? undefined : this.toLabel(firstMetric?.label),\n type: 'value',\n },\n ySecondary: contract.kind === 'combo' && secondaryMetric\n ? {\n label: this.toLabel(secondaryMetric.label),\n type: 'value',\n position: 'right',\n }\n : undefined,\n };\n }\n\n private buildSeries(contract: PraxisXUiChartContract): PraxisChartSeriesConfig[] {\n const firstDimension = contract.dimensions?.[0];\n const labelsVisible = this.resolveToggle(contract.labels);\n\n return (contract.metrics ?? []).map((metric, index) => ({\n id: `${metric.field}-${index + 1}`,\n name: this.toLabel(metric.label) ?? metric.field,\n type: this.resolveSeriesType(contract.kind, metric.seriesKind, index),\n axis: metric.axis ?? 'primary',\n categoryField: contract.kind === 'pie' || contract.kind === 'donut' ? firstDimension?.field : undefined,\n metric: {\n field: metric.field,\n aggregation: this.mapAggregation(metric.aggregation),\n label: this.toLabel(metric.label),\n },\n color: metric.color,\n stackId: contract.kind === 'stacked-bar' || contract.kind === 'stacked-area' ? 'stack-1' : undefined,\n labels: labelsVisible ? { visible: true } : undefined,\n smooth: this.shouldSmoothSeries(contract.kind, metric.seriesKind),\n }));\n }\n\n private buildDataSource(contract: PraxisXUiChartContract): PraxisChartDataSource | undefined {\n if (contract.source.kind === 'derived') {\n return undefined;\n }\n\n return {\n kind: 'remote',\n resourcePath: contract.source.resource!,\n schemaId: contract.source.resource,\n query: this.buildQuery(contract),\n };\n }\n\n private buildQuery(contract: PraxisXUiChartContract): PraxisChartQueryConfig | undefined {\n if (contract.source.kind !== 'praxis.stats') {\n return undefined;\n }\n\n const filtersFromContract = this.toQueryFilterMap(contract.filters);\n const combinedFilters = {\n ...filtersFromContract,\n };\n\n return {\n sourceKind: 'praxis.stats',\n statsOperation: contract.source.operation,\n granularity: contract.source.options?.granularity,\n fillGaps: contract.source.options?.fillGaps,\n distributionMode: contract.source.options?.mode,\n bucketSize: contract.source.options?.bucketSize,\n bucketCount: contract.source.options?.bucketCount,\n statsOrderBy: this.mapStatsOrderBy(contract.source.options?.orderBy),\n statsPath: this.buildStatsPath(contract),\n statsRequest: this.buildStatsRequest(contract, combinedFilters),\n dimensions: contract.dimensions?.map((dimension) => dimension.field),\n metrics: contract.metrics?.map((metric) => ({\n field: metric.field,\n aggregation: this.mapAggregation(metric.aggregation),\n alias: metric.field,\n })),\n filters: Object.keys(combinedFilters).length ? combinedFilters : undefined,\n sort: contract.sort?.map((item) => `${item.field}:${item.direction}`),\n limit: contract.limit ?? contract.source.options?.limit,\n };\n }\n\n private buildInteractions(contract: PraxisXUiChartContract): PraxisChartConfig['interactions'] | undefined {\n return {\n pointClick: Boolean(contract.events?.pointClick || contract.events?.drillDown),\n selection: Boolean(contract.events?.selectionChange),\n drillDown: Boolean(contract.events?.drillDown),\n };\n }\n\n private buildTheme(contract: PraxisXUiChartContract): PraxisChartConfig['theme'] | undefined {\n return {\n palette: Array.isArray(contract.theme?.palette) ? contract.theme.palette : undefined,\n legend: { visible: this.resolveToggle(contract.legend, true) },\n tooltip: {\n enabled: this.resolveToggle(contract.tooltip, true),\n trigger: contract.kind === 'pie' || contract.kind === 'donut' || contract.kind === 'scatter' ? 'item' : 'axis',\n },\n };\n }\n\n private buildMotion(motion?: PraxisXUiChartMotion): PraxisChartConfig['motion'] | undefined {\n if (!motion) {\n return undefined;\n }\n\n return {\n enabled: motion.enabled,\n preset: motion.preset,\n };\n }\n\n private resolveOrientation(\n contract: PraxisXUiChartContract,\n ): PraxisChartConfig['orientation'] | undefined {\n if (contract.kind === 'horizontal-bar') {\n return 'horizontal';\n }\n\n return contract.orientation;\n }\n\n private resolveSeriesType(\n chartKind: PraxisXUiChartContract['kind'],\n seriesKind: PraxisXUiChartMetric['seriesKind'] | undefined,\n index: number,\n ): PraxisChartType {\n if (chartKind === 'combo') {\n return seriesKind ?? (index === 0 ? 'bar' : 'line');\n }\n\n return chartKind === 'stacked-bar' ? 'bar' : chartKind;\n }\n\n private shouldSmoothSeries(\n chartKind: PraxisXUiChartContract['kind'],\n seriesKind: PraxisXUiChartMetric['seriesKind'] | undefined,\n ): boolean | undefined {\n if (chartKind === 'combo') {\n return seriesKind === 'line' || seriesKind === 'area' ? true : undefined;\n }\n\n return chartKind === 'line' || chartKind === 'area' || chartKind === 'stacked-area' ? true : undefined;\n }\n\n private mapTextValue(value?: PraxisXUiChartTextValue): PraxisTextValue | undefined {\n if (!value) return undefined;\n if (typeof value === 'string') return value;\n return {\n key: value.key,\n text: value.fallback,\n };\n }\n\n private toLabel(value?: PraxisXUiChartTextValue): string | undefined {\n if (!value) return undefined;\n if (typeof value === 'string') return value;\n return value.fallback || value.key;\n }\n\n private resolveToggle(\n value: boolean | { enabled: boolean } | undefined,\n defaultValue = false,\n ): boolean {\n if (typeof value === 'boolean') return value;\n if (typeof value === 'object' && value) return value.enabled;\n return defaultValue;\n }\n\n private mapAggregation(\n aggregation?: PraxisXUiChartAggregation,\n ): PraxisChartQueryMetricConfig['aggregation'] {\n switch (aggregation) {\n case 'avg':\n case 'min':\n case 'max':\n case 'count':\n case 'sum':\n return aggregation;\n case undefined:\n return undefined;\n default:\n throw new Error(`x-ui.chart aggregation \"${aggregation}\" is not yet implemented in @praxisui/charts.`);\n }\n }\n\n private toQueryFilterMap(\n filters?: PraxisXUiChartContract['filters'],\n ): Record<string, unknown> | undefined {\n if (!filters?.length) return undefined;\n\n return filters.reduce<Record<string, unknown>>((acc, filter) => {\n if (filter.value !== undefined) {\n acc[filter.field] = filter.value;\n return acc;\n }\n\n if (filter.values !== undefined) {\n acc[filter.field] = filter.values;\n }\n\n return acc;\n }, {});\n }\n\n private buildStatsPath(contract: PraxisXUiChartContract): string {\n return `${contract.source.resource!.replace(/\\/+$/, '')}/stats/${contract.source.operation}`;\n }\n\n private buildStatsRequest(\n contract: PraxisXUiChartContract,\n filters: Record<string, unknown>,\n ): PraxisChartStatsRequest {\n const field = this.resolveStatsField(contract);\n const metrics = this.buildStatsMetricRequests(contract);\n const metric = metrics[0];\n const limit = contract.limit ?? contract.source.options?.limit;\n const orderBy = this.mapStatsOrderByToBackend(contract.source.options?.orderBy);\n const requestMetrics = metrics.length > 1 ? metrics : undefined;\n\n switch (contract.source.operation) {\n case 'group-by':\n return {\n filter: filters,\n field,\n metric,\n metrics: requestMetrics,\n limit,\n orderBy,\n } satisfies PraxisChartGroupByStatsRequest;\n case 'timeseries':\n return {\n filter: filters,\n field,\n granularity: this.mapStatsGranularityToBackend(contract.source.options?.granularity),\n metric,\n metrics: requestMetrics,\n fillGaps: contract.source.options?.fillGaps,\n } satisfies PraxisChartTimeSeriesStatsRequest;\n case 'distribution':\n return {\n filter: filters,\n field,\n mode: this.mapDistributionModeToBackend(contract.source.options?.mode),\n metric,\n bucketSize: contract.source.options?.bucketSize,\n bucketCount: contract.source.options?.bucketCount,\n limit,\n orderBy,\n } satisfies PraxisChartDistributionStatsRequest;\n default:\n throw new Error(`x-ui.chart source.operation \"${contract.source.operation}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private resolveStatsField(contract: PraxisXUiChartContract): string {\n const dimensionField = contract.dimensions?.[0]?.field?.trim();\n if (dimensionField) {\n return dimensionField;\n }\n\n throw new Error('x-ui.chart requires dimensions[0].field to derive the canonical praxis.stats request.');\n }\n\n private buildStatsMetricRequest(contract: PraxisXUiChartContract): PraxisChartStatsMetricRequest {\n const metric = contract.metrics?.[0];\n if (!metric) {\n throw new Error('x-ui.chart requires metrics[0] to derive the canonical praxis.stats request.');\n }\n\n const operation = this.mapStatsMetricOperation(metric.aggregation);\n return {\n operation,\n field: operation === 'COUNT' ? undefined : metric.field,\n alias: metric.field,\n };\n }\n\n private buildStatsMetricRequests(contract: PraxisXUiChartContract): PraxisChartStatsMetricRequest[] {\n if (!contract.metrics?.length) {\n throw new Error('x-ui.chart requires at least one metric to derive the canonical praxis.stats request.');\n }\n\n return contract.metrics.map((metric) => {\n const operation = this.mapStatsMetricOperation(metric.aggregation);\n return {\n operation,\n field: operation === 'COUNT' ? undefined : metric.field,\n alias: metric.field,\n };\n });\n }\n\n private mapStatsOrderBy(value?: PraxisXUiChartStatsOrderBy): PraxisChartStatsOrderBy | undefined {\n if (!value) return undefined;\n\n switch (value) {\n case 'key-asc':\n case 'key-desc':\n case 'value-asc':\n case 'value-desc':\n return value;\n default:\n throw new Error(`x-ui.chart source.options.orderBy \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapStatsOrderByToBackend(\n value?: PraxisXUiChartStatsOrderBy,\n ): 'KEY_ASC' | 'KEY_DESC' | 'VALUE_ASC' | 'VALUE_DESC' | undefined {\n switch (value) {\n case 'key-asc':\n return 'KEY_ASC';\n case 'key-desc':\n return 'KEY_DESC';\n case 'value-asc':\n return 'VALUE_ASC';\n case 'value-desc':\n return 'VALUE_DESC';\n case undefined:\n return undefined;\n default:\n throw new Error(`x-ui.chart source.options.orderBy \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapStatsGranularityToBackend(\n value?: PraxisXUiChartStatsSourceOptions['granularity'],\n ): 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'QUARTER' | 'YEAR' {\n switch (value) {\n case 'hour':\n return 'HOUR';\n case 'day':\n return 'DAY';\n case 'week':\n return 'WEEK';\n case 'month':\n case undefined:\n return 'MONTH';\n case 'quarter':\n return 'QUARTER';\n case 'year':\n return 'YEAR';\n default:\n throw new Error(`x-ui.chart source.options.granularity \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapDistributionModeToBackend(\n value?: PraxisXUiChartStatsDistributionMode,\n ): 'TERMS' | 'HISTOGRAM' {\n switch (value) {\n case 'histogram':\n return 'HISTOGRAM';\n case 'terms':\n case undefined:\n return 'TERMS';\n default:\n throw new Error(`x-ui.chart source.options.mode \"${value}\" is not supported in @praxisui/charts.`);\n }\n }\n\n private mapStatsMetricOperation(\n aggregation?: PraxisXUiChartAggregation,\n ): 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX' {\n switch (aggregation) {\n case undefined:\n case 'count':\n return 'COUNT';\n case 'sum':\n return 'SUM';\n case 'avg':\n return 'AVG';\n case 'min':\n return 'MIN';\n case 'max':\n return 'MAX';\n default:\n throw new Error(`x-ui.chart aggregation \"${aggregation}\" is not yet implemented in @praxisui/charts.`);\n }\n }\n}\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { API_URL, ApiUrlConfig, buildApiUrl } from '@praxisui/core';\nimport { Observable, map, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type {\n PraxisChartDataRow,\n PraxisChartStatsMetricRequest,\n PraxisChartStatsRequest,\n} from '../models/chart-dataset.model';\nimport type { PraxisChartQueryRequestEvent } from '../models/chart-events.model';\n\ninterface PraxisChartStatsBucket {\n key?: string | number | null;\n label?: string | null;\n value?: number | null;\n count?: number | null;\n values?: Record<string, number | null> | null;\n from?: number | null;\n to?: number | null;\n}\n\ninterface PraxisChartTimeSeriesPoint {\n start?: string | null;\n end?: string | null;\n label?: string | null;\n value?: number | null;\n count?: number | null;\n values?: Record<string, number | null> | null;\n}\n\ninterface PraxisChartGroupByStatsResponse {\n metric?: PraxisChartStatsMetricRequest;\n metrics?: PraxisChartStatsMetricRequest[];\n field: string;\n buckets: PraxisChartStatsBucket[];\n}\n\ninterface PraxisChartTimeSeriesStatsResponse {\n metric?: PraxisChartStatsMetricRequest;\n metrics?: PraxisChartStatsMetricRequest[];\n field: string;\n granularity?: string;\n points: PraxisChartTimeSeriesPoint[];\n}\n\ninterface PraxisChartDistributionStatsResponse {\n metric?: PraxisChartStatsMetricRequest;\n field: string;\n mode?: string;\n buckets: PraxisChartStatsBucket[];\n}\n\ntype PraxisChartStatsOperationResponse =\n | PraxisChartGroupByStatsResponse\n | PraxisChartTimeSeriesStatsResponse\n | PraxisChartDistributionStatsResponse;\n\ninterface PraxisChartStatsApiEnvelope<T> {\n success?: boolean;\n data: T;\n message?: string;\n timestamp?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartStatsApiService {\n constructor(\n private readonly http: HttpClient,\n @Inject(API_URL) private readonly apiUrl: ApiUrlConfig,\n ) {}\n\n execute(\n event: PraxisChartQueryRequestEvent,\n config: PraxisChartConfig,\n ): Observable<PraxisChartDataRow[]> {\n const query = event.query;\n const statsRequest = query?.statsRequest;\n if (!query?.statsPath || !statsRequest) {\n return throwError(() =>\n new Error('PraxisChartStatsApiService requires query.statsPath and query.statsRequest for praxis.stats execution.'),\n );\n }\n\n const categoryField = this.resolveCategoryField(config, statsRequest);\n const url = this.buildStatsUrl(query.statsPath);\n\n return this.http\n .post<PraxisChartStatsApiEnvelope<PraxisChartStatsOperationResponse>>(url, statsRequest)\n .pipe(\n map((response) =>\n this.toChartRows(response?.data, statsRequest, categoryField, config),\n ),\n catchError((error) => this.handleHttpError(error)),\n );\n }\n\n private toChartRows(\n response: PraxisChartStatsOperationResponse | null | undefined,\n request: PraxisChartStatsRequest,\n categoryField: string,\n config: PraxisChartConfig,\n ): PraxisChartDataRow[] {\n if (!response) {\n return [];\n }\n\n const metricBindings = this.resolveMetricBindings(config, request, response);\n\n if ('points' in response) {\n return response.points.map((point) => {\n const category = point.label ?? point.start ?? point.end ?? '';\n return {\n [categoryField]: category,\n ...this.projectMetricValues(metricBindings, point.values, point.value, point.count),\n key: point.start ?? point.label ?? point.end ?? category,\n label: point.label ?? category,\n value: point.value ?? null,\n count: point.count ?? null,\n start: point.start ?? null,\n end: point.end ?? null,\n granularity: response.granularity ?? null,\n };\n });\n }\n\n if ('buckets' in response) {\n return response.buckets.map((bucket) => {\n const category = this.resolveBucketCategory(bucket);\n return {\n [categoryField]: category,\n ...this.projectMetricValues(metricBindings, bucket.values, bucket.value, bucket.count),\n key: bucket.key ?? null,\n label: bucket.label ?? category,\n value: bucket.value ?? null,\n count: bucket.count ?? null,\n from: bucket.from ?? null,\n to: bucket.to ?? null,\n mode: 'mode' in response ? response.mode ?? null : null,\n requestMode: 'mode' in request ? request.mode : null,\n };\n });\n }\n\n return [];\n }\n\n private resolveBucketCategory(bucket: PraxisChartStatsBucket): string {\n if (bucket.label !== null && bucket.label !== undefined && bucket.label !== '') {\n return String(bucket.label);\n }\n if (bucket.key !== null && bucket.key !== undefined && bucket.key !== '') {\n return String(bucket.key);\n }\n if (bucket.from !== null || bucket.to !== null) {\n return `${bucket.from ?? ''} - ${bucket.to ?? ''}`.trim();\n }\n return '';\n }\n\n private resolveMetricValue(\n value: number | null | undefined,\n count: number | null | undefined,\n ): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n if (typeof count === 'number' && Number.isFinite(count)) {\n return count;\n }\n return 0;\n }\n\n private resolveCategoryField(config: PraxisChartConfig, request: PraxisChartStatsRequest): string {\n const firstSeries = config.series[0];\n return (\n firstSeries?.categoryField\n || config.axes?.x?.field\n || request.field\n || 'category'\n );\n }\n\n private resolveMetricBindings(\n config: PraxisChartConfig,\n request: PraxisChartStatsRequest,\n response: PraxisChartStatsOperationResponse,\n ): Array<{ field: string; alias: string }> {\n const queryMetrics = config.dataSource?.kind === 'remote'\n ? (config.dataSource.query?.metrics ?? [])\n : [];\n\n if (queryMetrics.length) {\n return queryMetrics.map((metric, index) => ({\n field: metric.field || `value${index + 1}`,\n alias: metric.alias || metric.field || `value${index + 1}`,\n }));\n }\n\n const responseMetrics = 'metrics' in response ? response.metrics : undefined;\n if (responseMetrics?.length) {\n return responseMetrics.map((metric, index) => ({\n field: metric.alias || metric.field || `value${index + 1}`,\n alias: metric.alias || metric.field || `value${index + 1}`,\n }));\n }\n\n const requestMetrics = 'metrics' in request ? request.metrics : undefined;\n if (requestMetrics?.length) {\n return requestMetrics.map((metric, index) => ({\n field: metric.alias || metric.field || `value${index + 1}`,\n alias: metric.alias || metric.field || `value${index + 1}`,\n }));\n }\n\n const metric = ('metric' in response && response.metric) || ('metric' in request ? request.metric : undefined);\n return [\n {\n field: metric?.alias || metric?.field || config.series[0]?.metric?.field || 'value',\n alias: metric?.alias || metric?.field || config.series[0]?.metric?.field || 'value',\n },\n ];\n }\n\n private projectMetricValues(\n bindings: Array<{ field: string; alias: string }>,\n values: Record<string, number | null> | null | undefined,\n primaryValue: number | null | undefined,\n count: number | null | undefined,\n ): Record<string, number> {\n return bindings.reduce<Record<string, number>>((acc, binding, index) => {\n const rawValue = values?.[binding.alias];\n acc[binding.field] = index === 0\n ? this.resolveMetricValue(rawValue ?? primaryValue, count)\n : this.resolveMetricValue(rawValue, null);\n return acc;\n }, {});\n }\n\n private buildStatsUrl(statsPath: string): string {\n const base = this.buildDefaultApiBase();\n const normalizedStatsPath = this.normalizePath(statsPath);\n const resolvedStatsPath = this.shouldStripLeadingApiSegment(base)\n ? this.stripLeadingApiSegment(normalizedStatsPath)\n : normalizedStatsPath;\n return `${base}/${resolvedStatsPath}`;\n }\n\n private buildDefaultApiBase(): string {\n const entry = this.apiUrl?.default ?? {};\n return buildApiUrl(entry).replace(/\\/+$/, '');\n }\n\n private normalizePath(value: string): string {\n return String(value || '').trim().replace(/^\\/+|\\/+$/g, '');\n }\n\n private stripLeadingApiSegment(value: string): string {\n return value.replace(/^api\\/+/i, '');\n }\n\n private shouldStripLeadingApiSegment(base: string): boolean {\n return /\\/api$/i.test(base);\n }\n\n private handleHttpError(error: unknown) {\n if (error instanceof HttpErrorResponse) {\n const detail = typeof error.message === 'string' && error.message.trim()\n ? error.message\n : `HTTP ${error.status || 0}`;\n return throwError(() => new Error(detail));\n }\n\n return throwError(() =>\n error instanceof Error ? error : new Error('Unexpected failure during praxis.stats execution.'),\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { PraxisChartEngineAdapter } from '../adapters/chart-engine.adapter';\n\nexport const PRAXIS_CHART_ENGINE = new InjectionToken<PraxisChartEngineAdapter>(\n 'PRAXIS_CHART_ENGINE',\n);\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n afterNextRender,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n booleanAttribute,\n} from '@angular/core';\nimport {\n PraxisI18nService,\n SETTINGS_PANEL_BRIDGE,\n type SettingsPanelBridge,\n} from '@praxisui/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subscription } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport type { PraxisChartEngineAdapter } from '../../adapters/chart-engine.adapter';\nimport { EChartsEngineAdapter } from '../../adapters/echarts/echarts-engine.adapter';\nimport type { PraxisChartConfig } from '../../models/chart-config.model';\nimport type { PraxisChartDataRow } from '../../models/chart-dataset.model';\nimport type {\n PraxisChartLoadState,\n PraxisChartPointEvent,\n PraxisChartQueryRequestEvent,\n} from '../../models/chart-events.model';\nimport type { PraxisXUiChartContract } from '../../models/x-ui-chart.model';\nimport { PraxisChartDataTransformerService } from '../../services/chart-data-transformer.service';\nimport { PraxisChartCanonicalContractMapperService } from '../../services/chart-canonical-contract-mapper.service';\nimport { PraxisChartStatsApiService } from '../../services/chart-stats-api.service';\nimport { PRAXIS_CHART_ENGINE } from '../../tokens/chart-engine.token';\nimport type {\n ChartEditorFieldOption,\n ChartEditorResourceOption,\n ChartEditorTargetOption,\n} from '../../config-editor/models/chart-config-editor-options.model';\n\ntype PraxisDataQueryContextBridge = {\n filters?: Record<string, unknown> | null;\n sort?: string[] | null;\n limit?: number | null;\n page?: {\n index?: number | null;\n size?: number | null;\n } | null;\n meta?: Record<string, unknown> | null;\n};\n\n@Component({\n selector: 'praxis-chart',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule, MatTooltipModule],\n providers: [\n EChartsEngineAdapter,\n {\n provide: PRAXIS_CHART_ENGINE,\n useExisting: EChartsEngineAdapter,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"praxis-chart-shell\" [style.height]=\"resolvedHeight()\">\n @if (canOpenConfigEditor()) {\n <button\n class=\"praxis-chart-settings-trigger\"\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"editChartLabel()\"\n [matTooltip]=\"editChartLabel()\"\n (click)=\"openConfigEditor()\"\n >\n <mat-icon>tune</mat-icon>\n </button>\n }\n\n @if (loadState() === 'loading') {\n <div class=\"praxis-chart-state praxis-chart-state-loading\">\n <div class=\"praxis-chart-spinner\" aria-hidden=\"true\"></div>\n @if (loadingLabel()) {\n <div class=\"praxis-chart-state-title\">{{ loadingLabel() }}</div>\n }\n </div>\n } @else if (loadState() === 'error') {\n <div class=\"praxis-chart-state praxis-chart-state-error\">\n @if (errorTitle()) {\n <div class=\"praxis-chart-state-title\">{{ errorTitle() }}</div>\n }\n @if (errorDescription()) {\n <div class=\"praxis-chart-state-description\">{{ errorDescription() }}</div>\n }\n </div>\n } @else if (loadState() === 'empty') {\n <div class=\"praxis-chart-state praxis-chart-state-empty\">\n @if (emptyTitle()) {\n <div class=\"praxis-chart-state-title\">{{ emptyTitle() }}</div>\n }\n @if (emptyDescription()) {\n <div class=\"praxis-chart-state-description\">{{ emptyDescription() }}</div>\n }\n </div>\n } @else {\n <div #chartHost class=\"praxis-chart-host\"></div>\n }\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n height: 100%;\n min-width: 0;\n }\n\n :host-context(.pdx-shell.expanded) .praxis-chart-shell,\n :host-context(.pdx-shell.fullscreen) .praxis-chart-shell {\n height: 100% !important;\n }\n\n .praxis-chart-shell {\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 240px;\n border-radius: 18px;\n overflow: hidden;\n background:\n radial-gradient(circle at top left, rgba(18, 99, 180, 0.12), transparent 38%),\n linear-gradient(180deg, rgba(18, 99, 180, 0.03), rgba(18, 99, 180, 0));\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 72%, transparent);\n }\n\n .praxis-chart-settings-trigger {\n position: absolute;\n top: 10px;\n right: 10px;\n z-index: 3;\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 88%, rgba(18, 99, 180, 0.12));\n backdrop-filter: blur(8px);\n }\n\n .praxis-chart-host {\n width: 100%;\n height: 100%;\n }\n\n .praxis-chart-state {\n height: 100%;\n min-height: 240px;\n display: grid;\n place-content: center;\n gap: 10px;\n padding: 24px;\n text-align: center;\n }\n\n .praxis-chart-state-title {\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .praxis-chart-state-description {\n font-size: 0.925rem;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n max-width: 36rem;\n }\n\n .praxis-chart-spinner {\n width: 34px;\n height: 34px;\n margin-inline: auto;\n border-radius: 999px;\n border: 3px solid rgba(18, 99, 180, 0.18);\n border-top-color: rgba(18, 99, 180, 0.82);\n animation: praxis-chart-spin 0.8s linear infinite;\n }\n\n @keyframes praxis-chart-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `,\n ],\n})\nexport class PraxisChartComponent {\n readonly config = input.required<PraxisChartConfig>();\n readonly data = input<PraxisChartDataRow[] | null>(null);\n readonly chartDocument = input<PraxisXUiChartContract | null>(null);\n readonly filterCriteria = input<Record<string, unknown> | null>(null);\n readonly queryContext = input<PraxisDataQueryContextBridge | null>(null);\n readonly enableCustomization = input(false, { transform: booleanAttribute });\n readonly availableResources = input<ReadonlyArray<ChartEditorResourceOption>>([]);\n readonly availableFields = input<ReadonlyArray<ChartEditorFieldOption>>([]);\n readonly availableTargets = input<ReadonlyArray<ChartEditorTargetOption>>([]);\n\n readonly pointClick = output<PraxisChartPointEvent>();\n readonly queryRequest = output<PraxisChartQueryRequestEvent>();\n readonly loadStateChange = output<PraxisChartLoadState>();\n readonly chartDocumentApplied = output<PraxisXUiChartContract>();\n readonly chartDocumentSaved = output<PraxisXUiChartContract>();\n\n private readonly chartHost = viewChild<ElementRef<HTMLDivElement>>('chartHost');\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly engine = inject<PraxisChartEngineAdapter>(PRAXIS_CHART_ENGINE);\n private readonly transformer = inject(PraxisChartDataTransformerService);\n private readonly canonicalMapper = inject(PraxisChartCanonicalContractMapperService);\n private readonly statsApi = inject(PraxisChartStatsApiService);\n private readonly i18n = inject(PraxisI18nService);\n private readonly settingsPanel = inject(SETTINGS_PANEL_BRIDGE, { optional: true }) as SettingsPanelBridge | null;\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly resizeObserver = signal<ResizeObserver | null>(null);\n private readonly shellObserver = signal<MutationObserver | null>(null);\n private readonly currentLoadState = signal<PraxisChartLoadState>('idle');\n private readonly remoteResolvedData = signal<PraxisChartDataRow[] | null>(null);\n private readonly remoteRuntimeState = signal<'idle' | 'loading' | 'ready' | 'error'>('idle');\n private readonly remoteTechnicalError = signal<string | null>(null);\n private readonly runtimeChartDocument = signal<PraxisXUiChartContract | null>(null);\n private readonly mappedRuntimeConfig = signal<PraxisChartConfig | null>(null);\n private readonly chartDocumentMappingError = signal<string | null>(null);\n private readonly fillContainerHeight = signal(false);\n private previousRemoteSignature: string | null = null;\n private previousDocumentSignature: string | null = null;\n private editorSessionSubscriptions: Subscription[] = [];\n\n readonly effectiveConfig = computed<PraxisChartConfig>(() => {\n const base = this.mappedRuntimeConfig() ?? this.config();\n const runtimeQueryContext = normalizePraxisDataQueryContextBridge(this.queryContext());\n const runtimeFilters = resolvePraxisFilterCriteriaBridge(this.filterCriteria(), runtimeQueryContext);\n if (\n !runtimeQueryContext\n && !Object.keys(runtimeFilters).length\n ) {\n return base;\n }\n\n if (base.dataSource?.kind !== 'remote' || !base.dataSource.query) {\n return base;\n }\n\n return mergeRemoteQueryContext(base, runtimeQueryContext, runtimeFilters);\n });\n\n readonly resolvedData = computed(() => {\n const inputData = this.data();\n if (inputData !== null && inputData !== undefined) {\n return inputData;\n }\n\n const remoteData = this.remoteResolvedData();\n if (remoteData !== null) {\n return remoteData;\n }\n\n const dataSource = this.effectiveConfig().dataSource;\n if (dataSource?.kind === 'local') {\n return dataSource.items ?? [];\n }\n\n return [];\n });\n\n readonly resolvedHeight = computed(() => {\n if (this.fillContainerHeight()) {\n return '100%';\n }\n const value = this.effectiveConfig().height;\n if (typeof value === 'number') return `${value}px`;\n return value || 'var(--praxis-chart-runtime-height, 320px)';\n });\n\n readonly renderConfig = computed<PraxisChartConfig>(() => {\n const config = this.effectiveConfig();\n const explicitData = this.data();\n const remoteState = this.remoteRuntimeState();\n const remoteData = this.remoteResolvedData();\n\n if (explicitData !== null && explicitData !== undefined) {\n return config;\n }\n\n if (config.dataSource?.kind !== 'remote') {\n return config;\n }\n\n if (remoteState === 'loading') {\n return {\n ...config,\n preferredLoadState: 'loading',\n };\n }\n\n if (remoteState === 'error') {\n return {\n ...config,\n preferredLoadState: 'error',\n state: config.state?.error\n ? {\n ...config.state,\n error: {\n ...config.state.error,\n technicalDetails: this.remoteTechnicalError() ?? config.state.error.technicalDetails,\n },\n }\n : config.state,\n };\n }\n\n if (remoteData !== null) {\n return {\n ...config,\n preferredLoadState: undefined,\n series: config.series.map((series) => ({\n ...series,\n metric: {\n ...series.metric,\n aggregation: 'sum',\n field: series.metric?.field || 'value',\n },\n })),\n };\n }\n\n return config;\n });\n\n readonly loadingLabel = computed(() =>\n this.i18n.resolve(this.renderConfig().state?.loadingLabel),\n );\n readonly emptyTitle = computed(() =>\n this.i18n.resolve(this.renderConfig().emptyState?.title),\n );\n readonly emptyDescription = computed(() =>\n this.i18n.resolve(this.renderConfig().emptyState?.description),\n );\n readonly errorTitle = computed(() =>\n this.chartDocumentMappingError()\n ? this.i18n.resolve({\n key: 'praxis.charts.runtime.invalidDocumentTitle',\n text: 'Chart configuration is invalid',\n })\n : this.i18n.resolve(this.renderConfig().state?.error?.title),\n );\n readonly errorDescription = computed(() =>\n this.chartDocumentMappingError()\n ? this.i18n.resolve({\n key: 'praxis.charts.runtime.invalidDocumentDescription',\n text: 'The canonical chart document could not be mapped to the current Praxis chart runtime. Review the chart contract before continuing.',\n })\n : this.i18n.resolve(this.renderConfig().state?.error?.description),\n );\n readonly editChartLabel = computed(() =>\n this.i18n.resolve({ key: 'praxis.charts.runtime.editChart', text: 'Edit chart settings' }),\n );\n\n readonly loadState = computed<PraxisChartLoadState>(() => {\n if (this.chartDocumentMappingError()) {\n return 'error';\n }\n\n const config = this.renderConfig();\n if (config.preferredLoadState === 'loading') return 'loading';\n if (config.preferredLoadState === 'error') return 'error';\n\n const dataSource = config.dataSource;\n const explicitData = this.data();\n if (dataSource?.kind === 'remote' && (explicitData === null || explicitData === undefined)) {\n return this.remoteRuntimeState() === 'ready' ? 'ready' : 'loading';\n }\n\n const transformed = this.transformer.transform(config, this.resolvedData());\n return transformed.hasData ? 'ready' : 'empty';\n });\n\n constructor() {\n afterNextRender(() => {\n this.observeShellSizingContext();\n });\n\n effect(() => {\n const document = this.chartDocument();\n const signature = document ? JSON.stringify(document) : null;\n if (signature === this.previousDocumentSignature) {\n return;\n }\n\n this.previousDocumentSignature = signature;\n this.runtimeChartDocument.set(document ? structuredClone(document) : null);\n });\n\n effect(() => {\n const runtimeDocument = this.runtimeChartDocument();\n if (!runtimeDocument) {\n this.mappedRuntimeConfig.set(null);\n this.chartDocumentMappingError.set(null);\n return;\n }\n\n try {\n this.mappedRuntimeConfig.set(this.canonicalMapper.toPraxisChartConfig(runtimeDocument));\n this.chartDocumentMappingError.set(null);\n } catch (error) {\n this.mappedRuntimeConfig.set(null);\n this.chartDocumentMappingError.set(\n error instanceof Error && error.message.trim()\n ? error.message\n : 'Invalid x-ui.chart document for Praxis chart runtime.',\n );\n }\n });\n\n effect(() => {\n const config = this.effectiveConfig();\n const explicitData = this.data();\n const nextSignature = explicitData === null || explicitData === undefined\n ? this.buildRemoteSignature(config)\n : null;\n\n if (nextSignature === this.previousRemoteSignature) {\n return;\n }\n\n this.previousRemoteSignature = nextSignature;\n this.remoteResolvedData.set(null);\n this.remoteRuntimeState.set('idle');\n this.remoteTechnicalError.set(null);\n });\n\n effect(() => {\n const nextState = this.loadState();\n if (this.currentLoadState() !== nextState) {\n this.currentLoadState.set(nextState);\n this.loadStateChange.emit(nextState);\n }\n });\n\n effect(() => {\n const effectiveConfig = this.effectiveConfig();\n const explicitData = this.data();\n if (effectiveConfig.dataSource?.kind !== 'remote' || (explicitData !== null && explicitData !== undefined)) {\n return;\n }\n\n if (this.remoteRuntimeState() === 'loading' || this.remoteResolvedData() !== null) {\n return;\n }\n\n const event = {\n chartId: effectiveConfig.id,\n dataSource: effectiveConfig.dataSource,\n query: effectiveConfig.dataSource.query,\n queryContext: normalizePraxisDataQueryContextBridge(this.queryContext()),\n } satisfies PraxisChartQueryRequestEvent;\n\n this.queryRequest.emit(event);\n this.remoteRuntimeState.set('loading');\n this.remoteResolvedData.set([]);\n this.remoteTechnicalError.set(null);\n\n this.statsApi.execute(event, effectiveConfig)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (rows) => {\n this.remoteResolvedData.set(rows);\n this.remoteRuntimeState.set('ready');\n this.remoteTechnicalError.set(null);\n },\n error: (error) => {\n this.remoteResolvedData.set([]);\n this.remoteRuntimeState.set('error');\n this.remoteTechnicalError.set(\n error instanceof Error && error.message.trim()\n ? error.message\n : 'praxis.stats request failed',\n );\n },\n });\n });\n\n effect(() => {\n if (this.loadState() !== 'ready') {\n this.engine.destroy();\n return;\n }\n\n const host = this.chartHost()?.nativeElement;\n if (!host) return;\n\n this.engine.render(host, {\n config: this.renderConfig(),\n data: this.resolvedData(),\n onPointClick: (event) => this.pointClick.emit(event),\n });\n\n this.ensureResizeObserver(host);\n });\n\n this.destroyRef.onDestroy(() => {\n this.clearEditorSessionSubscriptions();\n this.resizeObserver()?.disconnect();\n this.shellObserver()?.disconnect();\n this.engine.destroy();\n });\n }\n\n canOpenConfigEditor(): boolean {\n return this.enableCustomization() && !!this.settingsPanel && !!this.runtimeChartDocument();\n }\n\n async openConfigEditor(): Promise<void> {\n if (!this.settingsPanel) {\n return;\n }\n\n const document = this.runtimeChartDocument();\n if (!document) {\n return;\n }\n\n const { PraxisChartConfigEditor } = await import('../../config-editor/praxis-chart-config-editor');\n this.clearEditorSessionSubscriptions();\n\n const ref = this.settingsPanel.open({\n id: `chart.${document.chartId || this.effectiveConfig().id || 'praxis-chart'}`,\n title: this.editChartLabel(),\n content: {\n component: PraxisChartConfigEditor,\n inputs: {\n chartDocument: document,\n document,\n mode: 'edit',\n readonly: false,\n availableResources: this.availableResources(),\n availableFields: this.availableFields(),\n availableTargets: this.availableTargets(),\n },\n },\n });\n\n const appliedSubscription = ref.applied$\n .subscribe((nextDocument) => {\n if (!nextDocument) {\n return;\n }\n\n const clone = structuredClone(nextDocument);\n this.runtimeChartDocument.set(clone);\n this.chartDocumentApplied.emit(clone);\n });\n\n const savedSubscription = ref.saved$\n .subscribe((nextDocument) => {\n if (!nextDocument) {\n return;\n }\n\n const clone = structuredClone(nextDocument);\n this.runtimeChartDocument.set(clone);\n this.chartDocumentSaved.emit(clone);\n });\n\n this.editorSessionSubscriptions = [appliedSubscription, savedSubscription];\n }\n\n private ensureResizeObserver(host: HTMLElement): void {\n if (this.resizeObserver()) {\n return;\n }\n\n const observer = new ResizeObserver(() => {\n this.engine.resize();\n });\n\n observer.observe(host);\n this.resizeObserver.set(observer);\n }\n\n private buildRemoteSignature(config: PraxisChartConfig): string | null {\n if (config.dataSource?.kind !== 'remote') {\n return null;\n }\n\n return JSON.stringify({\n id: config.id,\n resourcePath: config.dataSource.resourcePath,\n query: config.dataSource.query,\n });\n }\n\n private clearEditorSessionSubscriptions(): void {\n for (const subscription of this.editorSessionSubscriptions) {\n subscription.unsubscribe();\n }\n\n this.editorSessionSubscriptions = [];\n }\n\n private observeShellSizingContext(): void {\n const host = this.hostElement.nativeElement;\n const shell = host.closest('.pdx-shell');\n if (!shell) {\n this.fillContainerHeight.set(false);\n return;\n }\n\n const syncShellMode = () => {\n this.fillContainerHeight.set(\n shell.classList.contains('expanded') || shell.classList.contains('fullscreen'),\n );\n this.scheduleResizeAfterShellModeChange();\n };\n\n syncShellMode();\n\n const observer = new MutationObserver(() => {\n syncShellMode();\n });\n observer.observe(shell, {\n attributes: true,\n attributeFilter: ['class'],\n });\n this.shellObserver.set(observer);\n }\n\n private scheduleResizeAfterShellModeChange(): void {\n const runResize = () => {\n this.engine.resize();\n };\n\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n runResize();\n requestAnimationFrame(() => {\n runResize();\n });\n });\n return;\n }\n\n setTimeout(() => {\n runResize();\n }, 0);\n }\n}\n\nfunction normalizeFilterCriteria(\n criteria: Record<string, unknown> | null | undefined,\n): Record<string, unknown> | null {\n if (!criteria) return null;\n const next = Object.entries(criteria).reduce<Record<string, unknown>>((acc, [key, value]) => {\n if (value === null || value === undefined) return acc;\n if (Array.isArray(value) && value.length === 0) return acc;\n if (typeof value === 'string' && value.trim() === '') return acc;\n acc[key] = value;\n return acc;\n }, {});\n return Object.keys(next).length ? next : null;\n}\n\nfunction normalizePraxisDataQueryContextBridge(\n context?: PraxisDataQueryContextBridge | null,\n): PraxisDataQueryContextBridge | null {\n if (!context || typeof context !== 'object') return null;\n\n const filters = normalizeFilterCriteria(context.filters || null);\n const meta = normalizeFilterCriteria(context.meta || null);\n const sort = Array.isArray(context.sort)\n ? context.sort\n .map((item) => (typeof item === 'string' ? item.trim() : ''))\n .filter((item) => item.length > 0)\n : [];\n const limit = typeof context.limit === 'number' && Number.isFinite(context.limit)\n ? Math.max(0, Math.trunc(context.limit))\n : null;\n const page = context.page && typeof context.page === 'object'\n ? {\n index: typeof context.page.index === 'number' && Number.isFinite(context.page.index)\n ? Math.max(0, Math.trunc(context.page.index))\n : null,\n size: typeof context.page.size === 'number' && Number.isFinite(context.page.size)\n ? Math.max(0, Math.trunc(context.page.size))\n : null,\n }\n : null;\n\n const next: PraxisDataQueryContextBridge = {};\n if (filters) next.filters = filters;\n if (sort.length) next.sort = sort;\n if (limit !== null) next.limit = limit;\n if (page && (page.index !== null || page.size !== null)) next.page = page;\n if (meta) next.meta = meta;\n\n return Object.keys(next).length ? next : null;\n}\n\nfunction resolvePraxisFilterCriteriaBridge(\n filterCriteria?: Record<string, unknown> | null,\n queryContext?: PraxisDataQueryContextBridge | null,\n): Record<string, unknown> {\n return {\n ...(normalizeFilterCriteria(filterCriteria) || {}),\n ...(normalizePraxisDataQueryContextBridge(queryContext)?.filters || {}),\n };\n}\n\nfunction mergeRemoteQueryContext(\n config: PraxisChartConfig,\n queryContext: PraxisDataQueryContextBridge | null,\n runtimeFilters: Record<string, unknown>,\n): PraxisChartConfig {\n const dataSource = config.dataSource;\n if (dataSource?.kind !== 'remote' || !dataSource.query) return config;\n const query = dataSource.query;\n\n const nextFilters = {\n ...(query.filters || {}),\n ...runtimeFilters,\n };\n const statsRequest = query.statsRequest && typeof query.statsRequest === 'object'\n ? {\n ...query.statsRequest,\n filter: {\n ...(((query.statsRequest as { filter?: Record<string, unknown> }).filter) || {}),\n ...runtimeFilters,\n },\n }\n : query.statsRequest;\n\n return {\n ...config,\n dataSource: {\n ...dataSource,\n query: {\n ...query,\n filters: nextFilters,\n sort: queryContext?.sort?.length ? queryContext.sort : query.sort,\n limit: queryContext?.limit ?? query.limit,\n statsRequest,\n },\n },\n };\n}\n","import type { PraxisChartDataRow } from '../models/chart-dataset.model';\n\nexport const PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH: Record<string, PraxisChartDataRow[]> = {\n Jan: [\n { segment: 'Enterprise', total: 52000 },\n { segment: 'Mid-market', total: 38000 },\n { segment: 'SMB', total: 30000 },\n ],\n Fev: [\n { segment: 'Enterprise', total: 61000 },\n { segment: 'Mid-market', total: 42000 },\n { segment: 'SMB', total: 35000 },\n ],\n Mar: [\n { segment: 'Enterprise', total: 68000 },\n { segment: 'Mid-market', total: 47000 },\n { segment: 'SMB', total: 36000 },\n ],\n Abr: [\n { segment: 'Enterprise', total: 64000 },\n { segment: 'Mid-market', total: 49500 },\n { segment: 'SMB', total: 36000 },\n ],\n};\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { PraxisChartPointEvent } from '../../models/chart-events.model';\nimport { PraxisChartComponent } from '../praxis-chart/praxis-chart.component';\nimport { PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH } from '../../mocks/chart-drilldown.mock';\n\n@Component({\n selector: 'praxis-chart-drilldown-panel',\n standalone: true,\n imports: [CommonModule, PraxisChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"drilldown-shell\">\n <header class=\"drilldown-header\">\n <p class=\"drilldown-eyebrow\">Drill-down local</p>\n <h3>{{ title() }}</h3>\n @if (activeCategory()) {\n <p class=\"drilldown-description\">Recorte atual: {{ activeCategory() }}</p>\n } @else {\n <p class=\"drilldown-description\">Clique em uma barra do chart principal para abrir o detalhamento local.</p>\n }\n </header>\n\n <praxis-chart\n [config]=\"detailChartConfig()\"\n [data]=\"detailData()\"\n ></praxis-chart>\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .drilldown-shell {\n display: grid;\n gap: 14px;\n }\n\n .drilldown-header h3,\n .drilldown-eyebrow,\n .drilldown-description {\n margin: 0;\n }\n\n .drilldown-eyebrow {\n font-size: 0.75rem;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n }\n\n .drilldown-header h3 {\n font-size: 1.2rem;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .drilldown-description {\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n }\n `,\n ],\n})\nexport class PraxisChartDrilldownPanelComponent {\n readonly title = input('Detalhamento por segmento');\n readonly selection = input<PraxisChartPointEvent | null>(null);\n\n readonly activeCategory = computed(() => {\n const raw = this.selection()?.category;\n return typeof raw === 'string' ? raw : null;\n });\n\n readonly detailData = computed(() => {\n const category = this.activeCategory();\n if (!category) return [];\n return PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH[category] ?? [];\n });\n\n readonly detailChartConfig = computed(() => {\n const category = this.activeCategory();\n return {\n id: 'chart-drilldown-detail',\n type: 'donut' as const,\n title: { text: category ? `Mix de receita em ${category}` : 'Aguardando selecao' },\n subtitle: { text: category ? 'Drill-down local com JSON mockado' : 'Selecione um ponto no chart principal' },\n height: 280,\n series: [\n {\n id: 'segmentMix',\n categoryField: 'segment',\n metric: { field: 'total', aggregation: 'sum' as const },\n labels: { visible: true },\n },\n ],\n emptyState: {\n title: { text: 'Nenhum recorte selecionado' },\n description: { text: 'O painel de drill-down usa mocks locais e reage ao pointClick do chart principal.' },\n },\n theme: {\n palette: ['#1263b4', '#2b8a3e', '#f08c00', '#7b61ff'],\n },\n };\n });\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'praxis-chart-state-probe',\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"probe-shell\">\n <header class=\"probe-header\">\n <p class=\"probe-eyebrow\">Probe</p>\n <h3>{{ title() }}</h3>\n </header>\n\n @if (value() === null || value() === undefined || value() === '') {\n <div class=\"probe-empty\">Aguardando eventos do runtime.</div>\n } @else {\n <pre>{{ serializedValue() }}</pre>\n }\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .probe-shell {\n display: grid;\n gap: 12px;\n min-height: 220px;\n padding: 18px;\n border-radius: 20px;\n background:\n linear-gradient(180deg, rgba(11, 17, 31, 0.96), rgba(11, 17, 31, 0.88)),\n radial-gradient(circle at top right, rgba(18, 99, 180, 0.32), transparent 35%);\n color: #d7e6ff;\n }\n\n .probe-header h3,\n .probe-eyebrow {\n margin: 0;\n }\n\n .probe-eyebrow {\n font-size: 0.75rem;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: rgba(215, 230, 255, 0.7);\n }\n\n .probe-empty {\n color: rgba(215, 230, 255, 0.78);\n }\n\n pre {\n margin: 0;\n overflow: auto;\n white-space: pre-wrap;\n word-break: break-word;\n font-size: 0.84rem;\n line-height: 1.45;\n }\n `,\n ],\n})\nexport class PraxisChartStateProbeComponent {\n readonly title = input('Chart Runtime Probe');\n readonly value = input<unknown>(null);\n\n readonly serializedValue = computed(() => JSON.stringify(this.value(), null, 2));\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta, type PortContract } from '@praxisui/core';\nimport { PraxisChartComponent } from './components/praxis-chart/praxis-chart.component';\n\nconst PRAXIS_CHART_PHASE1_PORTS: PortContract[] = [\n {\n id: 'queryContext',\n label: 'Query Context',\n direction: 'input',\n semanticKind: 'query-context',\n description: 'Primary semantic query contract for declarative orchestration and connected filters.',\n schema: {\n id: 'PraxisDataQueryContext',\n kind: 'ts-type',\n ref: 'PraxisDataQueryContext',\n },\n compatibility: {\n acceptsSemanticKinds: ['query-context'],\n schemaMode: 'structural',\n },\n exposure: { public: true, group: 'data' },\n },\n {\n id: 'chartDocument',\n label: 'Chart Document',\n direction: 'input',\n semanticKind: 'config-fragment',\n description: 'Canonical x-ui.chart document used as the authoring source of truth.',\n schema: {\n id: 'PraxisXUiChartContract',\n kind: 'ts-type',\n ref: 'PraxisXUiChartContract',\n },\n exposure: { public: true, group: 'config' },\n },\n {\n id: 'config',\n label: 'Chart Config',\n direction: 'input',\n semanticKind: 'config-fragment',\n description: 'Declarative chart configuration consumed directly by the runtime.',\n schema: {\n id: 'PraxisChartConfig',\n kind: 'ts-type',\n ref: 'PraxisChartConfig',\n },\n exposure: { public: true, group: 'config' },\n },\n {\n id: 'pointClick',\n label: 'Point Click',\n direction: 'output',\n semanticKind: 'event',\n description: 'Interaction event emitted when a point or series is clicked.',\n cardinality: 'stream',\n schema: {\n id: 'PraxisChartPointEvent',\n kind: 'ts-type',\n ref: 'PraxisChartPointEvent',\n },\n exposure: { public: true, group: 'interaction' },\n },\n {\n id: 'queryRequest',\n label: 'Query Request',\n direction: 'output',\n semanticKind: 'diagnostic',\n description: 'Outgoing remote query request emitted before datasource resolution.',\n cardinality: 'stream',\n schema: {\n id: 'PraxisChartQueryRequestEvent',\n kind: 'ts-type',\n ref: 'PraxisChartQueryRequestEvent',\n },\n exposure: { public: true, group: 'diagnostics' },\n },\n {\n id: 'loadStateChange',\n label: 'Load State',\n direction: 'output',\n semanticKind: 'status',\n description: 'Operational state signal for loading, ready and error transitions.',\n cardinality: 'stream',\n schema: {\n id: 'PraxisChartLoadState',\n kind: 'ts-type',\n ref: 'PraxisChartLoadState',\n },\n exposure: { public: true, group: 'status' },\n },\n];\n\nexport const PRAXIS_CHART_COMPONENT_METADATA: ComponentDocMeta = {\n id: 'praxis-chart',\n componentType: 'praxis-chart',\n displayName: 'Praxis Chart',\n selector: 'praxis-chart',\n component: PraxisChartComponent,\n friendlyName: 'Praxis Chart',\n description: 'Chart component for analytics and metadata-driven visualizations in Praxis UI.',\n icon: 'bar_chart',\n tags: ['chart', 'analytics', 'widget', 'visualization'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'config',\n type: 'PraxisChartConfig',\n description: 'Declarative chart configuration with metadata-oriented semantics.',\n },\n {\n name: 'data',\n type: 'PraxisChartDataRow[]',\n description: 'Optional local dataset that takes precedence over local datasource items.',\n },\n {\n name: 'chartDocument',\n type: 'PraxisXUiChartContract | null',\n description: 'Optional canonical x-ui.chart document used as the authoring source of truth for settings-panel integration.',\n },\n {\n name: 'queryContext',\n type: 'PraxisDataQueryContext | null',\n description: 'Primary semantic query contract for dynamic-page orchestration. Charts consume filters, sort and limit from queryContext while preserving filterCriteria as a compatibility bridge.',\n },\n {\n name: 'filterCriteria',\n type: 'Record<string, unknown> | null',\n description: 'Legacy compatibility bridge for declarative filters. Prefer queryContext for new authoring and widget connections.',\n },\n {\n name: 'enableCustomization',\n type: 'boolean',\n description: 'When true and a settings-panel bridge is available, exposes the chart config editor from the runtime.',\n default: false,\n },\n {\n name: 'availableResources',\n type: 'ReadonlyArray<ChartEditorResourceOption>',\n description: 'Catalog of remote resources exposed to the runtime chart editor when customization is enabled.',\n default: [],\n },\n {\n name: 'availableFields',\n type: 'ReadonlyArray<ChartEditorFieldOption>',\n description: 'Catalog of semantic fields exposed to the runtime chart editor when customization is enabled.',\n default: [],\n },\n {\n name: 'availableTargets',\n type: 'ReadonlyArray<ChartEditorTargetOption>',\n description: 'Catalog of widget or route targets exposed to chart runtime actions in the config editor.',\n default: [],\n },\n ],\n outputs: [\n {\n name: 'pointClick',\n type: 'PraxisChartPointEvent',\n description: 'Emitted when the host wants to react to a point/series click.',\n },\n {\n name: 'queryRequest',\n type: 'PraxisChartQueryRequestEvent',\n description: 'Emitted before a remote praxis.stats datasource is resolved, allowing host-side observability of the outgoing request.',\n },\n {\n name: 'loadStateChange',\n type: 'PraxisChartLoadState',\n description: 'Emitted when the chart state changes.',\n },\n {\n name: 'chartDocumentApplied',\n type: 'PraxisXUiChartContract',\n description: 'Emitted when the runtime chart editor applies a canonical x-ui.chart document through the settings panel bridge.',\n },\n {\n name: 'chartDocumentSaved',\n type: 'PraxisXUiChartContract',\n description: 'Emitted when the runtime chart editor saves a canonical x-ui.chart document through the settings panel bridge.',\n },\n ],\n actions: [\n {\n id: 'open-chart-editor',\n label: 'Open Chart Editor',\n icon: 'tune',\n description: 'Opens the canonical chart config editor when the host provides a settings panel bridge and chartDocument.',\n command: 'openConfigEditor',\n scope: 'toolbar',\n },\n ],\n ports: PRAXIS_CHART_PHASE1_PORTS,\n};\n\nexport function providePraxisChartsMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_COMPONENT_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartDrilldownPanelComponent } from './components/praxis-chart-drilldown-panel/praxis-chart-drilldown-panel.component';\n\nexport const PRAXIS_CHART_DRILLDOWN_PANEL_METADATA: ComponentDocMeta = {\n id: 'praxis-chart-drilldown-panel',\n componentType: 'praxis-chart-drilldown-panel',\n displayName: 'Praxis Chart Drilldown Panel',\n selector: 'praxis-chart-drilldown-panel',\n component: PraxisChartDrilldownPanelComponent,\n friendlyName: 'Praxis Chart Drilldown Panel',\n description: 'Local drill-down panel that consumes chart point events and renders a derived detail chart.',\n icon: 'query_stats',\n tags: ['chart', 'drilldown', 'widget', 'analytics'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'title',\n type: 'string',\n description: 'Panel title for the drill-down view.',\n },\n {\n name: 'selection',\n type: 'PraxisChartPointEvent',\n description: 'Event emitted by a source chart and used to resolve local detail datasets.',\n },\n ],\n};\n\nexport function providePraxisChartDrilldownPanelMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_DRILLDOWN_PANEL_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartStateProbeComponent } from './components/praxis-chart-state-probe/praxis-chart-state-probe.component';\n\nexport const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta = {\n id: 'praxis-chart-state-probe',\n componentType: 'praxis-chart-state-probe',\n displayName: 'Praxis Chart State Probe',\n selector: 'praxis-chart-state-probe',\n component: PraxisChartStateProbeComponent,\n friendlyName: 'Praxis Chart State Probe',\n description: 'Diagnostic widget used to inspect chart events and runtime payloads during local validation.',\n icon: 'monitoring',\n tags: ['chart', 'probe', 'debug', 'widget'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'title',\n type: 'string',\n description: 'Probe panel title.',\n },\n {\n name: 'value',\n type: 'unknown',\n description: 'Payload rendered as formatted JSON.',\n },\n ],\n};\n\nexport function providePraxisChartStateProbeMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { createDefaultTableConfig, type TableConfig } from '@praxisui/core';\nimport { PraxisTable } from '@praxisui/table';\nimport { PraxisChartComponent } from '../components/praxis-chart/praxis-chart.component';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type { PraxisChartDataRow } from '../models/chart-dataset.model';\nimport type {\n PraxisChartLoadState,\n PraxisChartPointEvent,\n PraxisChartQueryRequestEvent,\n} from '../models/chart-events.model';\nimport type { PraxisXUiChartContract } from '../models/x-ui-chart.model';\nimport { PraxisChartStatsApiService } from '../services/chart-stats-api.service';\n\nexport type PraxisChartShowcaseViewMode = 'chart' | 'table';\n\n@Component({\n selector: 'praxis-chart-showcase-widget',\n standalone: true,\n imports: [CommonModule, PraxisChartComponent, PraxisTable],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (viewMode() === 'chart') {\n <praxis-chart\n [config]=\"config()\"\n [data]=\"data()\"\n [chartDocument]=\"chartDocument()\"\n [enableCustomization]=\"enableCustomization()\"\n (pointClick)=\"pointClick.emit($event)\"\n (queryRequest)=\"queryRequest.emit($event)\"\n (loadStateChange)=\"loadStateChange.emit($event)\"\n ></praxis-chart>\n } @else if (stateMode() === 'loading') {\n <section class=\"showcase-state-card\">\n <h4>{{ loadingLabel() }}</h4>\n </section>\n } @else if (stateMode() === 'error') {\n <section class=\"showcase-state-card showcase-state-card-error\">\n <h4>{{ errorTitle() }}</h4>\n @if (errorDescription()) {\n <p>{{ errorDescription() }}</p>\n }\n </section>\n } @else {\n <praxis-table\n [config]=\"tableConfig()\"\n [data]=\"resolvedRows()\"\n [tableId]=\"tableId()\"\n [title]=\"resolvedTitle()\"\n [subtitle]=\"resolvedSubtitle()\"\n [icon]=\"'table_view'\"\n (rowClick)=\"handleRowClick($event)\"\n ></praxis-table>\n }\n `,\n styles: [\n `\n :host {\n display: block;\n height: 100%;\n min-width: 0;\n }\n\n .showcase-state-card {\n min-height: 240px;\n display: grid;\n place-content: center;\n gap: 8px;\n padding: 24px;\n border-radius: 18px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 72%, transparent);\n background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(244, 247, 251, 0.98));\n text-align: center;\n }\n\n .showcase-state-card h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .showcase-state-card p {\n margin: 0;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n }\n `,\n ],\n})\nexport class PraxisChartShowcaseWidgetComponent {\n readonly config = input.required<PraxisChartConfig>();\n readonly data = input<PraxisChartDataRow[] | null>(null);\n readonly chartDocument = input<PraxisXUiChartContract | null>(null);\n readonly enableCustomization = input(false);\n readonly viewMode = input<PraxisChartShowcaseViewMode>('chart');\n\n readonly pointClick = output<PraxisChartPointEvent>();\n readonly queryRequest = output<PraxisChartQueryRequestEvent>();\n readonly loadStateChange = output<PraxisChartLoadState>();\n\n private readonly statsApi = inject(PraxisChartStatsApiService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly remoteResolvedRows = signal<PraxisChartDataRow[] | null>(null);\n private readonly remoteRuntimeState = signal<'idle' | 'loading' | 'ready' | 'error'>('idle');\n private readonly remoteTechnicalError = signal<string | null>(null);\n private previousRemoteSignature: string | null = null;\n\n readonly resolvedRows = computed(() => {\n const explicitData = this.data();\n if (explicitData !== null && explicitData !== undefined) {\n return explicitData;\n }\n\n return this.remoteResolvedRows() ?? [];\n });\n readonly tableId = computed(() => `${this.config().id || 'praxis-chart'}-showcase-table`);\n readonly resolvedTitle = computed(() => resolveText(this.config().title) || 'Tabela analitica');\n readonly resolvedSubtitle = computed(\n () => resolveText(this.config().subtitle) || 'Mesmo dataset em visualizacao tabular',\n );\n readonly loadingLabel = computed(\n () => resolveText(this.config().state?.loadingLabel) || 'Carregando analytics...',\n );\n readonly errorTitle = computed(\n () =>\n this.remoteTechnicalError()\n || resolveText(this.config().state?.error?.title)\n || 'Falha no contrato analitico',\n );\n readonly errorDescription = computed(() => resolveText(this.config().state?.error?.description));\n readonly stateMode = computed<'ready' | 'loading' | 'error'>(() =>\n resolveShowcaseStateMode(this.config(), this.remoteRuntimeState()),\n );\n readonly tableConfig = computed(() => buildTableConfig(this.config(), this.resolvedRows()));\n\n constructor() {\n effect(() => {\n const config = this.config();\n const explicitData = this.data();\n const nextSignature = explicitData === null || explicitData === undefined\n ? buildRemoteSignature(config)\n : null;\n\n if (nextSignature === this.previousRemoteSignature) {\n return;\n }\n\n this.previousRemoteSignature = nextSignature;\n this.remoteResolvedRows.set(null);\n this.remoteRuntimeState.set('idle');\n this.remoteTechnicalError.set(null);\n });\n\n effect(() => {\n const config = this.config();\n const explicitData = this.data();\n if (this.viewMode() !== 'table') {\n return;\n }\n\n if (config.dataSource?.kind !== 'remote' || (explicitData !== null && explicitData !== undefined)) {\n return;\n }\n\n if (this.remoteRuntimeState() === 'loading' || this.remoteResolvedRows() !== null) {\n return;\n }\n\n const event = {\n chartId: config.id,\n dataSource: config.dataSource,\n query: config.dataSource.query,\n } satisfies PraxisChartQueryRequestEvent;\n\n this.queryRequest.emit(event);\n this.remoteRuntimeState.set('loading');\n this.remoteResolvedRows.set([]);\n this.remoteTechnicalError.set(null);\n\n this.statsApi.execute(event, config)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: (rows) => {\n this.remoteResolvedRows.set(rows);\n this.remoteRuntimeState.set('ready');\n this.remoteTechnicalError.set(null);\n },\n error: (error) => {\n this.remoteResolvedRows.set([]);\n this.remoteRuntimeState.set('error');\n this.remoteTechnicalError.set(\n error instanceof Error && error.message.trim()\n ? error.message\n : 'praxis.stats request failed',\n );\n },\n });\n });\n }\n\n handleRowClick(event: { row?: PraxisChartDataRow } | null): void {\n const row = event?.row;\n if (!row) {\n return;\n }\n\n const config = this.config();\n const primarySeries = config.series[0];\n const categoryField = primarySeries?.categoryField || config.axes?.x?.field;\n const metricField = primarySeries?.metric?.field;\n\n this.pointClick.emit({\n chartId: config.id,\n seriesId: primarySeries?.id,\n seriesName: primarySeries?.name,\n category: categoryField ? stringifyCell(row[categoryField]) : undefined,\n value: metricField ? row[metricField] : undefined,\n data: row,\n });\n }\n}\n\nexport function resolveShowcaseStateMode(\n config: PraxisChartConfig,\n remoteRuntimeState: 'idle' | 'loading' | 'ready' | 'error' = 'idle',\n): 'ready' | 'loading' | 'error' {\n if (config.preferredLoadState === 'loading') {\n return 'loading';\n }\n if (config.preferredLoadState === 'error') {\n return 'error';\n }\n if (config.dataSource?.kind === 'remote' && remoteRuntimeState === 'error') {\n return 'error';\n }\n if (config.dataSource?.kind === 'remote' && remoteRuntimeState !== 'ready') {\n return 'loading';\n }\n return 'ready';\n}\n\nexport function buildTableConfig(\n config: PraxisChartConfig,\n rows: PraxisChartDataRow[],\n): TableConfig {\n const tableConfig = createDefaultTableConfig();\n const toolbar = tableConfig.toolbar!;\n const behavior = tableConfig.behavior!;\n const pagination = behavior.pagination!;\n const sorting = behavior.sorting!;\n const filtering = behavior.filtering!;\n const selection = behavior.selection!;\n const localDataMode = behavior.localDataMode!;\n const actions = tableConfig.actions!;\n const rowActions = actions.row!;\n const bulkActions = actions.bulk!;\n const appearance = tableConfig.appearance!;\n const categoryField = config.axes?.x?.field || config.series[0]?.categoryField;\n const categoryLabel = config.axes?.x?.label || categoryField;\n const sampleRow = rows[0] || {};\n const seriesColumns = config.series\n .map((series) => {\n const field = series.metric?.field || series.categoryField;\n if (!field) {\n return null;\n }\n\n return {\n field,\n header: series.name || series.metric?.label || field,\n };\n })\n .filter((column): column is { field: string; header: string } => column !== null);\n\n const fallbackColumns = Object.keys(sampleRow).map((field) => ({\n field,\n header: field,\n }));\n const categoryColumn = categoryField\n ? [{\n field: categoryField,\n header: categoryLabel || categoryField,\n }]\n : [];\n\n const dedupedColumns = [...categoryColumn, ...seriesColumns, ...fallbackColumns].filter(\n (column, index, source) =>\n source.findIndex((candidate) => candidate.field === column.field) === index,\n );\n\n tableConfig.columns = dedupedColumns;\n toolbar.visible = false;\n pagination.enabled = rows.length > 10;\n sorting.enabled = true;\n filtering.enabled = false;\n selection.enabled = false;\n localDataMode.enabled = true;\n rowActions.enabled = false;\n rowActions.actions = [];\n bulkActions.enabled = false;\n bulkActions.actions = [];\n appearance.density = 'comfortable';\n\n return tableConfig;\n}\n\nfunction resolveText(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n if (value && typeof value === 'object' && 'text' in (value as Record<string, unknown>)) {\n const text = (value as { text?: unknown }).text;\n return typeof text === 'string' ? text : '';\n }\n return '';\n}\n\nfunction stringifyCell(value: unknown): string | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n return String(value);\n}\n\nfunction buildRemoteSignature(config: PraxisChartConfig): string | null {\n if (config.dataSource?.kind !== 'remote') {\n return null;\n }\n\n return JSON.stringify({\n id: config.id,\n resourcePath: config.dataSource.resourcePath,\n query: config.dataSource.query,\n });\n}\n","import { ENVIRONMENT_INITIALIZER, Provider } from '@angular/core';\nimport { ComponentMetadataRegistry, type ComponentDocMeta } from '@praxisui/core';\nimport { PraxisChartShowcaseWidgetComponent } from './praxis-chart-showcase-widget.component';\n\nexport const PRAXIS_CHART_SHOWCASE_WIDGET_METADATA: ComponentDocMeta = {\n id: 'praxis-chart-showcase-widget',\n componentType: 'praxis-chart-showcase-widget',\n displayName: 'Praxis Chart Showcase Widget',\n selector: 'praxis-chart-showcase-widget',\n component: PraxisChartShowcaseWidgetComponent,\n friendlyName: 'Praxis Chart Showcase Widget',\n description: 'Showcase-only widget that toggles between Praxis chart and Praxis table using the same dataset.',\n icon: 'swap_horiz',\n tags: ['chart', 'table', 'showcase', 'analytics'],\n lib: '@praxisui/charts',\n inputs: [\n {\n name: 'config',\n type: 'PraxisChartConfig',\n description: 'Chart configuration preserved across chart and table views.',\n },\n {\n name: 'data',\n type: 'PraxisChartDataRow[]',\n description: 'Local dataset shared by the chart and table renderers.',\n },\n {\n name: 'chartDocument',\n type: 'PraxisXUiChartContract | null',\n description: 'Canonical x-ui.chart contract forwarded to the runtime chart editor affordance.',\n },\n {\n name: 'enableCustomization',\n type: 'boolean',\n description: 'Enables runtime chart editor affordances when the host is in customization mode.',\n },\n {\n name: 'viewMode',\n type: \"'chart' | 'table'\",\n description: 'Current showcase view mode.',\n },\n ],\n outputs: [\n {\n name: 'pointClick',\n type: 'PraxisChartPointEvent',\n description: 'Forwards point selection from the chart or mapped row selection from the table.',\n },\n {\n name: 'queryRequest',\n type: 'PraxisChartQueryRequestEvent',\n description: 'Forwards remote chart data requests.',\n },\n {\n name: 'loadStateChange',\n type: 'PraxisChartLoadState',\n description: 'Forwards chart runtime state transitions.',\n },\n ],\n};\n\nexport function providePraxisChartShowcaseWidgetMetadata(): Provider {\n return {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: (registry: ComponentMetadataRegistry) => () => {\n registry.register(PRAXIS_CHART_SHOWCASE_WIDGET_METADATA);\n },\n deps: [ComponentMetadataRegistry],\n } as Provider;\n}\n","import { Provider } from '@angular/core';\nimport { EChartsEngineAdapter } from '../adapters/echarts/echarts-engine.adapter';\nimport { PRAXIS_CHART_ENGINE } from '../tokens/chart-engine.token';\nimport { providePraxisChartsMetadata } from '../praxis-chart.metadata';\nimport { providePraxisChartDrilldownPanelMetadata } from '../praxis-chart-drilldown-panel.metadata';\nimport { providePraxisChartStateProbeMetadata } from '../praxis-chart-state-probe.metadata';\nimport { providePraxisChartShowcaseWidgetMetadata } from '../examples/praxis-chart-showcase-widget.metadata';\n\nexport function providePraxisCharts(): Provider[] {\n return [\n EChartsEngineAdapter,\n {\n provide: PRAXIS_CHART_ENGINE,\n useExisting: EChartsEngineAdapter,\n },\n providePraxisChartsMetadata(),\n providePraxisChartDrilldownPanelMetadata(),\n providePraxisChartStateProbeMetadata(),\n providePraxisChartShowcaseWidgetMetadata(),\n ];\n}\n","import { Injectable } from '@angular/core';\nimport { ComponentMetadataRegistry } from '@praxisui/core';\nimport { PRAXIS_CHART_DRILLDOWN_PANEL_METADATA } from '../praxis-chart-drilldown-panel.metadata';\nimport { PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA } from '../praxis-chart-state-probe.metadata';\nimport { PRAXIS_CHART_COMPONENT_METADATA } from '../praxis-chart.metadata';\nimport { PRAXIS_CHART_SHOWCASE_WIDGET_METADATA } from '../examples/praxis-chart-showcase-widget.metadata';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartMetadataRegistrationService {\n private registered = false;\n\n constructor(\n private readonly registry: ComponentMetadataRegistry,\n ) {\n this.ensureRegistered();\n }\n\n ensureRegistered(): void {\n if (this.registered) {\n return;\n }\n\n this.registry.register(PRAXIS_CHART_COMPONENT_METADATA);\n this.registry.register(PRAXIS_CHART_DRILLDOWN_PANEL_METADATA);\n this.registry.register(PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA);\n this.registry.register(PRAXIS_CHART_SHOWCASE_WIDGET_METADATA);\n this.registered = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type {\n WidgetDefinition,\n WidgetInstance,\n} from '@praxisui/core';\nimport type { PraxisXUiChartContract } from '../models/x-ui-chart.model';\nimport type { PraxisChartCanvasItem, PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema } from '../models/chart-widget-schema.model';\nimport { PraxisChartCanonicalContractMapperService } from './chart-canonical-contract-mapper.service';\nimport { PraxisChartMetadataRegistrationService } from './chart-metadata-registration.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartSchemaMapperService {\n constructor(\n private readonly metadataRegistration: PraxisChartMetadataRegistrationService,\n private readonly canonicalContractMapper: PraxisChartCanonicalContractMapperService,\n ) {\n this.metadataRegistration.ensureRegistered();\n }\n\n resolve(\n input: PraxisChartWidgetLike,\n defaults?: {\n key?: string;\n canvasItem?: PraxisChartCanvasItem;\n },\n ): PraxisChartWidgetResolution {\n const schema = this.normalize(input);\n const config = this.toConfig(schema);\n const key = schema.key?.trim()\n || defaults?.key?.trim()\n || schema.chart?.chartId?.trim()\n || config.id?.trim()\n || 'praxis-chart';\n\n return {\n componentId: 'praxis-chart',\n key,\n className: schema.className,\n shell: schema.shell,\n canvasItem: schema.canvasItem ?? defaults?.canvasItem,\n definition: this.toWidgetDefinition(schema),\n };\n }\n\n toWidgetDefinition(input: PraxisChartWidgetLike): WidgetDefinition {\n const schema = this.normalize(input);\n\n return {\n id: 'praxis-chart',\n inputs: {\n config: this.toConfig(schema),\n data: schema.data ?? null,\n },\n outputs: this.toOutputs(schema),\n bindingOrder: schema.bindingOrder ?? ['config', 'data'],\n };\n }\n\n toWidgetInstance(\n input: PraxisChartWidgetLike,\n defaults?: {\n key?: string;\n },\n ): WidgetInstance {\n const resolved = this.resolve(input, defaults);\n return {\n key: resolved.key,\n definition: resolved.definition,\n className: resolved.className,\n shell: resolved.shell,\n };\n }\n\n private normalize(input: PraxisChartWidgetLike): PraxisChartWidgetSchema {\n if (this.isCanonicalChartContract(input)) {\n return {\n kind: 'x-ui.chart',\n componentId: 'praxis-chart',\n chart: input,\n };\n }\n\n if (this.isWidgetSchema(input)) {\n return {\n kind: input.kind ?? 'x-ui.chart',\n componentId: 'praxis-chart',\n ...input,\n };\n }\n\n throw new Error('PraxisChartSchemaMapperService requires x-ui.chart as the primary public input.');\n }\n\n private isWidgetSchema(input: PraxisChartWidgetLike): input is PraxisChartWidgetSchema {\n return typeof input === 'object'\n && input !== null\n && (\n 'chart' in input\n || 'componentId' in input\n || 'key' in input\n || 'className' in input\n || 'outputs' in input\n || 'bindingOrder' in input\n || 'shell' in input\n || 'canvasItem' in input\n || 'data' in input\n );\n }\n\n private isCanonicalChartContract(input: PraxisChartWidgetLike): input is PraxisXUiChartContract {\n return typeof input === 'object'\n && input !== null\n && 'version' in input\n && 'kind' in input\n && 'source' in input;\n }\n\n private toConfig(schema: PraxisChartWidgetSchema) {\n if (!schema.chart) {\n throw new Error('PraxisChartWidgetSchema requires widget.chart as the canonical public input.');\n }\n\n return this.canonicalContractMapper.toPraxisChartConfig(schema.chart);\n }\n\n private toOutputs(schema: PraxisChartWidgetSchema): WidgetDefinition['outputs'] | undefined {\n if (schema.outputs) {\n return schema.outputs;\n }\n\n if (schema.chart?.events?.pointClick || schema.chart?.events?.drillDown) {\n return {\n pointClick: 'emit',\n };\n }\n\n return undefined;\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { WidgetInstance } from '@praxisui/core';\nimport type { PraxisChartConfig } from '../models/chart-config.model';\nimport type { PraxisChartBackendPayload } from '../models/chart-backend-payload.model';\nimport type { PraxisChartCanvasItem } from '../models/chart-widget-schema.model';\nimport { PraxisChartCanonicalContractMapperService } from './chart-canonical-contract-mapper.service';\nimport { PraxisChartSchemaMapperService } from './chart-schema-mapper.service';\n\n@Injectable({ providedIn: 'root' })\nexport class PraxisChartBackendPayloadAdapterService {\n constructor(\n private readonly chartSchemaMapper: PraxisChartSchemaMapperService,\n private readonly canonicalContractMapper: PraxisChartCanonicalContractMapperService,\n ) {}\n\n toChartConfig(payload: PraxisChartBackendPayload): PraxisChartConfig {\n if (!payload.widget.chart) {\n throw new Error('PraxisChartBackendPayload requires widget.chart as the canonical public input.');\n }\n\n const baseConfig = this.canonicalContractMapper.toPraxisChartConfig(payload.widget.chart);\n\n return {\n ...baseConfig,\n preferredLoadState: payload.widget.runtime?.preferredLoadState ?? baseConfig.preferredLoadState,\n };\n }\n\n toWidgetInstance(payload: PraxisChartBackendPayload): WidgetInstance {\n const widget = this.chartSchemaMapper.toWidgetInstance({\n kind: payload.widget.kind ?? 'x-ui.chart',\n key: payload.widget.key,\n className: payload.widget.className,\n shell: payload.widget.shell,\n bindingOrder: payload.widget.bindingOrder,\n outputs: payload.widget.outputs,\n chart: payload.widget.chart,\n data: payload.data,\n });\n\n return {\n ...widget,\n definition: {\n ...widget.definition,\n inputs: {\n ...(widget.definition.inputs || {}),\n config: this.toChartConfig(payload),\n chartDocument: payload.widget.chart ?? null,\n },\n },\n };\n }\n\n toCanvasItem(\n payload: PraxisChartBackendPayload,\n fallback: PraxisChartCanvasItem = { col: 1, row: 1, colSpan: 6, rowSpan: 4 },\n ): PraxisChartCanvasItem {\n return payload.widget.canvasItem ?? fallback;\n }\n}\n","import type { PraxisChartBackendPayload } from '../models/chart-backend-payload.model';\n\nexport const PRAXIS_CHART_BACKEND_MOCK_BAR: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-perfil-heroi|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-hero-universe-v1',\n resourcePath: 'api/human-resources/vw-perfil-heroi',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'monthly-revenue-chart',\n className: 'analytics-widget analytics-widget-revenue',\n canvasItem: { col: 1, row: 1, colSpan: 6, rowSpan: 4 },\n shell: {\n title: 'Heroes por universo',\n subtitle: 'Group-by real consumindo praxis.stats publicado',\n },\n outputs: {\n pointClick: 'emit',\n loadStateChange: 'emit',\n },\n chart: {\n version: '0.1.0',\n kind: 'bar',\n preset: 'ranking',\n chartId: 'monthly-revenue-chart',\n title: { key: 'charts.heroes.universe.title', fallback: 'Heroes por universo' },\n subtitle: { key: 'charts.heroes.universe.subtitle', fallback: 'Group-by em /vw-perfil-heroi' },\n height: 320,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-perfil-heroi',\n operation: 'group-by',\n options: {\n orderBy: 'value-desc',\n limit: 10,\n },\n },\n dimensions: [\n {\n field: 'universo',\n label: 'Universo',\n role: 'category',\n },\n ],\n metrics: [\n {\n field: 'count',\n label: 'Total de heroes',\n aggregation: 'count',\n },\n ],\n groupBy: ['universo'],\n sort: [{ field: 'universo', direction: 'asc' }],\n legend: { enabled: true },\n tooltip: { enabled: true },\n labels: false,\n theme: {\n palette: ['#1263b4'],\n },\n state: {\n empty: {\n title: { key: 'charts.empty.title', fallback: 'Sem dados analiticos' },\n description: { key: 'charts.empty.description', fallback: 'O backend retornou zero linhas para este recorte.' },\n },\n loading: {\n title: { key: 'charts.loading.title', fallback: 'Carregando dados publicados...' },\n },\n error: {\n title: { key: 'charts.error.title', fallback: 'Falha no contrato analitico' },\n description: { key: 'charts.error.description', fallback: 'Use este cenario para validar falha controlada do runtime.' },\n },\n },\n events: {\n pointClick: {\n action: 'emit',\n },\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_TIMESERIES: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-indicadores-incidentes|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-incident-timeseries-v1',\n resourcePath: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'incident-timeseries-chart',\n canvasItem: { col: 7, row: 1, colSpan: 6, rowSpan: 4 },\n shell: {\n title: 'Incidentes por mes',\n subtitle: 'Time series real consumindo praxis.stats publicado',\n },\n chart: {\n version: '0.1.0',\n kind: 'line',\n preset: 'kpi-trend',\n chartId: 'incident-timeseries-chart',\n title: { key: 'charts.incidents.timeline.title', fallback: 'Incidentes por mes' },\n subtitle: { key: 'charts.incidents.timeline.subtitle', fallback: 'Timeseries em /vw-indicadores-incidentes' },\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'timeseries',\n options: {\n granularity: 'month',\n fillGaps: false,\n },\n },\n dimensions: [\n {\n field: 'ocorridoEm',\n label: 'Ocorrido em',\n role: 'time',\n },\n ],\n metrics: [\n {\n field: 'count',\n label: 'Total de incidentes',\n aggregation: 'count',\n },\n ],\n legend: { enabled: true },\n tooltip: { enabled: true },\n labels: false,\n theme: {\n palette: ['#2b8a3e'],\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_DONUT: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-indicadores-incidentes|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-incident-severity-v1',\n resourcePath: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'ticket-status-chart',\n canvasItem: { col: 7, row: 5, colSpan: 6, rowSpan: 4 },\n shell: {\n title: 'Severidade de incidentes',\n subtitle: 'Distribution real consumindo praxis.stats publicado',\n },\n chart: {\n version: '0.1.0',\n kind: 'donut',\n preset: 'distribution',\n chartId: 'ticket-status-chart',\n title: { key: 'charts.incidents.severity.title', fallback: 'Severidade de incidentes' },\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-indicadores-incidentes',\n operation: 'distribution',\n options: {\n mode: 'terms',\n orderBy: 'value-desc',\n limit: 10,\n },\n },\n dimensions: [\n {\n field: 'severidade',\n label: 'Severidade',\n role: 'segment',\n },\n ],\n metrics: [\n {\n field: 'count',\n label: 'Total',\n aggregation: 'count',\n },\n ],\n labels: { enabled: true },\n legend: { enabled: true },\n tooltip: { enabled: true },\n theme: {\n palette: ['#1263b4', '#2b8a3e', '#f08c00', '#c92a2a'],\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-analytics-folha-pagamento|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-payroll-department-ranking-v1',\n resourcePath: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'payroll-department-horizontal-bar',\n canvasItem: { col: 1, row: 5, colSpan: 6, rowSpan: 4 },\n shell: {\n title: 'Massa salarial por departamento',\n subtitle: 'Ranking horizontal em payroll analytics',\n },\n chart: {\n version: '0.1.0',\n kind: 'horizontal-bar',\n preset: 'ranking',\n chartId: 'payroll-department-horizontal-bar',\n title: { key: 'charts.payroll.department.title', fallback: 'Massa salarial por departamento' },\n subtitle: { key: 'charts.payroll.department.subtitle', fallback: 'Ranking horizontal consumindo praxis.stats' },\n orientation: 'horizontal',\n height: 340,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'group-by',\n options: {\n orderBy: 'value-desc',\n limit: 8,\n },\n },\n dimensions: [\n {\n field: 'departamento',\n label: 'Departamento',\n role: 'category',\n },\n ],\n metrics: [\n {\n field: 'salarioLiquido',\n label: 'Massa liquida',\n aggregation: 'sum',\n },\n ],\n legend: { enabled: false },\n tooltip: { enabled: true },\n theme: {\n palette: ['#0f766e'],\n },\n events: {\n pointClick: {\n action: 'emit',\n },\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-analytics-folha-pagamento|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-payroll-net-trend-stacked-v1',\n resourcePath: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'payroll-net-stacked-area',\n canvasItem: { col: 1, row: 9, colSpan: 12, rowSpan: 4 },\n shell: {\n title: 'Composicao temporal da folha',\n subtitle: 'Stacked area inicial sobre timeseries published',\n },\n chart: {\n version: '0.1.0',\n kind: 'stacked-area',\n preset: 'composition',\n chartId: 'payroll-net-stacked-area',\n title: { key: 'charts.payroll.stackedArea.title', fallback: 'Composicao temporal da folha' },\n subtitle: { key: 'charts.payroll.stackedArea.subtitle', fallback: 'Stacked area sobre payroll analytics' },\n height: 340,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'timeseries',\n options: {\n granularity: 'month',\n fillGaps: false,\n },\n },\n dimensions: [\n {\n field: 'competencia',\n label: 'Competencia',\n role: 'time',\n },\n ],\n metrics: [\n {\n field: 'salarioLiquido',\n label: 'Massa liquida',\n aggregation: 'sum',\n },\n ],\n legend: { enabled: true },\n tooltip: { enabled: true },\n theme: {\n palette: ['#1263b4'],\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-analytics-folha-pagamento|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-payroll-multi-metric-bar-v1',\n resourcePath: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'payroll-multi-metric-bar',\n canvasItem: { col: 1, row: 13, colSpan: 12, rowSpan: 4 },\n shell: {\n title: 'Comparativo por departamento',\n subtitle: 'Bar chart multi-metrico sobre praxis.stats group-by',\n },\n chart: {\n version: '0.1.0',\n kind: 'bar',\n preset: 'comparison',\n chartId: 'payroll-multi-metric-bar',\n title: { key: 'charts.payroll.multiMetric.title', fallback: 'Comparativo por departamento' },\n subtitle: {\n key: 'charts.payroll.multiMetric.subtitle',\n fallback: 'Massa liquida e desconto medio via group-by sem eixo secundario',\n },\n height: 340,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'group-by',\n options: {\n orderBy: 'value-desc',\n limit: 8,\n },\n },\n dimensions: [\n {\n field: 'departamento',\n label: 'Departamento',\n role: 'category',\n },\n ],\n metrics: [\n {\n field: 'salarioLiquido',\n label: 'Massa liquida',\n aggregation: 'sum',\n color: '#1263b4',\n },\n {\n field: 'pctDesconto',\n label: 'Desconto medio',\n aggregation: 'avg',\n color: '#0f766e',\n },\n ],\n legend: { enabled: true },\n tooltip: { enabled: true },\n theme: {\n palette: ['#1263b4', '#0f766e'],\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_SCATTER: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-analytics-folha-pagamento|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-payroll-scatter-v1',\n resourcePath: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'payroll-net-vs-discount-scatter',\n canvasItem: { col: 1, row: 13, colSpan: 12, rowSpan: 4 },\n shell: {\n title: 'Liquido x desconto medio',\n subtitle: 'Dispersao inicial sobre payroll analytics',\n },\n chart: {\n version: '0.1.0',\n kind: 'scatter',\n preset: 'comparison',\n chartId: 'payroll-net-vs-discount-scatter',\n title: { key: 'charts.payroll.scatter.title', fallback: 'Liquido x desconto medio' },\n subtitle: { key: 'charts.payroll.scatter.subtitle', fallback: 'Scatter sobre recortes do payroll' },\n height: 340,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'group-by',\n options: {\n orderBy: 'key-asc',\n limit: 25,\n },\n },\n dimensions: [\n {\n field: 'salarioLiquido',\n label: 'Salario liquido',\n role: 'value',\n },\n ],\n metrics: [\n {\n field: 'pctDesconto',\n label: 'Percentual medio de desconto',\n aggregation: 'avg',\n },\n ],\n legend: { enabled: false },\n tooltip: { enabled: true },\n theme: {\n palette: ['#c92a2a'],\n },\n },\n },\n};\n\nexport const PRAXIS_CHART_BACKEND_MOCK_COMBO: PraxisChartBackendPayload = {\n schemaMeta: {\n schemaId: 'api/human-resources/vw-analytics-folha-pagamento|post|response|tenant:demo|locale:pt-BR',\n schemaHash: 'published-hash-payroll-combo-v2',\n resourcePath: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'post',\n schemaType: 'response',\n source: 'backend',\n },\n widget: {\n kind: 'x-ui.chart',\n key: 'payroll-combo-variance',\n canvasItem: { col: 1, row: 17, colSpan: 12, rowSpan: 4 },\n shell: {\n title: 'Folha liquida e desconto medio',\n subtitle: 'Combo remoto sobre praxis.stats multi-metrica',\n },\n chart: {\n version: '0.1.0',\n kind: 'combo',\n preset: 'comparison',\n chartId: 'payroll-combo-variance',\n title: { key: 'charts.payroll.combo.title', fallback: 'Folha liquida e desconto medio' },\n subtitle: { key: 'charts.payroll.combo.subtitle', fallback: 'Barras para liquido e linha para desconto medio via praxis.stats' },\n height: 340,\n source: {\n kind: 'praxis.stats',\n resource: 'api/human-resources/vw-analytics-folha-pagamento',\n operation: 'timeseries',\n options: {\n granularity: 'month',\n fillGaps: true,\n },\n },\n dimensions: [\n {\n field: 'competencia',\n label: 'Competencia',\n role: 'time',\n },\n ],\n metrics: [\n {\n field: 'salarioLiquido',\n label: 'Massa liquida',\n aggregation: 'sum',\n seriesKind: 'bar',\n axis: 'primary',\n color: '#1263b4',\n },\n {\n field: 'pctDesconto',\n label: 'Desconto medio',\n aggregation: 'avg',\n seriesKind: 'line',\n axis: 'secondary',\n color: '#c92a2a',\n },\n ],\n legend: { enabled: true },\n tooltip: { enabled: true },\n theme: {\n palette: ['#1263b4', '#c92a2a'],\n },\n },\n },\n};\n","import type {\n WidgetInstance,\n WidgetPageDefinition,\n} from '@praxisui/core';\nimport {\n PRAXIS_CHART_BACKEND_MOCK_BAR,\n PRAXIS_CHART_BACKEND_MOCK_COMBO,\n PRAXIS_CHART_BACKEND_MOCK_DONUT,\n PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR,\n PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR,\n PRAXIS_CHART_BACKEND_MOCK_SCATTER,\n PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA,\n PRAXIS_CHART_BACKEND_MOCK_TIMESERIES,\n} from '../mocks/chart-backend.mock';\nimport type { PraxisChartBackendPayload } from '../models/chart-backend-payload.model';\nimport type { PraxisChartCanvasItem } from '../models/chart-widget-schema.model';\nimport { PraxisChartBackendPayloadAdapterService } from '../services/chart-backend-payload-adapter.service';\nimport type { PraxisChartShowcaseViewMode } from './praxis-chart-showcase-widget.component';\n\ntype CanvasWidgetPageDefinition = WidgetPageDefinition & {\n canvas?: {\n mode: 'grid';\n columns: number;\n rowUnit?: string;\n gap?: string;\n items: Record<string, PraxisChartCanvasItem>;\n };\n};\n\nexport function buildPraxisChartMockWidgetPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): WidgetPageDefinition {\n return {\n widgets: [\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_SCATTER)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_COMBO)),\n ],\n layout: {\n orientation: 'columns',\n columns: 2,\n gap: '16px',\n },\n };\n}\n\nexport function buildPraxisChartMockCanvasPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): CanvasWidgetPageDefinition {\n const payloads = [\n PRAXIS_CHART_BACKEND_MOCK_BAR,\n PRAXIS_CHART_BACKEND_MOCK_TIMESERIES,\n PRAXIS_CHART_BACKEND_MOCK_DONUT,\n PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR,\n PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA,\n PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR,\n PRAXIS_CHART_BACKEND_MOCK_SCATTER,\n PRAXIS_CHART_BACKEND_MOCK_COMBO,\n ];\n return buildCanvasPage(\n payloads.map((payload) => ({\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(payload)),\n canvasItem: adapter.toCanvasItem(payload),\n })),\n );\n}\n\nexport function buildPraxisChartInteractiveWidgetPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): WidgetPageDefinition {\n return {\n widgets: [\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR)),\n {\n key: 'chart-drilldown-panel',\n definition: {\n id: 'praxis-chart-drilldown-panel',\n inputs: {\n title: 'Drill-down por segmento',\n selection: null,\n },\n },\n shell: {\n title: 'Local Drill-down',\n subtitle: 'Filtrado por pointClick do chart principal',\n },\n },\n {\n key: 'chart-event-probe',\n definition: {\n id: 'praxis-chart-state-probe',\n inputs: {\n title: 'Eventos do chart principal',\n value: 'Clique em uma barra para inspecionar o payload emitido.',\n },\n },\n shell: {\n title: 'Runtime Probe',\n subtitle: 'Conectado via WidgetDefinition.connections',\n },\n },\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_SCATTER)),\n withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_COMBO)),\n ],\n connections: [\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-event-probe', input: 'value' },\n },\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-drilldown-panel', input: 'selection' },\n },\n ],\n layout: {\n orientation: 'columns',\n columns: 2,\n gap: '16px',\n },\n };\n}\n\nexport function buildPraxisChartInteractiveCanvasPage(\n adapter: PraxisChartBackendPayloadAdapterService,\n): CanvasWidgetPageDefinition {\n return buildCanvasPage(\n [\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_BAR)),\n canvasItem: adapter.toCanvasItem(PRAXIS_CHART_BACKEND_MOCK_BAR),\n },\n {\n widget: buildDrilldownWidget(),\n canvasItem: { col: 7, row: 1, colSpan: 6, rowSpan: 4 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES)),\n canvasItem: { col: 1, row: 5, colSpan: 6, rowSpan: 4 },\n },\n {\n widget: buildProbeWidget(),\n canvasItem: { col: 7, row: 9, colSpan: 6, rowSpan: 3 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT)),\n canvasItem: { col: 7, row: 5, colSpan: 6, rowSpan: 4 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR)),\n canvasItem: { col: 1, row: 9, colSpan: 6, rowSpan: 4 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA)),\n canvasItem: { col: 1, row: 13, colSpan: 12, rowSpan: 4 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR)),\n canvasItem: { col: 1, row: 17, colSpan: 12, rowSpan: 4 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_SCATTER)),\n canvasItem: { col: 1, row: 21, colSpan: 12, rowSpan: 4 },\n },\n {\n widget: withShowcaseViewToggle(adapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_COMBO)),\n canvasItem: { col: 1, row: 25, colSpan: 12, rowSpan: 4 },\n },\n ],\n [\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-event-probe', input: 'value' },\n },\n {\n from: { widget: 'monthly-revenue-chart', output: 'pointClick' },\n to: { widget: 'chart-drilldown-panel', input: 'selection' },\n },\n ],\n );\n}\n\nfunction buildCanvasPage(\n entries: Array<{ widget: WidgetInstance; canvasItem: PraxisChartCanvasItem }>,\n connections?: WidgetPageDefinition['connections'],\n): CanvasWidgetPageDefinition {\n return {\n widgets: entries.map((entry) => entry.widget),\n connections,\n canvas: {\n mode: 'grid',\n columns: 12,\n rowUnit: '88px',\n gap: '16px',\n items: Object.fromEntries(entries.map((entry) => [entry.widget.key, entry.canvasItem])),\n },\n };\n}\n\nfunction buildDrilldownWidget(): WidgetInstance {\n return {\n key: 'chart-drilldown-panel',\n definition: {\n id: 'praxis-chart-drilldown-panel',\n inputs: {\n title: 'Drill-down por segmento',\n selection: null,\n },\n },\n shell: {\n title: 'Local Drill-down',\n subtitle: 'Filtrado por pointClick do chart principal',\n },\n };\n}\n\nfunction buildProbeWidget(): WidgetInstance {\n return {\n key: 'chart-event-probe',\n definition: {\n id: 'praxis-chart-state-probe',\n inputs: {\n title: 'Eventos do chart principal',\n value: 'Clique em uma barra para inspecionar o payload emitido.',\n },\n },\n shell: {\n title: 'Runtime Probe',\n subtitle: 'Conectado via WidgetDefinition.connections',\n },\n };\n}\n\nfunction withShowcaseViewToggle<T extends WidgetInstance>(\n widget: T,\n initialViewMode: PraxisChartShowcaseViewMode = 'chart',\n): T {\n return {\n ...widget,\n definition: {\n ...widget.definition,\n id: 'praxis-chart-showcase-widget',\n inputs: {\n ...(widget.definition.inputs || {}),\n enableCustomization: '${enableCustomization}',\n viewMode: initialViewMode,\n },\n bindingOrder: ['config', 'chartDocument', 'data', 'enableCustomization', 'viewMode'],\n },\n shell: {\n ...(widget.shell || {}),\n actions: [...((widget.shell?.actions as any[]) || []), ...buildShowcaseToggleActions()],\n },\n };\n}\n\nfunction buildShowcaseToggleActions() {\n return [\n {\n id: 'show-chart',\n icon: 'bar_chart',\n tooltip: 'Ver grafico',\n variant: 'icon' as const,\n command: 'pdx:set-input',\n payload: {\n input: 'viewMode',\n value: 'chart',\n },\n },\n {\n id: 'show-table',\n icon: 'table_view',\n tooltip: 'Ver tabela',\n variant: 'icon' as const,\n command: 'pdx:set-input',\n payload: {\n input: 'viewMode',\n value: 'table',\n },\n },\n ];\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport {\n DynamicWidgetPageComponent,\n} from '@praxisui/core';\nimport {\n PRAXIS_CHART_BACKEND_MOCK_BAR,\n PRAXIS_CHART_BACKEND_MOCK_COMBO,\n PRAXIS_CHART_BACKEND_MOCK_DONUT,\n PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR,\n PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR,\n PRAXIS_CHART_BACKEND_MOCK_SCATTER,\n PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA,\n PRAXIS_CHART_BACKEND_MOCK_TIMESERIES,\n} from '../mocks/chart-backend.mock';\nimport {\n buildPraxisChartInteractiveCanvasPage,\n buildPraxisChartInteractiveWidgetPage,\n buildPraxisChartMockCanvasPage,\n buildPraxisChartMockWidgetPage,\n} from './chart-backend-mock.examples';\nimport { providePraxisCharts } from '../providers/charts.providers';\nimport { PraxisChartBackendPayloadAdapterService } from '../services/chart-backend-payload-adapter.service';\n\ntype ShowcaseLayoutMode = 'widget' | 'canvas';\ntype ShowcasePayloadMode =\n | 'group-by'\n | 'timeseries'\n | 'distribution'\n | 'horizontal-bar'\n | 'stacked-area'\n | 'multi-metric-bar'\n | 'scatter'\n | 'combo';\ntype ShowcaseScenarioMode = 'baseline' | 'interactive' | 'empty' | 'loading' | 'error';\n\n@Component({\n selector: 'praxis-chart-composition-showcase',\n standalone: true,\n imports: [CommonModule, DynamicWidgetPageComponent],\n providers: [providePraxisCharts()],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <section class=\"showcase-shell\">\n <header class=\"showcase-hero\">\n <div class=\"showcase-copy\">\n <p class=\"showcase-eyebrow\">Praxis Charts</p>\n <h2>Composicao local com contrato canonico e API publicada</h2>\n <p>\n O showcase valida o fluxo <code>widget.chart</code>,\n <code>praxis.stats</code>, renderizacao dinamica, probe de eventos\n e o toggle de chart/tabela sobre o mesmo dataset, com a trilha\n semantica de <code>queryContext</code> como contrato recomendado\n para orquestracao declarativa.\n </p>\n </div>\n\n <div class=\"showcase-controls\">\n <div class=\"control-group\">\n <span>Layout</span>\n <div class=\"control-buttons\">\n <button type=\"button\" [class.active]=\"layoutMode() === 'widget'\" (click)=\"layoutMode.set('widget')\">\n Widget Layout\n </button>\n <button type=\"button\" [class.active]=\"layoutMode() === 'canvas'\" (click)=\"layoutMode.set('canvas')\">\n Canvas Layout\n </button>\n </div>\n </div>\n\n <div class=\"control-group\">\n <span>Envelope inspecionado</span>\n <div class=\"control-buttons\">\n <button type=\"button\" [class.active]=\"payloadMode() === 'group-by'\" (click)=\"payloadMode.set('group-by')\">\n Group-by\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'timeseries'\" (click)=\"payloadMode.set('timeseries')\">\n Time series\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'distribution'\" (click)=\"payloadMode.set('distribution')\">\n Distribution\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'horizontal-bar'\" (click)=\"payloadMode.set('horizontal-bar')\">\n Horizontal bar\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'stacked-area'\" (click)=\"payloadMode.set('stacked-area')\">\n Stacked area\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'multi-metric-bar'\" (click)=\"payloadMode.set('multi-metric-bar')\">\n Multi-metric bar\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'scatter'\" (click)=\"payloadMode.set('scatter')\">\n Scatter\n </button>\n <button type=\"button\" [class.active]=\"payloadMode() === 'combo'\" (click)=\"payloadMode.set('combo')\">\n Combo\n </button>\n </div>\n </div>\n\n <div class=\"control-group\">\n <span>Cenario</span>\n <div class=\"control-buttons\">\n <button type=\"button\" [class.active]=\"scenarioMode() === 'baseline'\" (click)=\"scenarioMode.set('baseline')\">\n Baseline\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'interactive'\" (click)=\"scenarioMode.set('interactive')\">\n Interativo\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'empty'\" (click)=\"scenarioMode.set('empty')\">\n Empty\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'loading'\" (click)=\"scenarioMode.set('loading')\">\n Loading\n </button>\n <button type=\"button\" [class.active]=\"scenarioMode() === 'error'\" (click)=\"scenarioMode.set('error')\">\n Error\n </button>\n </div>\n </div>\n </div>\n </header>\n\n <div class=\"showcase-grid\">\n <article class=\"runtime-panel\">\n <div class=\"panel-header\">\n <div>\n <p class=\"panel-kicker\">Runtime</p>\n <h3>{{ layoutMode() === 'widget' ? 'DynamicWidgetPage / Layout' : 'DynamicWidgetPage / Canvas' }}</h3>\n </div>\n <span class=\"panel-chip\">{{ layoutMode() }} / {{ scenarioMode() }}</span>\n </div>\n\n <praxis-dynamic-page\n [page]=\"resolvedPage()\"\n [context]=\"runtimeContext()\"\n [autoPersist]=\"false\"\n ></praxis-dynamic-page>\n </article>\n\n <article class=\"payload-panel\">\n <div class=\"panel-header\">\n <div>\n <p class=\"panel-kicker\">Payload</p>\n <h3>{{ payloadTitle() }}</h3>\n <p class=\"panel-caption\">Referencia canonica para alimentar <code>queryContext</code> em dashboards metadata-driven.</p>\n </div>\n <span class=\"panel-chip\">widget.chart</span>\n </div>\n\n <pre>{{ selectedPayloadJson() }}</pre>\n </article>\n </div>\n </section>\n `,\n styles: [\n `\n :host {\n display: block;\n }\n\n .showcase-shell {\n display: grid;\n gap: 24px;\n }\n\n .showcase-hero {\n display: grid;\n gap: 20px;\n padding: 28px;\n border-radius: 28px;\n background:\n radial-gradient(circle at top right, rgba(18, 99, 180, 0.18), transparent 30%),\n linear-gradient(135deg, rgba(7, 24, 54, 0.95), rgba(18, 99, 180, 0.78));\n color: #f7fbff;\n }\n\n .showcase-copy h2 {\n margin: 0 0 10px;\n font-size: clamp(1.8rem, 3vw, 2.6rem);\n line-height: 1.05;\n }\n\n .showcase-copy p {\n margin: 0;\n max-width: 52rem;\n color: rgba(247, 251, 255, 0.88);\n }\n\n .showcase-eyebrow,\n .panel-kicker {\n margin: 0 0 8px;\n font-size: 0.78rem;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: rgba(247, 251, 255, 0.72);\n }\n\n .showcase-controls {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n }\n\n .control-group {\n display: grid;\n gap: 8px;\n }\n\n .control-group span {\n font-size: 0.84rem;\n color: rgba(247, 251, 255, 0.76);\n }\n\n .control-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .control-buttons button {\n border: 1px solid rgba(247, 251, 255, 0.22);\n background: rgba(247, 251, 255, 0.08);\n color: #f7fbff;\n border-radius: 999px;\n padding: 10px 14px;\n cursor: pointer;\n transition: background 160ms ease, transform 160ms ease;\n }\n\n .control-buttons button.active {\n background: #f7fbff;\n color: #0d2d5f;\n }\n\n .showcase-grid {\n display: grid;\n gap: 20px;\n grid-template-columns: minmax(0, 1.3fr) minmax(320px, 0.9fr);\n }\n\n .runtime-panel,\n .payload-panel {\n display: grid;\n gap: 16px;\n padding: 20px;\n border-radius: 24px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 76%, transparent);\n background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(244, 247, 251, 0.96));\n }\n\n .panel-header {\n display: flex;\n align-items: start;\n justify-content: space-between;\n gap: 12px;\n }\n\n .panel-header h3 {\n margin: 0;\n color: #142033;\n }\n\n .panel-caption {\n margin: 6px 0 0;\n color: #516074;\n font-size: 0.88rem;\n line-height: 1.45;\n }\n\n .panel-chip {\n border-radius: 999px;\n padding: 6px 10px;\n font-size: 0.76rem;\n background: rgba(18, 99, 180, 0.12);\n color: #1263b4;\n }\n\n .payload-panel pre {\n margin: 0;\n padding: 16px;\n border-radius: 18px;\n background: #09111f;\n color: #d7e6ff;\n overflow: auto;\n font-size: 0.84rem;\n line-height: 1.5;\n }\n\n @media (max-width: 1080px) {\n .showcase-grid {\n grid-template-columns: 1fr;\n }\n }\n `,\n ],\n})\nexport class PraxisChartCompositionShowcaseComponent {\n readonly enableCustomization = input(false, { transform: booleanAttribute });\n protected readonly layoutMode = signal<ShowcaseLayoutMode>('widget');\n protected readonly payloadMode = signal<ShowcasePayloadMode>('group-by');\n protected readonly scenarioMode = signal<ShowcaseScenarioMode>('baseline');\n\n private readonly backendPayloadAdapter = inject(PraxisChartBackendPayloadAdapterService);\n protected readonly runtimeContext = computed(() => ({\n tenantId: 'demo-enterprise',\n locale: 'pt-BR',\n environment: 'published-api',\n enableCustomization: this.enableCustomization(),\n }));\n\n protected readonly widgetPage = computed(() => {\n switch (this.scenarioMode()) {\n case 'interactive':\n return buildPraxisChartInteractiveWidgetPage(this.backendPayloadAdapter);\n case 'empty':\n return {\n ...buildPraxisChartMockWidgetPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n }),\n ],\n };\n case 'loading':\n return {\n ...buildPraxisChartMockWidgetPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'loading',\n },\n },\n }),\n ],\n };\n case 'error':\n return {\n ...buildPraxisChartMockWidgetPage(this.backendPayloadAdapter),\n widgets: [\n this.backendPayloadAdapter.toWidgetInstance({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'error',\n },\n },\n }),\n ],\n };\n case 'baseline':\n default:\n return buildPraxisChartMockWidgetPage(this.backendPayloadAdapter);\n }\n });\n\n protected readonly canvasPage = computed(() => {\n switch (this.scenarioMode()) {\n case 'interactive':\n return buildPraxisChartInteractiveCanvasPage(this.backendPayloadAdapter);\n case 'empty':\n return this.buildScenarioCanvasPage({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n });\n case 'loading':\n return this.buildScenarioCanvasPage({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'loading',\n },\n },\n });\n case 'error':\n return this.buildScenarioCanvasPage({\n ...PRAXIS_CHART_BACKEND_MOCK_BAR,\n data: [],\n widget: {\n ...PRAXIS_CHART_BACKEND_MOCK_BAR.widget,\n runtime: {\n preferredLoadState: 'error',\n },\n },\n });\n case 'baseline':\n default:\n return buildPraxisChartMockCanvasPage(this.backendPayloadAdapter);\n }\n });\n\n protected readonly resolvedPage = computed(() => (\n this.layoutMode() === 'canvas' ? this.canvasPage() : this.widgetPage()\n ));\n\n protected readonly payloadTitle = computed(() => {\n switch (this.payloadMode()) {\n case 'timeseries':\n return 'Envelope timeseries';\n case 'distribution':\n return 'Envelope distribution';\n case 'horizontal-bar':\n return 'Envelope horizontal-bar';\n case 'stacked-area':\n return 'Envelope stacked-area';\n case 'multi-metric-bar':\n return 'Envelope multi-metric bar';\n case 'scatter':\n return 'Envelope scatter';\n case 'combo':\n return 'Envelope combo';\n case 'group-by':\n default:\n return 'Envelope group-by';\n }\n });\n\n protected readonly selectedPayloadJson = computed(() =>\n JSON.stringify(this.selectedPayload(), null, 2),\n );\n\n private readonly selectedPayload = computed(() => {\n switch (this.payloadMode()) {\n case 'timeseries':\n return PRAXIS_CHART_BACKEND_MOCK_TIMESERIES;\n case 'distribution':\n return PRAXIS_CHART_BACKEND_MOCK_DONUT;\n case 'horizontal-bar':\n return PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR;\n case 'stacked-area':\n return PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA;\n case 'multi-metric-bar':\n return PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR;\n case 'scatter':\n return PRAXIS_CHART_BACKEND_MOCK_SCATTER;\n case 'combo':\n return PRAXIS_CHART_BACKEND_MOCK_COMBO;\n case 'group-by':\n default:\n return PRAXIS_CHART_BACKEND_MOCK_BAR;\n }\n });\n\n private buildScenarioCanvasPage(primaryPayload: typeof PRAXIS_CHART_BACKEND_MOCK_BAR) {\n const base = buildPraxisChartMockCanvasPage(this.backendPayloadAdapter);\n const widgets = [\n this.backendPayloadAdapter.toWidgetInstance(primaryPayload),\n this.backendPayloadAdapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES),\n this.backendPayloadAdapter.toWidgetInstance(PRAXIS_CHART_BACKEND_MOCK_DONUT),\n ];\n return {\n ...base,\n widgets,\n canvas: {\n ...base.canvas!,\n items: {\n [widgets[0].key]: this.backendPayloadAdapter.toCanvasItem(primaryPayload),\n [widgets[1].key]: this.backendPayloadAdapter.toCanvasItem(PRAXIS_CHART_BACKEND_MOCK_TIMESERIES),\n [widgets[2].key]: this.backendPayloadAdapter.toCanvasItem(PRAXIS_CHART_BACKEND_MOCK_DONUT),\n },\n },\n };\n }\n}\n","import type { PraxisI18nDictionary } from '@praxisui/core';\n\nexport const PRAXIS_CHARTS_EN_US: PraxisI18nDictionary = {\n 'praxis.charts.runtime.editChart': 'Edit chart settings',\n 'praxis.charts.runtime.invalidDocumentTitle': 'Invalid canonical configuration',\n 'praxis.charts.runtime.invalidDocumentDescription': 'The canonical chart document could not be mapped to the current Praxis Charts runtime. Review the chart contract before continuing.',\n 'praxis.charts.editor.section.general': 'General',\n 'praxis.charts.editor.section.data': 'Data',\n 'praxis.charts.editor.section.analytics': 'Analytics',\n 'praxis.charts.editor.section.appearance': 'Appearance',\n 'praxis.charts.editor.section.motion': 'Motion',\n 'praxis.charts.editor.section.events': 'Events',\n 'praxis.charts.editor.section.preview': 'Preview',\n 'praxis.charts.editor.field.chartId': 'Chart ID',\n 'praxis.charts.editor.field.kind': 'Kind',\n 'praxis.charts.editor.field.title': 'Title',\n 'praxis.charts.editor.field.subtitle': 'Subtitle',\n 'praxis.charts.editor.field.height': 'Height',\n 'praxis.charts.editor.field.sourceKind': 'Source',\n 'praxis.charts.editor.field.resource': 'Resource',\n 'praxis.charts.editor.field.operation': 'Operation',\n 'praxis.charts.editor.field.granularity': 'Granularity',\n 'praxis.charts.editor.field.fillGaps': 'Fill missing intervals',\n 'praxis.charts.editor.field.distributionMode': 'Distribution mode',\n 'praxis.charts.editor.field.bucketSize': 'Bucket size',\n 'praxis.charts.editor.field.bucketCount': 'Bucket count',\n 'praxis.charts.editor.field.dimension': 'Dimension',\n 'praxis.charts.editor.field.dimensionRole': 'Dimension role',\n 'praxis.charts.editor.field.metric': 'Metric',\n 'praxis.charts.editor.field.metricLabel': 'Metric label',\n 'praxis.charts.editor.field.metricAggregation': 'Aggregation',\n 'praxis.charts.editor.field.metricAxis': 'Axis',\n 'praxis.charts.editor.field.metricSeriesKind': 'Series kind',\n 'praxis.charts.editor.field.legendEnabled': 'Show legend',\n 'praxis.charts.editor.field.labelsEnabled': 'Show labels',\n 'praxis.charts.editor.field.tooltipEnabled': 'Show tooltip',\n 'praxis.charts.editor.field.palette': 'Palette colors',\n 'praxis.charts.editor.field.emptyTitle': 'Empty title',\n 'praxis.charts.editor.field.emptyDescription': 'Empty description',\n 'praxis.charts.editor.field.loadingTitle': 'Loading title',\n 'praxis.charts.editor.field.loadingDescription': 'Loading description',\n 'praxis.charts.editor.field.errorTitle': 'Error title',\n 'praxis.charts.editor.field.errorDescription': 'Error description',\n 'praxis.charts.editor.field.motionEnabled': 'Enable animations',\n 'praxis.charts.editor.field.motionPreset': 'Motion preset',\n 'praxis.charts.editor.field.eventAction': 'Action',\n 'praxis.charts.editor.field.eventTarget': 'Target',\n 'praxis.charts.editor.field.eventMapping': 'Mapping',\n 'praxis.charts.editor.preview.title': 'Chart preview',\n 'praxis.charts.editor.preview.caption': 'Local preview derived from the canonical contract without remote calls.',\n 'praxis.charts.editor.preview.invalid': 'Preview is unavailable while the contract has blocking errors.',\n 'praxis.charts.editor.issues.title': 'Validation issues',\n 'praxis.charts.editor.issues.empty': 'No issues were identified.',\n 'praxis.charts.editor.appearance.featuresTitle': 'Display features',\n 'praxis.charts.editor.appearance.paletteTitle': 'Palette',\n 'praxis.charts.editor.appearance.paletteHint': 'Use comma or line separated colors to persist theme.palette as a canonical array.',\n 'praxis.charts.editor.appearance.statesTitle': 'State messages',\n 'praxis.charts.editor.analytics.dimensionsTitle': 'Dimensions',\n 'praxis.charts.editor.analytics.metricsTitle': 'Metrics',\n 'praxis.charts.editor.analytics.addDimension': 'Add dimension',\n 'praxis.charts.editor.analytics.addMetric': 'Add metric',\n 'praxis.charts.editor.analytics.removeDimension': 'Remove dimension',\n 'praxis.charts.editor.analytics.removeMetric': 'Remove metric',\n 'praxis.charts.editor.specialization.timeseriesTitle': 'Timeseries options',\n 'praxis.charts.editor.specialization.distributionTitle': 'Distribution options',\n 'praxis.charts.editor.specialization.comboTitle': 'Combo guidance',\n 'praxis.charts.editor.specialization.comboHint': 'Combo charts require at least two metrics and allow per-metric axis and series kind mapping.',\n 'praxis.charts.editor.specialization.pieDonutTitle': 'Composition guidance',\n 'praxis.charts.editor.specialization.pieDonutHint': 'Pie and donut charts keep only the first metric and use the first dimension as the category segment.',\n 'praxis.charts.editor.specialization.scatterTitle': 'Scatter guidance',\n 'praxis.charts.editor.specialization.scatterHint': 'Scatter charts use the first dimension as X and the first metric as Y.',\n 'praxis.charts.editor.events.pointClickTitle': 'Point click',\n 'praxis.charts.editor.events.drillDownTitle': 'Drill down',\n 'praxis.charts.editor.events.none': 'None',\n 'praxis.charts.editor.sourceKind.praxisStats': 'praxis.stats',\n 'praxis.charts.editor.sourceKind.derived': 'derived',\n 'praxis.charts.editor.operation.groupBy': 'group-by',\n 'praxis.charts.editor.operation.timeseries': 'timeseries',\n 'praxis.charts.editor.operation.distribution': 'distribution',\n 'praxis.charts.editor.granularity.hour': 'hour',\n 'praxis.charts.editor.granularity.day': 'day',\n 'praxis.charts.editor.granularity.week': 'week',\n 'praxis.charts.editor.granularity.month': 'month',\n 'praxis.charts.editor.granularity.quarter': 'quarter',\n 'praxis.charts.editor.granularity.year': 'year',\n 'praxis.charts.editor.distributionMode.terms': 'terms',\n 'praxis.charts.editor.distributionMode.histogram': 'histogram',\n 'praxis.charts.editor.motionPreset.subtle': 'subtle',\n 'praxis.charts.editor.motionPreset.standard': 'standard',\n 'praxis.charts.editor.motionPreset.expressive': 'expressive',\n 'praxis.charts.editor.dimensionRole.category': 'category',\n 'praxis.charts.editor.dimensionRole.series': 'series',\n 'praxis.charts.editor.dimensionRole.segment': 'segment',\n 'praxis.charts.editor.dimensionRole.time': 'time',\n 'praxis.charts.editor.dimensionRole.value': 'value',\n 'praxis.charts.editor.metricAggregation.sum': 'sum',\n 'praxis.charts.editor.metricAggregation.count': 'count',\n 'praxis.charts.editor.metricAggregation.avg': 'avg',\n 'praxis.charts.editor.metricAggregation.min': 'min',\n 'praxis.charts.editor.metricAggregation.max': 'max',\n 'praxis.charts.editor.metricAxis.primary': 'primary',\n 'praxis.charts.editor.metricAxis.secondary': 'secondary',\n 'praxis.charts.editor.metricSeriesKind.bar': 'bar',\n 'praxis.charts.editor.metricSeriesKind.line': 'line',\n 'praxis.charts.editor.metricSeriesKind.area': 'area',\n 'praxis.charts.editor.eventAction.filter-widget': 'filter-widget',\n 'praxis.charts.editor.eventAction.open-detail': 'open-detail',\n 'praxis.charts.editor.eventAction.navigate': 'navigate',\n 'praxis.charts.editor.eventAction.update-context': 'update-context',\n 'praxis.charts.editor.eventAction.emit': 'emit',\n 'praxis.charts.editor.kind.bar': 'Bar',\n 'praxis.charts.editor.kind.horizontal-bar': 'Horizontal Bar',\n 'praxis.charts.editor.kind.line': 'Line',\n 'praxis.charts.editor.kind.area': 'Area',\n 'praxis.charts.editor.kind.stacked-bar': 'Stacked Bar',\n 'praxis.charts.editor.kind.stacked-area': 'Stacked Area',\n 'praxis.charts.editor.kind.combo': 'Combo',\n 'praxis.charts.editor.kind.pie': 'Pie',\n 'praxis.charts.editor.kind.donut': 'Donut',\n 'praxis.charts.editor.kind.scatter': 'Scatter',\n};\n","import type { PraxisI18nDictionary } from '@praxisui/core';\n\nexport const PRAXIS_CHARTS_PT_BR: PraxisI18nDictionary = {\n 'praxis.charts.runtime.editChart': 'Editar configuracoes do chart',\n 'praxis.charts.runtime.invalidDocumentTitle': 'Configuracao canonica invalida',\n 'praxis.charts.runtime.invalidDocumentDescription': 'O documento canonico do chart nao pode ser mapeado para o runtime atual do Praxis Charts. Revise o contrato do chart antes de continuar.',\n 'praxis.charts.editor.section.general': 'Geral',\n 'praxis.charts.editor.section.data': 'Dados',\n 'praxis.charts.editor.section.analytics': 'Estrutura',\n 'praxis.charts.editor.section.appearance': 'Aparencia',\n 'praxis.charts.editor.section.motion': 'Motion',\n 'praxis.charts.editor.section.events': 'Eventos',\n 'praxis.charts.editor.section.preview': 'Preview',\n 'praxis.charts.editor.field.chartId': 'Chart ID',\n 'praxis.charts.editor.field.kind': 'Tipo',\n 'praxis.charts.editor.field.title': 'Titulo',\n 'praxis.charts.editor.field.subtitle': 'Subtitulo',\n 'praxis.charts.editor.field.height': 'Altura',\n 'praxis.charts.editor.field.sourceKind': 'Fonte',\n 'praxis.charts.editor.field.resource': 'Recurso',\n 'praxis.charts.editor.field.operation': 'Operacao',\n 'praxis.charts.editor.field.granularity': 'Granularidade',\n 'praxis.charts.editor.field.fillGaps': 'Preencher intervalos sem dados',\n 'praxis.charts.editor.field.distributionMode': 'Modo da distribuicao',\n 'praxis.charts.editor.field.bucketSize': 'Tamanho do bucket',\n 'praxis.charts.editor.field.bucketCount': 'Quantidade de buckets',\n 'praxis.charts.editor.field.dimension': 'Dimensao',\n 'praxis.charts.editor.field.dimensionRole': 'Papel da dimensao',\n 'praxis.charts.editor.field.metric': 'Metrica',\n 'praxis.charts.editor.field.metricLabel': 'Label da metrica',\n 'praxis.charts.editor.field.metricAggregation': 'Agregacao',\n 'praxis.charts.editor.field.metricAxis': 'Eixo',\n 'praxis.charts.editor.field.metricSeriesKind': 'Tipo da serie',\n 'praxis.charts.editor.field.legendEnabled': 'Exibir legenda',\n 'praxis.charts.editor.field.labelsEnabled': 'Exibir labels',\n 'praxis.charts.editor.field.tooltipEnabled': 'Exibir tooltip',\n 'praxis.charts.editor.field.palette': 'Cores da paleta',\n 'praxis.charts.editor.field.emptyTitle': 'Titulo do estado vazio',\n 'praxis.charts.editor.field.emptyDescription': 'Descricao do estado vazio',\n 'praxis.charts.editor.field.loadingTitle': 'Titulo do loading',\n 'praxis.charts.editor.field.loadingDescription': 'Descricao do loading',\n 'praxis.charts.editor.field.errorTitle': 'Titulo do erro',\n 'praxis.charts.editor.field.errorDescription': 'Descricao do erro',\n 'praxis.charts.editor.field.motionEnabled': 'Ativar animacoes',\n 'praxis.charts.editor.field.motionPreset': 'Preset de motion',\n 'praxis.charts.editor.field.eventAction': 'Acao',\n 'praxis.charts.editor.field.eventTarget': 'Destino',\n 'praxis.charts.editor.field.eventMapping': 'Mapeamento',\n 'praxis.charts.editor.preview.title': 'Preview do chart',\n 'praxis.charts.editor.preview.caption': 'Preview local derivado do contrato canonico, sem chamadas remotas.',\n 'praxis.charts.editor.preview.invalid': 'O preview fica indisponivel enquanto houver erro bloqueante no contrato.',\n 'praxis.charts.editor.issues.title': 'Issues de validacao',\n 'praxis.charts.editor.issues.empty': 'Nenhum issue identificado.',\n 'praxis.charts.editor.appearance.featuresTitle': 'Recursos visuais',\n 'praxis.charts.editor.appearance.paletteTitle': 'Paleta',\n 'praxis.charts.editor.appearance.paletteHint': 'Use cores separadas por virgula ou linha para persistir `theme.palette` como array canonico.',\n 'praxis.charts.editor.appearance.statesTitle': 'Mensagens de estado',\n 'praxis.charts.editor.analytics.dimensionsTitle': 'Dimensoes',\n 'praxis.charts.editor.analytics.metricsTitle': 'Metricas',\n 'praxis.charts.editor.analytics.addDimension': 'Adicionar dimensao',\n 'praxis.charts.editor.analytics.addMetric': 'Adicionar metrica',\n 'praxis.charts.editor.analytics.removeDimension': 'Remover dimensao',\n 'praxis.charts.editor.analytics.removeMetric': 'Remover metrica',\n 'praxis.charts.editor.specialization.timeseriesTitle': 'Opcoes de series temporais',\n 'praxis.charts.editor.specialization.distributionTitle': 'Opcoes de distribuicao',\n 'praxis.charts.editor.specialization.comboTitle': 'Guia de combo',\n 'praxis.charts.editor.specialization.comboHint': 'Charts combo exigem pelo menos duas metricas e permitem configurar eixo e tipo de serie por metrica.',\n 'praxis.charts.editor.specialization.pieDonutTitle': 'Guia de composicao',\n 'praxis.charts.editor.specialization.pieDonutHint': 'Charts pie e donut mantem apenas a primeira metrica e usam a primeira dimensao como segmento categorico.',\n 'praxis.charts.editor.specialization.scatterTitle': 'Guia de scatter',\n 'praxis.charts.editor.specialization.scatterHint': 'Charts scatter usam a primeira dimensao como eixo X e a primeira metrica como eixo Y.',\n 'praxis.charts.editor.events.pointClickTitle': 'Clique no ponto',\n 'praxis.charts.editor.events.drillDownTitle': 'Drill down',\n 'praxis.charts.editor.events.none': 'Nenhuma',\n 'praxis.charts.editor.sourceKind.praxisStats': 'praxis.stats',\n 'praxis.charts.editor.sourceKind.derived': 'derived',\n 'praxis.charts.editor.operation.groupBy': 'group-by',\n 'praxis.charts.editor.operation.timeseries': 'timeseries',\n 'praxis.charts.editor.operation.distribution': 'distribution',\n 'praxis.charts.editor.granularity.hour': 'hour',\n 'praxis.charts.editor.granularity.day': 'day',\n 'praxis.charts.editor.granularity.week': 'week',\n 'praxis.charts.editor.granularity.month': 'month',\n 'praxis.charts.editor.granularity.quarter': 'quarter',\n 'praxis.charts.editor.granularity.year': 'year',\n 'praxis.charts.editor.distributionMode.terms': 'terms',\n 'praxis.charts.editor.distributionMode.histogram': 'histogram',\n 'praxis.charts.editor.motionPreset.subtle': 'sutil',\n 'praxis.charts.editor.motionPreset.standard': 'padrao',\n 'praxis.charts.editor.motionPreset.expressive': 'expressivo',\n 'praxis.charts.editor.dimensionRole.category': 'category',\n 'praxis.charts.editor.dimensionRole.series': 'series',\n 'praxis.charts.editor.dimensionRole.segment': 'segment',\n 'praxis.charts.editor.dimensionRole.time': 'time',\n 'praxis.charts.editor.dimensionRole.value': 'value',\n 'praxis.charts.editor.metricAggregation.sum': 'sum',\n 'praxis.charts.editor.metricAggregation.count': 'count',\n 'praxis.charts.editor.metricAggregation.avg': 'avg',\n 'praxis.charts.editor.metricAggregation.min': 'min',\n 'praxis.charts.editor.metricAggregation.max': 'max',\n 'praxis.charts.editor.metricAxis.primary': 'primary',\n 'praxis.charts.editor.metricAxis.secondary': 'secondary',\n 'praxis.charts.editor.metricSeriesKind.bar': 'bar',\n 'praxis.charts.editor.metricSeriesKind.line': 'line',\n 'praxis.charts.editor.metricSeriesKind.area': 'area',\n 'praxis.charts.editor.eventAction.filter-widget': 'filter-widget',\n 'praxis.charts.editor.eventAction.open-detail': 'open-detail',\n 'praxis.charts.editor.eventAction.navigate': 'navigate',\n 'praxis.charts.editor.eventAction.update-context': 'update-context',\n 'praxis.charts.editor.eventAction.emit': 'emit',\n 'praxis.charts.editor.kind.bar': 'Bar',\n 'praxis.charts.editor.kind.horizontal-bar': 'Horizontal Bar',\n 'praxis.charts.editor.kind.line': 'Line',\n 'praxis.charts.editor.kind.area': 'Area',\n 'praxis.charts.editor.kind.stacked-bar': 'Stacked Bar',\n 'praxis.charts.editor.kind.stacked-area': 'Stacked Area',\n 'praxis.charts.editor.kind.combo': 'Combo',\n 'praxis.charts.editor.kind.pie': 'Pie',\n 'praxis.charts.editor.kind.donut': 'Donut',\n 'praxis.charts.editor.kind.scatter': 'Scatter',\n};\n","import { InjectionToken, type Provider } from '@angular/core';\nimport {\n providePraxisI18n,\n type PraxisI18nConfig,\n type PraxisI18nDictionary,\n type PraxisI18nMessageDescriptor,\n type PraxisTextValue,\n} from '@praxisui/core';\nimport { PRAXIS_CHARTS_EN_US } from './charts.en-US';\nimport { PRAXIS_CHARTS_PT_BR } from './charts.pt-BR';\n\nexport type PraxisChartsText = PraxisTextValue;\n\nexport interface PraxisChartsI18nOptions {\n locale?: string;\n fallbackLocale?: string;\n dictionaries?: Record<string, PraxisI18nDictionary>;\n}\n\nexport const PRAXIS_CHARTS_I18N =\n new InjectionToken<Record<string, never>>('PRAXIS_CHARTS_I18N', {\n factory: () => ({}),\n });\n\nexport function createPraxisChartsI18nConfig(\n options: PraxisChartsI18nOptions = {},\n): Partial<PraxisI18nConfig> {\n const localeDictionaries: Record<string, PraxisI18nDictionary> = {\n 'pt-BR': {\n ...PRAXIS_CHARTS_PT_BR,\n ...(options.dictionaries?.['pt-BR'] ?? {}),\n },\n 'en-US': {\n ...PRAXIS_CHARTS_EN_US,\n ...(options.dictionaries?.['en-US'] ?? {}),\n },\n };\n\n for (const [locale, dictionary] of Object.entries(options.dictionaries ?? {})) {\n if (locale === 'pt-BR' || locale === 'en-US') {\n continue;\n }\n\n localeDictionaries[locale] = {\n ...(localeDictionaries[locale] ?? {}),\n ...dictionary,\n };\n }\n\n return {\n locale: options.locale,\n fallbackLocale: options.fallbackLocale ?? 'pt-BR',\n namespaces: {\n charts: localeDictionaries,\n },\n };\n}\n\nexport function providePraxisChartsI18n(\n options: PraxisChartsI18nOptions = {},\n): Provider[] {\n return [\n {\n provide: PRAXIS_CHARTS_I18N,\n useValue: {},\n },\n providePraxisI18n(createPraxisChartsI18nConfig(options) as PraxisI18nConfig),\n ];\n}\n\nexport function resolvePraxisChartsText(\n value: PraxisChartsText | null | undefined,\n fallback?: string,\n): PraxisI18nMessageDescriptor {\n if (typeof value === 'string') {\n return { text: value };\n }\n\n if (value?.key || value?.text) {\n return value;\n }\n\n return { text: fallback ?? '' };\n}\n","import { Injectable } from '@angular/core';\nimport type { PraxisXUiChartContract } from '../../models/x-ui-chart.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ChartEditorDefaultsService {\n create(): PraxisXUiChartContract {\n return {\n version: '1.0.0',\n kind: 'bar',\n title: 'Untitled chart',\n source: {\n kind: 'derived',\n },\n dimensions: [{ field: 'category', role: 'category' }],\n metrics: [{ field: 'value', aggregation: 'sum', label: 'Value' }],\n legend: { enabled: true },\n labels: { enabled: false },\n tooltip: { enabled: true },\n motion: {\n enabled: true,\n preset: 'standard',\n },\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport type { PraxisChartConfig } from '../../models/chart-config.model';\nimport type { PraxisChartDataRow } from '../../models/chart-dataset.model';\nimport type { PraxisXUiChartContract } from '../../models/x-ui-chart.model';\nimport { PraxisChartCanonicalContractMapperService } from '../../services/chart-canonical-contract-mapper.service';\n\nexport interface ChartEditorPreviewPayload {\n config: PraxisChartConfig;\n data: PraxisChartDataRow[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ChartEditorPreviewMapperService {\n constructor(\n private readonly mapper: PraxisChartCanonicalContractMapperService,\n ) {}\n\n build(document: PraxisXUiChartContract): ChartEditorPreviewPayload {\n const config = this.mapper.toPraxisChartConfig(document);\n\n return {\n config,\n data: this.buildRows(document),\n };\n }\n\n private buildRows(document: PraxisXUiChartContract): PraxisChartDataRow[] {\n const dimensionField = document.dimensions?.[0]?.field?.trim();\n const metrics = document.metrics ?? [];\n\n if (!dimensionField || !metrics.length) {\n return [];\n }\n\n if (document.kind === 'scatter') {\n return metrics[0]?.field\n ? [\n { [dimensionField]: 10, [metrics[0].field]: 22 },\n { [dimensionField]: 18, [metrics[0].field]: 31 },\n { [dimensionField]: 27, [metrics[0].field]: 45 },\n ]\n : [];\n }\n\n const categories = document.source.kind === 'praxis.stats' && document.source.operation === 'timeseries'\n ? ['2026-01', '2026-02', '2026-03']\n : ['Alpha', 'Beta', 'Gamma'];\n\n return categories.map((category, index) => {\n const row: PraxisChartDataRow = {\n [dimensionField]: category,\n };\n\n metrics.forEach((metric, metricIndex) => {\n if (!metric.field) {\n return;\n }\n\n row[metric.field] = (index + 1) * 10 * (metricIndex + 1) + metricIndex * 5;\n });\n\n return row;\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n PraxisI18nService,\n SETTINGS_PANEL_DATA,\n type SettingsValueProvider,\n} from '@praxisui/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport type {\n PraxisXUiChartContract,\n PraxisXUiChartAggregation,\n PraxisXUiChartKind,\n PraxisXUiChartMetric,\n PraxisXUiChartStatsOperation,\n PraxisXUiChartDimension,\n PraxisXUiChartEventAction,\n PraxisXUiChartStateDescriptor,\n PraxisXUiChartToggleableFeature,\n PraxisXUiChartStatsDistributionMode,\n} from '../models/x-ui-chart.model';\nimport { PraxisChartComponent } from '../components/praxis-chart/praxis-chart.component';\nimport { providePraxisChartsI18n, resolvePraxisChartsText } from '../i18n/charts.i18n';\nimport { ChartContractNormalizerService } from '../services/chart-contract-normalizer.service';\nimport { ChartContractValidationService } from '../services/chart-contract-validation.service';\nimport type { ChartContractValidationIssue } from '../services/chart-contract-validation.models';\nimport type { PraxisChartConfigEditorData } from './models/chart-config-editor-data.model';\nimport type {\n ChartConfigEditorApplyEvent,\n ChartConfigEditorResetEvent,\n ChartConfigEditorSaveEvent,\n} from './models/chart-config-editor-events.model';\nimport type {\n ChartEditorFieldOption,\n ChartEditorResourceOption,\n ChartEditorTargetOption,\n} from './models/chart-config-editor-options.model';\nimport { ChartEditorDefaultsService } from './services/chart-editor-defaults.service';\nimport { ChartEditorPreviewMapperService } from './services/chart-editor-preview-mapper.service';\n\ntype ChartEditorSection = 'general' | 'data' | 'analytics' | 'appearance' | 'motion' | 'events' | 'preview';\ntype ChartFeatureKey = 'legend' | 'labels' | 'tooltip';\ntype ChartStateKey = 'empty' | 'loading' | 'error';\ntype ChartEventKey = 'pointClick' | 'drillDown';\n\n@Component({\n selector: 'praxis-chart-config-editor',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCardModule,\n MatFormFieldModule,\n MatInputModule,\n MatSelectModule,\n MatSlideToggleModule,\n PraxisChartComponent,\n ],\n providers: [providePraxisChartsI18n()],\n templateUrl: './praxis-chart-config-editor.html',\n styles: [`\n :host {\n display: block;\n min-width: 0;\n color: var(--md-sys-color-on-surface, #1a1b20);\n }\n\n .editor-shell {\n display: grid;\n gap: 18px;\n }\n\n .editor-nav {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n }\n\n .editor-nav button.active {\n background: color-mix(in srgb, var(--md-sys-color-primary, #1263b4) 18%, transparent);\n color: var(--md-sys-color-primary, #1263b4);\n }\n\n .editor-layout {\n display: grid;\n gap: 18px;\n grid-template-columns: minmax(0, 1.35fr) minmax(320px, 0.9fr);\n align-items: start;\n }\n\n .editor-form,\n .editor-side {\n display: grid;\n gap: 16px;\n }\n\n .editor-card {\n border-radius: 20px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 72%, transparent);\n background: linear-gradient(180deg, rgba(18, 99, 180, 0.03), rgba(18, 99, 180, 0));\n }\n\n .editor-grid {\n display: grid;\n gap: 14px;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n }\n\n .editor-stack {\n display: grid;\n gap: 14px;\n }\n\n .editor-row-card {\n padding: 14px;\n border-radius: 16px;\n border: 1px solid color-mix(in srgb, var(--md-sys-color-outline, #c5c7ce) 54%, transparent);\n background: color-mix(in srgb, var(--md-sys-color-surface, #fff) 92%, rgba(18, 99, 180, 0.04));\n }\n\n .editor-row-actions {\n display: flex;\n justify-content: flex-end;\n }\n\n .editor-field {\n width: 100%;\n }\n\n .editor-issues {\n display: grid;\n gap: 10px;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .editor-issue {\n padding: 12px 14px;\n border-radius: 14px;\n background: color-mix(in srgb, var(--md-sys-color-error, #b3261e) 8%, transparent);\n border: 1px solid color-mix(in srgb, var(--md-sys-color-error, #b3261e) 18%, transparent);\n }\n\n .editor-issue strong {\n display: block;\n margin-bottom: 4px;\n }\n\n .editor-caption {\n margin: 0 0 12px;\n color: var(--md-sys-color-on-surface-variant, #5a5d67);\n font-size: 0.92rem;\n }\n\n .editor-empty {\n padding: 18px;\n border-radius: 14px;\n background: color-mix(in srgb, var(--md-sys-color-surface-variant, #eceff4) 78%, transparent);\n }\n\n @media (max-width: 960px) {\n .editor-layout {\n grid-template-columns: minmax(0, 1fr);\n }\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PraxisChartConfigEditor implements SettingsValueProvider {\n readonly documentInput = input<PraxisXUiChartContract | null>(null, { alias: 'document' });\n readonly modeInput = input<'create' | 'edit'>('edit', { alias: 'mode' });\n readonly readonlyInput = input<boolean>(false, { alias: 'readonly' });\n readonly availableResourcesInput = input<ChartEditorResourceOption[]>([], { alias: 'availableResources' });\n readonly availableFieldsInput = input<ChartEditorFieldOption[]>([], { alias: 'availableFields' });\n readonly availableTargetsInput = input<ChartEditorTargetOption[]>([], { alias: 'availableTargets' });\n\n readonly apply = output<ChartConfigEditorApplyEvent>();\n readonly save = output<ChartConfigEditorSaveEvent>();\n readonly resetChange = output<ChartConfigEditorResetEvent>();\n readonly documentChange = output<PraxisXUiChartContract>();\n\n readonly isDirty$ = new BehaviorSubject<boolean>(false);\n readonly isValid$ = new BehaviorSubject<boolean>(true);\n readonly isBusy$ = new BehaviorSubject<boolean>(false);\n\n readonly sections: Array<{ id: ChartEditorSection; labelKey: string; fallback: string }> = [\n { id: 'general', labelKey: 'praxis.charts.editor.section.general', fallback: 'General' },\n { id: 'data', labelKey: 'praxis.charts.editor.section.data', fallback: 'Data' },\n { id: 'analytics', labelKey: 'praxis.charts.editor.section.analytics', fallback: 'Analytics' },\n { id: 'appearance', labelKey: 'praxis.charts.editor.section.appearance', fallback: 'Appearance' },\n { id: 'motion', labelKey: 'praxis.charts.editor.section.motion', fallback: 'Motion' },\n { id: 'events', labelKey: 'praxis.charts.editor.section.events', fallback: 'Events' },\n { id: 'preview', labelKey: 'praxis.charts.editor.section.preview', fallback: 'Preview' },\n ];\n\n readonly chartKinds: PraxisXUiChartKind[] = [\n 'bar',\n 'horizontal-bar',\n 'line',\n 'area',\n 'stacked-bar',\n 'stacked-area',\n 'combo',\n 'pie',\n 'donut',\n 'scatter',\n ];\n\n readonly sourceKinds = ['praxis.stats', 'derived'] as const;\n readonly operations: PraxisXUiChartStatsOperation[] = ['group-by', 'timeseries', 'distribution'];\n readonly timeGranularities = ['hour', 'day', 'week', 'month', 'quarter', 'year'] as const;\n readonly distributionModes: PraxisXUiChartStatsDistributionMode[] = ['terms', 'histogram'];\n readonly dimensionRoles: NonNullable<PraxisXUiChartDimension['role']>[] = ['category', 'series', 'segment', 'time', 'value'];\n readonly metricAggregations: PraxisXUiChartAggregation[] = ['sum', 'count', 'avg', 'min', 'max'];\n readonly metricAxes: Array<NonNullable<PraxisXUiChartMetric['axis']>> = ['primary', 'secondary'];\n readonly metricSeriesKinds: Array<NonNullable<PraxisXUiChartMetric['seriesKind']>> = ['bar', 'line', 'area'];\n readonly motionPresets = ['subtle', 'standard', 'expressive'] as const;\n readonly eventActionOptions: PraxisXUiChartEventAction['action'][] = ['filter-widget', 'open-detail', 'navigate', 'update-context', 'emit'];\n readonly activeSection = signal<ChartEditorSection>('general');\n\n private readonly injectedData = inject(SETTINGS_PANEL_DATA, { optional: true }) as PraxisChartConfigEditorData | null;\n private readonly defaults = inject(ChartEditorDefaultsService);\n private readonly normalizer = inject(ChartContractNormalizerService);\n private readonly validator = inject(ChartContractValidationService);\n private readonly previewMapper = inject(ChartEditorPreviewMapperService);\n private readonly i18n = inject(PraxisI18nService);\n\n private readonly currentDocument = signal<PraxisXUiChartContract>(this.defaults.create());\n private readonly initialDocument = signal<PraxisXUiChartContract>(this.defaults.create());\n private lastExternalSignature: string | null = null;\n\n readonly normalizedDocument = computed(() => this.normalizer.normalize(this.currentDocument()));\n readonly validation = computed(() => this.validator.validate(this.normalizedDocument()));\n readonly issues = computed(() => this.validation().issues);\n readonly availableResources = computed(() => this.availableResourcesInput().length\n ? this.availableResourcesInput()\n : (this.injectedData?.availableResources ?? []));\n readonly availableFields = computed(() => this.availableFieldsInput().length\n ? this.availableFieldsInput()\n : (this.injectedData?.availableFields ?? []));\n readonly availableTargets = computed(() => this.availableTargetsInput().length\n ? this.availableTargetsInput()\n : (this.injectedData?.availableTargets ?? []));\n readonly preview = computed(() => {\n if (!this.validation().valid) {\n return null;\n }\n\n return this.previewMapper.build(this.normalizedDocument());\n });\n\n constructor() {\n effect(() => {\n const externalDocument = this.documentInput()\n ?? this.injectedData?.chartDocument\n ?? this.injectedData?.document\n ?? null;\n if (!externalDocument) {\n return;\n }\n\n const signature = JSON.stringify(externalDocument);\n if (signature === this.lastExternalSignature || this.isDirty$.getValue()) {\n return;\n }\n\n const normalized = this.normalizer.normalize(externalDocument);\n this.currentDocument.set(structuredClone(normalized));\n this.initialDocument.set(structuredClone(normalized));\n this.lastExternalSignature = signature;\n this.refreshState(false);\n });\n }\n\n getSettingsValue(): PraxisXUiChartContract {\n return structuredClone(this.normalizedDocument());\n }\n\n onSave(): PraxisXUiChartContract {\n return this.saveChanges().document;\n }\n\n reset(): void {\n const snapshot = structuredClone(this.initialDocument());\n this.currentDocument.set(snapshot);\n this.refreshState(false);\n this.resetChange.emit({ document: snapshot });\n }\n\n applyChanges(): ChartConfigEditorApplyEvent {\n const payload = this.createApplyPayload();\n this.apply.emit(payload);\n return payload;\n }\n\n saveChanges(): ChartConfigEditorSaveEvent {\n const payload = this.createSavePayload();\n this.initialDocument.set(structuredClone(payload.document));\n this.refreshState(false);\n this.save.emit(payload);\n return payload;\n }\n\n setSection(section: ChartEditorSection): void {\n this.activeSection.set(section);\n }\n\n setChartId(value: string): void {\n this.patchDocument((document) => ({\n ...document,\n chartId: value.trim() || undefined,\n }));\n }\n\n setKind(value: PraxisXUiChartKind): void {\n this.patchDocument((document) => ({\n ...document,\n kind: value,\n }));\n }\n\n setTitle(value: string): void {\n this.patchDocument((document) => ({\n ...document,\n title: value.trim() || undefined,\n }));\n }\n\n setSubtitle(value: string): void {\n this.patchDocument((document) => ({\n ...document,\n subtitle: value.trim() || undefined,\n }));\n }\n\n setHeight(value: string): void {\n this.patchDocument((document) => ({\n ...document,\n height: value.trim() || undefined,\n }));\n }\n\n setSourceKind(value: 'praxis.stats' | 'derived'): void {\n this.patchDocument((document) => ({\n ...document,\n source: value === 'derived'\n ? { kind: 'derived' }\n : {\n kind: 'praxis.stats',\n resource: document.source.kind === 'praxis.stats' ? document.source.resource : '',\n operation: document.source.kind === 'praxis.stats' ? document.source.operation ?? 'group-by' : 'group-by',\n options: document.source.kind === 'praxis.stats' ? document.source.options : undefined,\n },\n }));\n }\n\n setResource(value: string): void {\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n resource: value.trim() || undefined,\n }\n : document.source,\n }));\n }\n\n setOperation(value: PraxisXUiChartStatsOperation): void {\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n operation: value,\n }\n : document.source,\n }));\n }\n\n setGranularity(value: typeof this.timeGranularities[number]): void {\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n options: {\n ...(document.source.options ?? {}),\n granularity: value,\n },\n }\n : document.source,\n }));\n }\n\n setFillGaps(value: boolean): void {\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n options: {\n ...(document.source.options ?? {}),\n fillGaps: value,\n },\n }\n : document.source,\n }));\n }\n\n setDistributionMode(value: PraxisXUiChartStatsDistributionMode): void {\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n options: {\n ...(document.source.options ?? {}),\n mode: value,\n },\n }\n : document.source,\n }));\n }\n\n setBucketSize(value: string): void {\n const parsed = Number(value);\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n options: {\n ...(document.source.options ?? {}),\n bucketSize: Number.isFinite(parsed) && value.trim() !== '' ? parsed : undefined,\n },\n }\n : document.source,\n }));\n }\n\n setBucketCount(value: string): void {\n const parsed = Number(value);\n this.patchDocument((document) => ({\n ...document,\n source: document.source.kind === 'praxis.stats'\n ? {\n ...document.source,\n options: {\n ...(document.source.options ?? {}),\n bucketCount: Number.isFinite(parsed) && value.trim() !== '' ? parsed : undefined,\n },\n }\n : document.source,\n }));\n }\n\n addDimension(): void {\n this.patchDocument((document) => ({\n ...document,\n dimensions: [\n ...(document.dimensions ?? []),\n { field: '', role: 'category' },\n ],\n }));\n }\n\n removeDimension(index: number): void {\n this.patchDocument((document) => ({\n ...document,\n dimensions: (document.dimensions ?? []).filter((_, currentIndex) => currentIndex !== index),\n }));\n }\n\n setDimensionField(index: number, field: string): void {\n this.patchDocument((document) => ({\n ...document,\n dimensions: (document.dimensions ?? []).map((dimension, currentIndex) => currentIndex === index\n ? { ...dimension, field: field.trim() || '' }\n : dimension),\n }));\n }\n\n setDimensionRole(index: number, role: NonNullable<PraxisXUiChartDimension['role']>): void {\n this.patchDocument((document) => ({\n ...document,\n dimensions: (document.dimensions ?? []).map((dimension, currentIndex) => currentIndex === index\n ? { ...dimension, role }\n : dimension),\n }));\n }\n\n addMetric(): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: [\n ...(document.metrics ?? []),\n { field: '', aggregation: 'sum', label: '' },\n ],\n }));\n }\n\n removeMetric(index: number): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: (document.metrics ?? []).filter((_, currentIndex) => currentIndex !== index),\n }));\n }\n\n setMetricField(index: number, field: string): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: (document.metrics ?? []).map((metric, currentIndex) => currentIndex === index\n ? { ...metric, field: field.trim() || '' }\n : metric),\n }));\n }\n\n setMetricLabel(index: number, label: string): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: (document.metrics ?? []).map((metric, currentIndex) => currentIndex === index\n ? { ...metric, label: label.trim() || undefined }\n : metric),\n }));\n }\n\n setMetricAggregation(index: number, aggregation: PraxisXUiChartAggregation): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: (document.metrics ?? []).map((metric, currentIndex) => currentIndex === index\n ? { ...metric, aggregation }\n : metric),\n }));\n }\n\n setMetricAxis(index: number, axis: NonNullable<PraxisXUiChartMetric['axis']>): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: (document.metrics ?? []).map((metric, currentIndex) => currentIndex === index\n ? { ...metric, axis }\n : metric),\n }));\n }\n\n setMetricSeriesKind(index: number, seriesKind: NonNullable<PraxisXUiChartMetric['seriesKind']>): void {\n this.patchDocument((document) => ({\n ...document,\n metrics: (document.metrics ?? []).map((metric, currentIndex) => currentIndex === index\n ? { ...metric, seriesKind }\n : metric),\n }));\n }\n\n setMotionEnabled(enabled: boolean): void {\n this.patchDocument((document) => ({\n ...document,\n motion: {\n ...(document.motion ?? {}),\n enabled,\n },\n }));\n }\n\n setMotionPreset(preset: 'subtle' | 'standard' | 'expressive'): void {\n this.patchDocument((document) => ({\n ...document,\n motion: {\n ...(document.motion ?? {}),\n enabled: document.motion?.enabled ?? true,\n preset,\n },\n }));\n }\n\n setFeatureEnabled(feature: ChartFeatureKey, enabled: boolean): void {\n this.patchDocument((document) => ({\n ...document,\n [feature]: {\n enabled,\n } satisfies PraxisXUiChartToggleableFeature,\n }));\n }\n\n setPalette(value: string): void {\n const palette = value\n .split(/[\\n,]/)\n .map((item) => item.trim())\n .filter(Boolean);\n\n this.patchDocument((document) => ({\n ...document,\n theme: {\n ...(document.theme ?? {}),\n palette: palette.length ? palette : undefined,\n },\n }));\n }\n\n setStateTitle(stateKey: ChartStateKey, value: string): void {\n this.patchStateDescriptor(stateKey, (descriptor) => ({\n ...descriptor,\n title: value.trim() || undefined,\n }));\n }\n\n setStateDescription(stateKey: ChartStateKey, value: string): void {\n this.patchStateDescriptor(stateKey, (descriptor) => ({\n ...descriptor,\n description: value.trim() || undefined,\n }));\n }\n\n setEventAction(eventKey: ChartEventKey, action: PraxisXUiChartEventAction['action'] | ''): void {\n this.patchDocument((document) => {\n const currentEvent = document.events?.[eventKey];\n if (!action) {\n return {\n ...document,\n events: {\n ...(document.events ?? {}),\n [eventKey]: undefined,\n },\n };\n }\n\n return {\n ...document,\n events: {\n ...(document.events ?? {}),\n [eventKey]: {\n ...(currentEvent ?? {}),\n action,\n },\n },\n };\n });\n }\n\n setEventTarget(eventKey: ChartEventKey, target: string): void {\n this.patchEvent(eventKey, (currentEvent) => ({\n ...currentEvent,\n target: target.trim() || undefined,\n }));\n }\n\n setEventMapping(eventKey: ChartEventKey, value: string): void {\n const mapping = this.parseMappingText(value);\n this.patchEvent(eventKey, (currentEvent) => ({\n ...currentEvent,\n mapping: Object.keys(mapping).length ? mapping : undefined,\n }));\n }\n\n isReadonly(): boolean {\n return this.readonlyInput() || this.injectedData?.readonly === true;\n }\n\n titleValue(): string {\n const value = this.currentDocument().title;\n if (typeof value === 'string') {\n return value;\n }\n return value?.fallback ?? '';\n }\n\n subtitleValue(): string {\n const value = this.currentDocument().subtitle;\n if (typeof value === 'string') {\n return value;\n }\n return value?.fallback ?? '';\n }\n\n resourceValue(): string {\n return this.currentDocument().source.kind === 'praxis.stats'\n ? this.currentDocument().source.resource ?? ''\n : '';\n }\n\n resourceOptions(): ChartEditorResourceOption[] {\n return this.availableResources();\n }\n\n granularityValue(): typeof this.timeGranularities[number] {\n return this.doc().source.kind === 'praxis.stats'\n ? (this.doc().source.options?.granularity ?? 'day')\n : 'day';\n }\n\n fillGapsValue(): boolean {\n return this.doc().source.kind === 'praxis.stats'\n ? this.doc().source.options?.fillGaps ?? false\n : false;\n }\n\n distributionModeValue(): PraxisXUiChartStatsDistributionMode {\n return this.doc().source.kind === 'praxis.stats'\n ? (this.doc().source.options?.mode ?? 'terms')\n : 'terms';\n }\n\n bucketSizeValue(): string {\n const value = this.doc().source.kind === 'praxis.stats'\n ? this.doc().source.options?.bucketSize\n : undefined;\n return value === undefined ? '' : String(value);\n }\n\n bucketCountValue(): string {\n const value = this.doc().source.kind === 'praxis.stats'\n ? this.doc().source.options?.bucketCount\n : undefined;\n return value === undefined ? '' : String(value);\n }\n\n heightValue(): string {\n const height = this.currentDocument().height;\n return height === undefined || height === null ? '' : String(height);\n }\n\n featureEnabled(feature: ChartFeatureKey): boolean {\n const value = this.doc()[feature];\n if (typeof value === 'boolean') {\n return value;\n }\n\n return value?.enabled ?? false;\n }\n\n paletteValue(): string {\n const palette = this.doc().theme?.palette;\n return Array.isArray(palette) ? palette.join(', ') : '';\n }\n\n stateTitle(stateKey: ChartStateKey): string {\n const value = this.doc().state?.[stateKey]?.title;\n if (typeof value === 'string') {\n return value;\n }\n\n return value?.fallback ?? '';\n }\n\n stateDescription(stateKey: ChartStateKey): string {\n const value = this.doc().state?.[stateKey]?.description;\n if (typeof value === 'string') {\n return value;\n }\n\n return value?.fallback ?? '';\n }\n\n eventAction(eventKey: ChartEventKey): PraxisXUiChartEventAction['action'] | '' {\n return this.doc().events?.[eventKey]?.action ?? '';\n }\n\n eventTarget(eventKey: ChartEventKey): string {\n return this.doc().events?.[eventKey]?.target ?? '';\n }\n\n targetOptions(): ChartEditorTargetOption[] {\n return this.availableTargets();\n }\n\n eventMappingText(eventKey: ChartEventKey): string {\n const mapping = this.doc().events?.[eventKey]?.mapping;\n if (!mapping) {\n return '';\n }\n\n return Object.entries(mapping)\n .map(([key, value]) => `${key}=${value}`)\n .join('\\n');\n }\n\n dimensions(): PraxisXUiChartDimension[] {\n return this.doc().dimensions ?? [];\n }\n\n metrics(): PraxisXUiChartMetric[] {\n return this.doc().metrics ?? [];\n }\n\n fieldOptions(role: 'dimension' | 'metric'): ChartEditorFieldOption[] {\n const fields = this.availableFields();\n if (!fields.length) {\n return [];\n }\n\n return fields.filter((field) => {\n if (!field.roles?.length) {\n return role === 'dimension' ? field.aggregable !== true : true;\n }\n\n return field.roles.includes(role);\n });\n }\n\n showMetricAxisControls(): boolean {\n return this.doc().kind === 'combo';\n }\n\n showMetricSeriesKindControls(): boolean {\n return this.doc().kind === 'combo';\n }\n\n showTimeseriesControls(): boolean {\n return this.doc().source.kind === 'praxis.stats' && this.doc().source.operation === 'timeseries';\n }\n\n showDistributionControls(): boolean {\n return this.doc().source.kind === 'praxis.stats' && this.doc().source.operation === 'distribution';\n }\n\n showComboPanel(): boolean {\n return this.doc().kind === 'combo';\n }\n\n showPieDonutPanel(): boolean {\n return this.doc().kind === 'pie' || this.doc().kind === 'donut';\n }\n\n showScatterPanel(): boolean {\n return this.doc().kind === 'scatter';\n }\n\n issueTrackBy(_: number, issue: ChartContractValidationIssue): string {\n return `${issue.code}:${issue.field}`;\n }\n\n t(key: string, fallback: string): string {\n return this.i18n.resolve(resolvePraxisChartsText({ key, text: fallback }, fallback));\n }\n\n doc(): PraxisXUiChartContract {\n return this.currentDocument();\n }\n\n private patchStateDescriptor(\n stateKey: ChartStateKey,\n updater: (descriptor: PraxisXUiChartStateDescriptor) => PraxisXUiChartStateDescriptor,\n ): void {\n this.patchDocument((document) => ({\n ...document,\n state: {\n ...(document.state ?? {}),\n [stateKey]: updater(document.state?.[stateKey] ?? {}),\n },\n }));\n }\n\n private patchEvent(\n eventKey: ChartEventKey,\n updater: (eventAction: PraxisXUiChartEventAction) => PraxisXUiChartEventAction,\n ): void {\n this.patchDocument((document) => {\n const currentEvent = document.events?.[eventKey];\n if (!currentEvent?.action) {\n return document;\n }\n\n return {\n ...document,\n events: {\n ...(document.events ?? {}),\n [eventKey]: updater(currentEvent),\n },\n };\n });\n }\n\n private parseMappingText(value: string): Record<string, string> {\n return value\n .split('\\n')\n .map((line) => line.trim())\n .filter(Boolean)\n .reduce<Record<string, string>>((accumulator, line) => {\n const separatorIndex = line.indexOf('=');\n if (separatorIndex <= 0) {\n return accumulator;\n }\n\n const key = line.slice(0, separatorIndex).trim();\n const mappedValue = line.slice(separatorIndex + 1).trim();\n if (!key || !mappedValue) {\n return accumulator;\n }\n\n accumulator[key] = mappedValue;\n return accumulator;\n }, {});\n }\n\n private createApplyPayload(): ChartConfigEditorApplyEvent {\n return {\n document: this.getSettingsValue(),\n issues: [...this.issues()],\n dirty: this.isDirty$.getValue(),\n };\n }\n\n private createSavePayload(): ChartConfigEditorSaveEvent {\n return {\n document: this.getSettingsValue(),\n issues: [...this.issues()],\n dirty: this.isDirty$.getValue(),\n };\n }\n\n private patchDocument(\n updater: (document: PraxisXUiChartContract) => PraxisXUiChartContract,\n ): void {\n if (this.isReadonly()) {\n return;\n }\n\n this.currentDocument.set(updater(structuredClone(this.currentDocument())));\n this.refreshState(true);\n }\n\n private refreshState(markDirty: boolean): void {\n this.isDirty$.next(markDirty);\n this.isValid$.next(this.validation().valid);\n this.documentChange.emit(structuredClone(this.normalizedDocument()));\n }\n}\n","<div class=\"editor-shell\">\n <div class=\"editor-nav\">\n @for (section of sections; track section.id) {\n <button\n mat-stroked-button\n type=\"button\"\n [class.active]=\"activeSection() === section.id\"\n (click)=\"setSection(section.id)\"\n >\n {{ t(section.labelKey, section.fallback) }}\n </button>\n }\n </div>\n\n <div class=\"editor-layout\">\n <div class=\"editor-form\">\n <mat-card class=\"editor-card\">\n <mat-card-content>\n @switch (activeSection()) {\n @case ('general') {\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.chartId', 'Chart ID') }}</mat-label>\n <input matInput [ngModel]=\"doc().chartId || ''\" (ngModelChange)=\"setChartId($event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.kind', 'Kind') }}</mat-label>\n <mat-select [ngModel]=\"doc().kind\" (ngModelChange)=\"setKind($event)\" [disabled]=\"isReadonly()\">\n @for (kind of chartKinds; track kind) {\n <mat-option [value]=\"kind\">\n {{ t('praxis.charts.editor.kind.' + kind, kind) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.title', 'Title') }}</mat-label>\n <input matInput [ngModel]=\"titleValue()\" (ngModelChange)=\"setTitle($event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.subtitle', 'Subtitle') }}</mat-label>\n <input matInput [ngModel]=\"subtitleValue()\" (ngModelChange)=\"setSubtitle($event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.height', 'Height') }}</mat-label>\n <input matInput [ngModel]=\"heightValue()\" (ngModelChange)=\"setHeight($event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n </div>\n }\n\n @case ('data') {\n <div class=\"editor-stack\">\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.sourceKind', 'Source') }}</mat-label>\n <mat-select [ngModel]=\"doc().source.kind\" (ngModelChange)=\"setSourceKind($event)\" [disabled]=\"isReadonly()\">\n @for (sourceKind of sourceKinds; track sourceKind) {\n <mat-option [value]=\"sourceKind\">\n {{ t('praxis.charts.editor.sourceKind.' + (sourceKind === 'praxis.stats' ? 'praxisStats' : 'derived'), sourceKind) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (doc().source.kind === 'praxis.stats') {\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.resource', 'Resource') }}</mat-label>\n @if (resourceOptions().length) {\n <mat-select [ngModel]=\"resourceValue()\" (ngModelChange)=\"setResource($event)\" [disabled]=\"isReadonly()\">\n @for (resource of resourceOptions(); track resource.id) {\n <mat-option [value]=\"resource.path\">{{ resource.label }}</mat-option>\n }\n </mat-select>\n } @else {\n <input matInput [ngModel]=\"resourceValue()\" (ngModelChange)=\"setResource($event)\" [disabled]=\"isReadonly()\" />\n }\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.operation', 'Operation') }}</mat-label>\n <mat-select\n [ngModel]=\"doc().source.operation || 'group-by'\"\n (ngModelChange)=\"setOperation($event)\"\n [disabled]=\"isReadonly()\"\n >\n @for (operation of operations; track operation) {\n <mat-option [value]=\"operation\">\n {{ t('praxis.charts.editor.operation.' + (operation === 'group-by' ? 'groupBy' : operation), operation) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n </div>\n\n @if (showTimeseriesControls()) {\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.specialization.timeseriesTitle', 'Timeseries options') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.granularity', 'Granularity') }}</mat-label>\n <mat-select [ngModel]=\"granularityValue()\" (ngModelChange)=\"setGranularity($event)\" [disabled]=\"isReadonly()\">\n @for (granularity of timeGranularities; track granularity) {\n <mat-option [value]=\"granularity\">\n {{ t('praxis.charts.editor.granularity.' + granularity, granularity) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-slide-toggle\n [ngModel]=\"fillGapsValue()\"\n (ngModelChange)=\"setFillGaps($event)\"\n [disabled]=\"isReadonly()\"\n >\n {{ t('praxis.charts.editor.field.fillGaps', 'Fill missing intervals') }}\n </mat-slide-toggle>\n </mat-card-content>\n </mat-card>\n }\n\n @if (showDistributionControls()) {\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.specialization.distributionTitle', 'Distribution options') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.distributionMode', 'Distribution mode') }}</mat-label>\n <mat-select [ngModel]=\"distributionModeValue()\" (ngModelChange)=\"setDistributionMode($event)\" [disabled]=\"isReadonly()\">\n @for (mode of distributionModes; track mode) {\n <mat-option [value]=\"mode\">\n {{ t('praxis.charts.editor.distributionMode.' + mode, mode) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.bucketSize', 'Bucket size') }}</mat-label>\n <input matInput [ngModel]=\"bucketSizeValue()\" (ngModelChange)=\"setBucketSize($event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.bucketCount', 'Bucket count') }}</mat-label>\n <input matInput [ngModel]=\"bucketCountValue()\" (ngModelChange)=\"setBucketCount($event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n </mat-card-content>\n </mat-card>\n }\n </div>\n }\n\n @case ('motion') {\n <div class=\"editor-grid\">\n <mat-slide-toggle\n [ngModel]=\"normalizedDocument().motion?.enabled !== false\"\n (ngModelChange)=\"setMotionEnabled($event)\"\n [disabled]=\"isReadonly()\"\n >\n {{ t('praxis.charts.editor.field.motionEnabled', 'Enable animations') }}\n </mat-slide-toggle>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.motionPreset', 'Motion preset') }}</mat-label>\n <mat-select\n [ngModel]=\"normalizedDocument().motion?.preset || 'standard'\"\n (ngModelChange)=\"setMotionPreset($event)\"\n [disabled]=\"isReadonly() || normalizedDocument().motion?.enabled === false\"\n >\n @for (preset of motionPresets; track preset) {\n <mat-option [value]=\"preset\">\n {{ t('praxis.charts.editor.motionPreset.' + preset, preset) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\n\n @case ('appearance') {\n <div class=\"editor-stack\">\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.appearance.featuresTitle', 'Display features') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-grid\">\n <mat-slide-toggle\n [ngModel]=\"featureEnabled('legend')\"\n (ngModelChange)=\"setFeatureEnabled('legend', $event)\"\n [disabled]=\"isReadonly()\"\n >\n {{ t('praxis.charts.editor.field.legendEnabled', 'Show legend') }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n [ngModel]=\"featureEnabled('labels')\"\n (ngModelChange)=\"setFeatureEnabled('labels', $event)\"\n [disabled]=\"isReadonly()\"\n >\n {{ t('praxis.charts.editor.field.labelsEnabled', 'Show labels') }}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n [ngModel]=\"featureEnabled('tooltip')\"\n (ngModelChange)=\"setFeatureEnabled('tooltip', $event)\"\n [disabled]=\"isReadonly()\"\n >\n {{ t('praxis.charts.editor.field.tooltipEnabled', 'Show tooltip') }}\n </mat-slide-toggle>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.appearance.paletteTitle', 'Palette') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.palette', 'Palette colors') }}</mat-label>\n <textarea\n matInput\n rows=\"3\"\n [ngModel]=\"paletteValue()\"\n (ngModelChange)=\"setPalette($event)\"\n [disabled]=\"isReadonly()\"\n ></textarea>\n </mat-form-field>\n <p class=\"editor-caption\">\n {{ t('praxis.charts.editor.appearance.paletteHint', 'Use comma or line separated colors to persist theme.palette as a canonical array.') }}\n </p>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.appearance.statesTitle', 'State messages') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-stack\">\n <div class=\"editor-row-card\">\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.emptyTitle', 'Empty title') }}</mat-label>\n <input matInput [ngModel]=\"stateTitle('empty')\" (ngModelChange)=\"setStateTitle('empty', $event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.emptyDescription', 'Empty description') }}</mat-label>\n <textarea matInput rows=\"2\" [ngModel]=\"stateDescription('empty')\" (ngModelChange)=\"setStateDescription('empty', $event)\" [disabled]=\"isReadonly()\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"editor-row-card\">\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.loadingTitle', 'Loading title') }}</mat-label>\n <input matInput [ngModel]=\"stateTitle('loading')\" (ngModelChange)=\"setStateTitle('loading', $event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.loadingDescription', 'Loading description') }}</mat-label>\n <textarea matInput rows=\"2\" [ngModel]=\"stateDescription('loading')\" (ngModelChange)=\"setStateDescription('loading', $event)\" [disabled]=\"isReadonly()\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"editor-row-card\">\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.errorTitle', 'Error title') }}</mat-label>\n <input matInput [ngModel]=\"stateTitle('error')\" (ngModelChange)=\"setStateTitle('error', $event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.errorDescription', 'Error description') }}</mat-label>\n <textarea matInput rows=\"2\" [ngModel]=\"stateDescription('error')\" (ngModelChange)=\"setStateDescription('error', $event)\" [disabled]=\"isReadonly()\"></textarea>\n </mat-form-field>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n }\n\n @case ('analytics') {\n <div class=\"editor-stack\">\n @if (showComboPanel()) {\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.specialization.comboTitle', 'Combo guidance') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <p class=\"editor-caption\">\n {{ t('praxis.charts.editor.specialization.comboHint', 'Combo charts require at least two metrics and allow per-metric axis and series kind mapping.') }}\n </p>\n </mat-card-content>\n </mat-card>\n }\n\n @if (showPieDonutPanel()) {\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.specialization.pieDonutTitle', 'Composition guidance') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <p class=\"editor-caption\">\n {{ t('praxis.charts.editor.specialization.pieDonutHint', 'Pie and donut charts keep only the first metric and use the first dimension as the category segment.') }}\n </p>\n </mat-card-content>\n </mat-card>\n }\n\n @if (showScatterPanel()) {\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.specialization.scatterTitle', 'Scatter guidance') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n <p class=\"editor-caption\">\n {{ t('praxis.charts.editor.specialization.scatterHint', 'Scatter charts use the first dimension as X and the first metric as Y, so keep both fields mapped.') }}\n </p>\n </mat-card-content>\n </mat-card>\n }\n\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.analytics.dimensionsTitle', 'Dimensions') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-stack\">\n @for (dimension of dimensions(); track $index) {\n <div class=\"editor-row-card\">\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.dimension', 'Dimension') }}</mat-label>\n @if (fieldOptions('dimension').length) {\n <mat-select [ngModel]=\"dimension.field || ''\" (ngModelChange)=\"setDimensionField($index, $event)\" [disabled]=\"isReadonly()\">\n @for (field of fieldOptions('dimension'); track field.field) {\n <mat-option [value]=\"field.field\">{{ field.label || field.field }}</mat-option>\n }\n </mat-select>\n } @else {\n <input matInput [ngModel]=\"dimension.field || ''\" (ngModelChange)=\"setDimensionField($index, $event)\" [disabled]=\"isReadonly()\" />\n }\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.dimensionRole', 'Dimension role') }}</mat-label>\n <mat-select [ngModel]=\"dimension.role || 'category'\" (ngModelChange)=\"setDimensionRole($index, $event)\" [disabled]=\"isReadonly()\">\n @for (role of dimensionRoles; track role) {\n <mat-option [value]=\"role\">\n {{ t('praxis.charts.editor.dimensionRole.' + role, role) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"editor-row-actions\">\n <button mat-button type=\"button\" (click)=\"removeDimension($index)\" [disabled]=\"isReadonly() || dimensions().length <= 1\">\n {{ t('praxis.charts.editor.analytics.removeDimension', 'Remove dimension') }}\n </button>\n </div>\n </div>\n }\n\n <div>\n <button mat-stroked-button type=\"button\" (click)=\"addDimension()\" [disabled]=\"isReadonly()\">\n {{ t('praxis.charts.editor.analytics.addDimension', 'Add dimension') }}\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.analytics.metricsTitle', 'Metrics') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-stack\">\n @for (metric of metrics(); track $index) {\n <div class=\"editor-row-card\">\n <div class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.metric', 'Metric') }}</mat-label>\n @if (fieldOptions('metric').length) {\n <mat-select [ngModel]=\"metric.field || ''\" (ngModelChange)=\"setMetricField($index, $event)\" [disabled]=\"isReadonly()\">\n @for (field of fieldOptions('metric'); track field.field) {\n <mat-option [value]=\"field.field\">{{ field.label || field.field }}</mat-option>\n }\n </mat-select>\n } @else {\n <input matInput [ngModel]=\"metric.field || ''\" (ngModelChange)=\"setMetricField($index, $event)\" [disabled]=\"isReadonly()\" />\n }\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.metricLabel', 'Metric label') }}</mat-label>\n <input matInput [ngModel]=\"metric.label || ''\" (ngModelChange)=\"setMetricLabel($index, $event)\" [disabled]=\"isReadonly()\" />\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.metricAggregation', 'Aggregation') }}</mat-label>\n <mat-select [ngModel]=\"metric.aggregation || 'sum'\" (ngModelChange)=\"setMetricAggregation($index, $event)\" [disabled]=\"isReadonly()\">\n @for (aggregation of metricAggregations; track aggregation) {\n <mat-option [value]=\"aggregation\">\n {{ t('praxis.charts.editor.metricAggregation.' + aggregation, aggregation) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (showMetricAxisControls()) {\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.metricAxis', 'Axis') }}</mat-label>\n <mat-select [ngModel]=\"metric.axis || 'primary'\" (ngModelChange)=\"setMetricAxis($index, $event)\" [disabled]=\"isReadonly()\">\n @for (axis of metricAxes; track axis) {\n <mat-option [value]=\"axis\">\n {{ t('praxis.charts.editor.metricAxis.' + axis, axis) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (showMetricSeriesKindControls()) {\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.metricSeriesKind', 'Series kind') }}</mat-label>\n <mat-select [ngModel]=\"metric.seriesKind || 'bar'\" (ngModelChange)=\"setMetricSeriesKind($index, $event)\" [disabled]=\"isReadonly()\">\n @for (seriesKind of metricSeriesKinds; track seriesKind) {\n <mat-option [value]=\"seriesKind\">\n {{ t('praxis.charts.editor.metricSeriesKind.' + seriesKind, seriesKind) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n </div>\n\n <div class=\"editor-row-actions\">\n <button mat-button type=\"button\" (click)=\"removeMetric($index)\" [disabled]=\"isReadonly() || metrics().length <= 1\">\n {{ t('praxis.charts.editor.analytics.removeMetric', 'Remove metric') }}\n </button>\n </div>\n </div>\n }\n\n <div>\n <button mat-stroked-button type=\"button\" (click)=\"addMetric()\" [disabled]=\"isReadonly()\">\n {{ t('praxis.charts.editor.analytics.addMetric', 'Add metric') }}\n </button>\n </div>\n </mat-card-content>\n </mat-card>\n </div>\n }\n\n @case ('events') {\n <div class=\"editor-stack\">\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.events.pointClickTitle', 'Point click') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.eventAction', 'Action') }}</mat-label>\n <mat-select [ngModel]=\"eventAction('pointClick')\" (ngModelChange)=\"setEventAction('pointClick', $event)\" [disabled]=\"isReadonly()\">\n <mat-option value=\"\">{{ t('praxis.charts.editor.events.none', 'None') }}</mat-option>\n @for (action of eventActionOptions; track action) {\n <mat-option [value]=\"action\">\n {{ t('praxis.charts.editor.eventAction.' + action, action) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.eventTarget', 'Target') }}</mat-label>\n @if (targetOptions().length) {\n <mat-select [ngModel]=\"eventTarget('pointClick')\" (ngModelChange)=\"setEventTarget('pointClick', $event)\" [disabled]=\"isReadonly() || !eventAction('pointClick')\">\n @for (target of targetOptions(); track target.id) {\n <mat-option [value]=\"target.id\">{{ target.label }}</mat-option>\n }\n </mat-select>\n } @else {\n <input matInput [ngModel]=\"eventTarget('pointClick')\" (ngModelChange)=\"setEventTarget('pointClick', $event)\" [disabled]=\"isReadonly() || !eventAction('pointClick')\" />\n }\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.eventMapping', 'Mapping') }}</mat-label>\n <textarea\n matInput\n rows=\"4\"\n [ngModel]=\"eventMappingText('pointClick')\"\n (ngModelChange)=\"setEventMapping('pointClick', $event)\"\n [disabled]=\"isReadonly() || !eventAction('pointClick')\"\n ></textarea>\n </mat-form-field>\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.events.drillDownTitle', 'Drill down') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"editor-grid\">\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.eventAction', 'Action') }}</mat-label>\n <mat-select [ngModel]=\"eventAction('drillDown')\" (ngModelChange)=\"setEventAction('drillDown', $event)\" [disabled]=\"isReadonly()\">\n <mat-option value=\"\">{{ t('praxis.charts.editor.events.none', 'None') }}</mat-option>\n @for (action of eventActionOptions; track action) {\n <mat-option [value]=\"action\">\n {{ t('praxis.charts.editor.eventAction.' + action, action) }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.eventTarget', 'Target') }}</mat-label>\n @if (targetOptions().length) {\n <mat-select [ngModel]=\"eventTarget('drillDown')\" (ngModelChange)=\"setEventTarget('drillDown', $event)\" [disabled]=\"isReadonly() || !eventAction('drillDown')\">\n @for (target of targetOptions(); track target.id) {\n <mat-option [value]=\"target.id\">{{ target.label }}</mat-option>\n }\n </mat-select>\n } @else {\n <input matInput [ngModel]=\"eventTarget('drillDown')\" (ngModelChange)=\"setEventTarget('drillDown', $event)\" [disabled]=\"isReadonly() || !eventAction('drillDown')\" />\n }\n </mat-form-field>\n\n <mat-form-field class=\"editor-field\" appearance=\"outline\">\n <mat-label>{{ t('praxis.charts.editor.field.eventMapping', 'Mapping') }}</mat-label>\n <textarea\n matInput\n rows=\"4\"\n [ngModel]=\"eventMappingText('drillDown')\"\n (ngModelChange)=\"setEventMapping('drillDown', $event)\"\n [disabled]=\"isReadonly() || !eventAction('drillDown')\"\n ></textarea>\n </mat-form-field>\n </mat-card-content>\n </mat-card>\n </div>\n }\n\n @case ('preview') {\n <p class=\"editor-caption\">\n {{ t('praxis.charts.editor.preview.caption', 'Local preview derived from the canonical contract without remote calls.') }}\n </p>\n }\n }\n </mat-card-content>\n </mat-card>\n </div>\n\n <div class=\"editor-side\">\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.issues.title', 'Validation issues') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n @if (issues().length) {\n <ul class=\"editor-issues\">\n @for (issue of issues(); track issueTrackBy($index, issue)) {\n <li class=\"editor-issue\">\n <strong>{{ issue.field }}</strong>\n <span>{{ issue.message }}</span>\n </li>\n }\n </ul>\n } @else {\n <div class=\"editor-empty\">\n {{ t('praxis.charts.editor.issues.empty', 'No issues were identified.') }}\n </div>\n }\n </mat-card-content>\n </mat-card>\n\n <mat-card class=\"editor-card\">\n <mat-card-header>\n <mat-card-title>{{ t('praxis.charts.editor.preview.title', 'Chart preview') }}</mat-card-title>\n </mat-card-header>\n <mat-card-content>\n @if (preview(); as chartPreview) {\n <p class=\"editor-caption\">\n {{ t('praxis.charts.editor.preview.caption', 'Local preview derived from the canonical contract without remote calls.') }}\n </p>\n <praxis-chart [config]=\"chartPreview.config\" [data]=\"chartPreview.data\"></praxis-chart>\n } @else {\n <div class=\"editor-empty\">\n {{ t('praxis.charts.editor.preview.invalid', 'Preview is unavailable while the contract has blocking errors.') }}\n </div>\n }\n </mat-card-content>\n </mat-card>\n </div>\n </div>\n</div>\n","/*\n * Public API Surface of praxis-charts\n */\n\nexport * from './lib/components/praxis-chart/praxis-chart.component';\nexport * from './lib/components/praxis-chart-drilldown-panel/praxis-chart-drilldown-panel.component';\nexport * from './lib/components/praxis-chart-state-probe/praxis-chart-state-probe.component';\nexport * from './lib/models/chart-config.model';\nexport * from './lib/models/chart-backend-payload.model';\nexport * from './lib/models/chart-series.model';\nexport * from './lib/models/chart-axis.model';\nexport * from './lib/models/chart-dataset.model';\nexport * from './lib/models/chart-events.model';\nexport * from './lib/models/chart-theme.model';\nexport * from './lib/models/chart-widget-schema.model';\nexport * from './lib/models/x-ui-chart.model';\nexport * from './lib/adapters/chart-engine.adapter';\nexport * from './lib/tokens/chart-engine.token';\nexport * from './lib/providers/charts.providers';\nexport * from './lib/services/chart-canonical-contract-mapper.service';\nexport * from './lib/services/chart-contract-normalizer.service';\nexport * from './lib/services/chart-contract-validation.models';\nexport * from './lib/services/chart-contract-validation.service';\nexport * from './lib/services/chart-data-transformer.service';\nexport * from './lib/services/chart-option-builder.service';\nexport * from './lib/services/chart-schema-mapper.service';\nexport * from './lib/services/chart-backend-payload-adapter.service';\nexport * from './lib/services/chart-stats-api.service';\nexport * from './lib/mocks/chart-backend.mock';\nexport * from './lib/mocks/chart-drilldown.mock';\nexport * from './lib/examples/chart-backend-mock.examples';\nexport * from './lib/examples/praxis-chart-composition-showcase.component';\nexport * from './lib/config-editor';\nexport * from './lib/i18n/charts.i18n';\nexport * from './lib/praxis-chart.metadata';\nexport * from './lib/praxis-chart-drilldown-panel.metadata';\nexport * from './lib/praxis-chart-state-probe.metadata';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PraxisChartDataTransformerService","i1.PraxisChartOptionBuilderService","i1.ChartContractNormalizerService","i2.ChartContractValidationService","i1","i1.PraxisChartMetadataRegistrationService","i2.PraxisChartCanonicalContractMapperService","i1.PraxisChartSchemaMapperService","i1.PraxisChartCanonicalContractMapperService","i2","i3"],"mappings":"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"}