@praxisui/charts 9.0.0-beta.8 → 9.0.0-beta.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,9 @@
1
1
  import * as _praxisui_charts from '@praxisui/charts';
2
2
  import * as _angular_core from '@angular/core';
3
- import { InjectionToken, Provider, AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
3
+ import { InjectionToken, Provider, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
4
4
  import * as _praxisui_core from '@praxisui/core';
5
- import { PraxisTextValue, WidgetDefinition, WidgetShellConfig, WidgetInstance, ComponentMetadataRegistry, ApiUrlConfig, PraxisI18nService, PraxisAnalyticsProjection, AnalyticsSchemaContractService, AnalyticsPresentationResolver, WidgetPageDefinition, SettingsValueProvider, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, ComponentAuthoringManifest, ComponentDocMeta } from '@praxisui/core';
5
+ import { PraxisAnalyticsComparisonStatsRequest, PraxisDataQueryContext, PraxisTextValue, PraxisPresentationVisualizationConfig, PraxisPresentationVisualizationPoint, PraxisPresentationVisualizationSegment, PraxisPresentationVisualizationThreshold, WidgetDefinition, WidgetShellConfig, WidgetInstance, PraxisI18nService, ApiUrlConfig, PraxisAnalyticsProjection, AnalyticsSchemaContractService, AnalyticsPresentationResolver, WidgetPageDefinition, SettingsValueProvider, ComponentConfigEditorContextResult, ResourceCapabilitySnapshot, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, ComponentAuthoringManifest, ComponentDocMeta } from '@praxisui/core';
6
6
  import { Observable, BehaviorSubject } from 'rxjs';
7
- import { EChartsCoreOption } from 'echarts';
8
7
  import { HttpClient } from '@angular/common/http';
9
8
 
10
9
  type PraxisChartAxisType = 'category' | 'value' | 'time';
@@ -31,7 +30,7 @@ interface PraxisChartQueryMetricConfig {
31
30
  aggregation?: 'sum' | 'count' | 'distinct-count' | 'avg' | 'min' | 'max';
32
31
  alias?: string;
33
32
  }
34
- type PraxisChartStatsOperation = 'group-by' | 'timeseries' | 'distribution';
33
+ type PraxisChartStatsOperation = 'group-by' | 'timeseries' | 'distribution' | 'comparison';
35
34
  type PraxisChartStatsDistributionMode = 'terms' | 'histogram';
36
35
  type PraxisChartStatsOrderBy = 'key-asc' | 'key-desc' | 'value-asc' | 'value-desc';
37
36
  type PraxisChartStatsGranularity = 'day' | 'week' | 'month';
@@ -69,7 +68,7 @@ interface PraxisChartDistributionStatsRequest {
69
68
  limit?: number;
70
69
  orderBy?: 'KEY_ASC' | 'KEY_DESC' | 'VALUE_ASC' | 'VALUE_DESC';
71
70
  }
72
- type PraxisChartStatsRequest = PraxisChartGroupByStatsRequest | PraxisChartTimeSeriesStatsRequest | PraxisChartDistributionStatsRequest;
71
+ type PraxisChartStatsRequest = PraxisChartGroupByStatsRequest | PraxisChartTimeSeriesStatsRequest | PraxisChartDistributionStatsRequest | PraxisAnalyticsComparisonStatsRequest;
73
72
  interface PraxisChartQueryConfig {
74
73
  sourceKind?: 'praxis.stats';
75
74
  statsOperation?: PraxisChartStatsOperation;
@@ -99,16 +98,7 @@ interface PraxisChartRemoteDataSource {
99
98
  }
100
99
  type PraxisChartDataSource = PraxisChartLocalDataSource | PraxisChartRemoteDataSource;
101
100
 
102
- interface PraxisChartQueryContext {
103
- filters?: Record<string, unknown> | null;
104
- sort?: string[] | null;
105
- limit?: number | null;
106
- page?: {
107
- index?: number | null;
108
- size?: number | null;
109
- } | null;
110
- meta?: Record<string, unknown> | null;
111
- }
101
+ type PraxisChartQueryContext = PraxisDataQueryContext;
112
102
  type PraxisChartLoadState = 'idle' | 'loading' | 'ready' | 'empty' | 'error';
113
103
  interface PraxisChartInteractionConfig {
114
104
  pointClick?: boolean;
@@ -130,8 +120,17 @@ interface PraxisChartDeclarativeEventAction {
130
120
  target?: string;
131
121
  mapping?: Record<string, string>;
132
122
  }
123
+ interface PraxisChartPointActionEvent {
124
+ chartId?: string;
125
+ event: 'pointClick';
126
+ point: PraxisChartPointEvent;
127
+ filters: Record<string, unknown>;
128
+ target?: string;
129
+ action: PraxisChartDeclarativeEventAction;
130
+ }
133
131
  interface PraxisChartSelectionEvent extends PraxisChartPointEvent {
134
132
  selected: boolean;
133
+ mode: 'single';
135
134
  filters: Record<string, unknown>;
136
135
  action?: PraxisChartDeclarativeEventAction;
137
136
  }
@@ -142,6 +141,14 @@ interface PraxisChartCrossFilterEvent {
142
141
  action?: PraxisChartDeclarativeEventAction;
143
142
  source: PraxisChartSelectionEvent;
144
143
  }
144
+ interface PraxisChartDrillDownEvent {
145
+ chartId?: string;
146
+ filters: Record<string, unknown>;
147
+ target?: string;
148
+ action: PraxisChartDeclarativeEventAction;
149
+ source: PraxisChartSelectionEvent;
150
+ point: PraxisChartPointEvent;
151
+ }
145
152
  interface PraxisChartQueryRequestEvent {
146
153
  chartId?: string;
147
154
  dataSource: Extract<PraxisChartDataSource, {
@@ -266,6 +273,7 @@ interface PraxisChartConfig {
266
273
  preferredLoadState?: Extract<PraxisChartLoadState, 'idle' | 'loading' | 'ready' | 'empty' | 'error'>;
267
274
  }
268
275
 
276
+ declare const PRAXIS_X_UI_CHART_AUTHORABLE_VERSION: "0.1.0";
269
277
  type PraxisXUiChartKind = 'bar' | 'combo' | 'horizontal-bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar' | 'stacked-area' | 'scatter';
270
278
  type PraxisXUiChartPreset = 'kpi-trend' | 'comparison' | 'distribution' | 'ranking' | 'composition' | 'hierarchical-drill-down';
271
279
  type PraxisXUiChartTextValue = string | {
@@ -273,9 +281,11 @@ type PraxisXUiChartTextValue = string | {
273
281
  fallback?: string;
274
282
  };
275
283
  type PraxisXUiChartSourceKind = 'praxis.stats' | 'derived';
276
- type PraxisXUiChartStatsOperation = 'group-by' | 'timeseries' | 'distribution';
284
+ type PraxisXUiChartStatsOperation = 'group-by' | 'timeseries' | 'distribution' | 'comparison';
277
285
  type PraxisXUiChartStatsDistributionMode = 'terms' | 'histogram';
278
286
  type PraxisXUiChartStatsOrderBy = 'key-asc' | 'key-desc' | 'value-asc' | 'value-desc';
287
+ type PraxisXUiChartComparisonPeriodPreset = 'TODAY' | 'YESTERDAY' | 'LAST_7_DAYS' | 'LAST_30_DAYS' | 'THIS_MONTH' | 'LAST_MONTH' | 'THIS_QUARTER' | 'THIS_YEAR';
288
+ type PraxisXUiChartComparisonPeriodMode = 'PREVIOUS_ALIGNED' | 'PREVIOUS_CALENDAR_PERIOD';
279
289
  type PraxisXUiChartAggregation = 'sum' | 'avg' | 'min' | 'max' | 'count' | 'distinct-count';
280
290
  interface PraxisXUiChartFilter {
281
291
  field: string;
@@ -307,6 +317,12 @@ interface PraxisXUiChartAggregationConfig {
307
317
  operation: PraxisXUiChartAggregation;
308
318
  as?: string;
309
319
  }
320
+ interface PraxisXUiChartComparisonPeriod {
321
+ field: string;
322
+ timezone: string;
323
+ preset: PraxisXUiChartComparisonPeriodPreset;
324
+ mode: PraxisXUiChartComparisonPeriodMode;
325
+ }
310
326
  interface PraxisXUiChartStatsSourceOptions {
311
327
  granularity?: 'day' | 'week' | 'month';
312
328
  fillGaps?: boolean;
@@ -315,6 +331,7 @@ interface PraxisXUiChartStatsSourceOptions {
315
331
  bucketCount?: number;
316
332
  orderBy?: PraxisXUiChartStatsOrderBy;
317
333
  limit?: number;
334
+ comparisonPeriod?: PraxisXUiChartComparisonPeriod;
318
335
  }
319
336
  interface PraxisXUiChartRefresh {
320
337
  strategy?: 'manual' | 'interval' | 'on-context-change';
@@ -324,6 +341,7 @@ interface PraxisXUiChartRefresh {
324
341
  }
325
342
  interface PraxisXUiChartSource {
326
343
  kind: PraxisXUiChartSourceKind;
344
+ /** Canonical operational resource path. Resource keys are discovery identities and must be resolved before persistence. */
327
345
  resource?: string;
328
346
  operation?: PraxisXUiChartStatsOperation;
329
347
  options?: PraxisXUiChartStatsSourceOptions;
@@ -414,6 +432,7 @@ interface ChartEditorResourceOption {
414
432
  label: string;
415
433
  path: string;
416
434
  description?: string;
435
+ operations?: PraxisXUiChartStatsOperation[];
417
436
  }
418
437
  interface ChartEditorFieldOption {
419
438
  field: string;
@@ -422,36 +441,42 @@ interface ChartEditorFieldOption {
422
441
  aggregable?: boolean;
423
442
  filterable?: boolean;
424
443
  roles?: Array<'dimension' | 'metric' | 'time'>;
444
+ resourceIds?: string[];
445
+ resourcePaths?: string[];
446
+ operations?: PraxisXUiChartStatsOperation[];
447
+ distributionModes?: PraxisXUiChartStatsDistributionMode[];
448
+ aggregations?: PraxisXUiChartAggregation[];
425
449
  }
450
+ type ChartEditorEventKey = 'pointClick' | 'selectionChange' | 'drillDown' | 'crossFilter';
426
451
  interface ChartEditorTargetOption {
427
452
  id: string;
428
453
  label: string;
429
454
  kind?: 'widget' | 'route' | 'panel' | 'event';
455
+ actions?: Array<PraxisXUiChartEventAction['action']>;
456
+ /**
457
+ * Canonical chart events whose exact composition links govern this target.
458
+ *
459
+ * Omission is reserved for legacy/manual host catalogs. Context-resolved
460
+ * catalogs always declare at least one event and therefore fail closed.
461
+ */
462
+ events?: ChartEditorEventKey[];
430
463
  }
431
464
 
432
- type PraxisDataQueryContextBridge = {
433
- filters?: Record<string, unknown> | null;
434
- sort?: string[] | null;
435
- limit?: number | null;
436
- page?: {
437
- index?: number | null;
438
- size?: number | null;
439
- } | null;
440
- meta?: Record<string, unknown> | null;
441
- };
442
465
  declare class PraxisChartComponent {
443
466
  readonly config: _angular_core.InputSignal<PraxisChartConfig>;
444
467
  readonly data: _angular_core.InputSignal<PraxisChartDataRow[] | null>;
445
468
  readonly chartDocument: _angular_core.InputSignal<PraxisXUiChartContract | null>;
446
469
  readonly filterCriteria: _angular_core.InputSignal<Record<string, unknown> | null>;
447
- readonly queryContext: _angular_core.InputSignal<PraxisDataQueryContextBridge | null>;
470
+ readonly queryContext: _angular_core.InputSignal<PraxisDataQueryContext | null>;
448
471
  readonly remoteDataResolver: _angular_core.InputSignal<PraxisChartRemoteDataResolver | null>;
449
472
  readonly enableCustomization: _angular_core.InputSignalWithTransform<boolean, unknown>;
450
473
  readonly availableResources: _angular_core.InputSignal<readonly ChartEditorResourceOption[]>;
451
474
  readonly availableFields: _angular_core.InputSignal<readonly ChartEditorFieldOption[]>;
452
475
  readonly availableTargets: _angular_core.InputSignal<readonly ChartEditorTargetOption[]>;
453
476
  readonly pointClick: _angular_core.OutputEmitterRef<PraxisChartPointEvent>;
477
+ readonly pointAction: _angular_core.OutputEmitterRef<PraxisChartPointActionEvent>;
454
478
  readonly selectionChange: _angular_core.OutputEmitterRef<PraxisChartSelectionEvent>;
479
+ readonly drillDown: _angular_core.OutputEmitterRef<PraxisChartDrillDownEvent>;
455
480
  readonly crossFilter: _angular_core.OutputEmitterRef<PraxisChartCrossFilterEvent>;
456
481
  readonly queryRequest: _angular_core.OutputEmitterRef<PraxisChartQueryRequestEvent>;
457
482
  readonly loadStateChange: _angular_core.OutputEmitterRef<PraxisChartLoadState>;
@@ -468,7 +493,10 @@ declare class PraxisChartComponent {
468
493
  private readonly settingsPanel;
469
494
  private readonly destroyRef;
470
495
  private readonly resizeObserver;
496
+ private resizeObserverHost;
471
497
  private readonly shellObserver;
498
+ private readonly themeObserver;
499
+ private readonly inheritedTheme;
472
500
  private readonly currentLoadState;
473
501
  private readonly remoteResolvedData;
474
502
  private readonly remoteRuntimeState;
@@ -484,7 +512,10 @@ declare class PraxisChartComponent {
484
512
  private previousRemoteSignature;
485
513
  private previousRemoteDataResolver;
486
514
  private previousDocumentSignature;
515
+ private inheritedThemeSignature;
487
516
  private editorSessionSubscriptions;
517
+ private remoteRequestSubscription;
518
+ private remoteRequestSequence;
488
519
  readonly effectiveConfig: _angular_core.Signal<PraxisChartConfig>;
489
520
  readonly resolvedData: _angular_core.Signal<PraxisChartDataRow[]>;
490
521
  readonly resolvedHeight: _angular_core.Signal<string>;
@@ -515,12 +546,20 @@ declare class PraxisChartComponent {
515
546
  private extractPointMetricValue;
516
547
  private executeRemoteDataRequest;
517
548
  private ensureResizeObserver;
549
+ private destroyResizeObserver;
518
550
  private hasRenderableSize;
519
551
  private toCssSize;
520
552
  private toCssAspectRatio;
521
553
  private buildRemoteSignature;
554
+ private cancelRemoteDataRequest;
522
555
  private clearEditorSessionSubscriptions;
523
556
  private observeShellSizingContext;
557
+ private observeThemeContext;
558
+ private syncInheritedTheme;
559
+ private isThemeVariant;
560
+ private applyInheritedTheme;
561
+ private cloneTheme;
562
+ private mergeOptionalThemeObject;
524
563
  private shouldFillShellContainer;
525
564
  private scheduleResizeAfterShellModeChange;
526
565
  private scheduleEngineResize;
@@ -528,7 +567,69 @@ declare class PraxisChartComponent {
528
567
  private cancelScheduledRender;
529
568
  private cancelScheduledResize;
530
569
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartComponent, never>;
531
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartComponent, "praxis-chart", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "chartDocument": { "alias": "chartDocument"; "required": false; "isSignal": true; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; "isSignal": true; }; "queryContext": { "alias": "queryContext"; "required": false; "isSignal": true; }; "remoteDataResolver": { "alias": "remoteDataResolver"; "required": false; "isSignal": true; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; "isSignal": true; }; "availableResources": { "alias": "availableResources"; "required": false; "isSignal": true; }; "availableFields": { "alias": "availableFields"; "required": false; "isSignal": true; }; "availableTargets": { "alias": "availableTargets"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; "selectionChange": "selectionChange"; "crossFilter": "crossFilter"; "queryRequest": "queryRequest"; "loadStateChange": "loadStateChange"; "chartDocumentApplied": "chartDocumentApplied"; "chartDocumentSaved": "chartDocumentSaved"; }, never, never, true, never>;
570
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartComponent, "praxis-chart", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "chartDocument": { "alias": "chartDocument"; "required": false; "isSignal": true; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; "isSignal": true; }; "queryContext": { "alias": "queryContext"; "required": false; "isSignal": true; }; "remoteDataResolver": { "alias": "remoteDataResolver"; "required": false; "isSignal": true; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; "isSignal": true; }; "availableResources": { "alias": "availableResources"; "required": false; "isSignal": true; }; "availableFields": { "alias": "availableFields"; "required": false; "isSignal": true; }; "availableTargets": { "alias": "availableTargets"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; "pointAction": "pointAction"; "selectionChange": "selectionChange"; "drillDown": "drillDown"; "crossFilter": "crossFilter"; "queryRequest": "queryRequest"; "loadStateChange": "loadStateChange"; "chartDocumentApplied": "chartDocumentApplied"; "chartDocumentSaved": "chartDocumentSaved"; }, never, never, true, never>;
571
+ }
572
+
573
+ interface BulletBand {
574
+ label?: string;
575
+ tone?: PraxisPresentationVisualizationThreshold['tone'];
576
+ left: number;
577
+ width: number;
578
+ }
579
+ declare class PraxisMicroVisualizationComponent {
580
+ visualizationInput: _angular_core.InputSignal<PraxisPresentationVisualizationConfig | null>;
581
+ fallbackInput: _angular_core.InputSignal<string>;
582
+ readonly visualization: _angular_core.Signal<PraxisPresentationVisualizationConfig | null>;
583
+ readonly fallbackText: _angular_core.Signal<string>;
584
+ readonly kind: _angular_core.Signal<_praxisui_core.PraxisPresentationVisualizationKind | "fallback">;
585
+ readonly surface: _angular_core.Signal<_praxisui_core.PraxisPresentationVisualizationSurface | null>;
586
+ readonly size: _angular_core.Signal<_praxisui_core.PraxisPresentationVisualizationSize | null>;
587
+ readonly isTableCell: _angular_core.Signal<boolean>;
588
+ readonly ariaLabel: _angular_core.Signal<string | null>;
589
+ readonly comparisonItems: _angular_core.Signal<PraxisPresentationVisualizationPoint[]>;
590
+ readonly stackedSegments: _angular_core.Signal<PraxisPresentationVisualizationSegment[]>;
591
+ readonly bulletThresholds: _angular_core.Signal<PraxisPresentationVisualizationThreshold[]>;
592
+ readonly bulletBands: _angular_core.Signal<BulletBand[]>;
593
+ readonly deltaValue: _angular_core.Signal<number>;
594
+ readonly deltaText: _angular_core.Signal<string>;
595
+ readonly deltaIcon: _angular_core.Signal<"" | "+" | "-">;
596
+ itemPercent(value: PraxisPresentationVisualizationPoint['value']): number;
597
+ segmentPercent(value: PraxisPresentationVisualizationSegment['value']): number;
598
+ valuePercent(value: unknown): number;
599
+ formatNumber(value: unknown): string;
600
+ readonly radialPercent: _angular_core.Signal<number>;
601
+ readonly radialDashArray: _angular_core.Signal<string>;
602
+ readonly radialText: _angular_core.Signal<string>;
603
+ readonly harveyPercent: _angular_core.Signal<number>;
604
+ readonly harveyDashArray: _angular_core.Signal<string>;
605
+ readonly harveyText: _angular_core.Signal<string>;
606
+ readonly firstPoint: _angular_core.Signal<PraxisPresentationVisualizationPoint | null>;
607
+ readonly lastPoint: _angular_core.Signal<PraxisPresentationVisualizationPoint | null>;
608
+ readonly minPointIndex: _angular_core.Signal<number>;
609
+ readonly maxPointIndex: _angular_core.Signal<number>;
610
+ readonly trendMarkers: _angular_core.Signal<{
611
+ x: number;
612
+ y: number;
613
+ tone?: string;
614
+ label?: string;
615
+ }[]>;
616
+ readonly trendCoords: _angular_core.Signal<{
617
+ x: number;
618
+ y: number;
619
+ }[]>;
620
+ readonly trendPathD: _angular_core.Signal<string>;
621
+ readonly trendAreaD: _angular_core.Signal<string>;
622
+ readonly trendColumns: _angular_core.Signal<{
623
+ x: string;
624
+ y: string;
625
+ width: string;
626
+ height: string;
627
+ tone: _praxisui_core.PraxisPresentationVisualizationTone;
628
+ }[]>;
629
+ readonly processSteps: _angular_core.Signal<_praxisui_core.PraxisPresentationVisualizationItem[]>;
630
+ private resolveBulletMax;
631
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisMicroVisualizationComponent, never>;
632
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisMicroVisualizationComponent, "praxis-micro-visualization", never, { "visualizationInput": { "alias": "visualization"; "required": false; "isSignal": true; }; "fallbackInput": { "alias": "fallbackText"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
532
633
  }
533
634
 
534
635
  declare class PraxisChartDrilldownPanelComponent {
@@ -650,8 +751,13 @@ interface PraxisChartEngineAdapter {
650
751
  }
651
752
 
652
753
  declare const PRAXIS_CHART_ENGINE: InjectionToken<PraxisChartEngineAdapter>;
754
+ type PraxisChartEngineFactory = () => PraxisChartEngineAdapter;
755
+ declare const PRAXIS_CHART_ENGINE_FACTORY: InjectionToken<PraxisChartEngineFactory>;
653
756
 
654
- declare function providePraxisCharts(): Provider[];
757
+ interface PraxisChartsProviderOptions {
758
+ engineFactory?: PraxisChartEngineFactory;
759
+ }
760
+ declare function providePraxisCharts(options?: PraxisChartsProviderOptions): Provider[];
655
761
 
656
762
  declare class ChartContractNormalizerService {
657
763
  normalize(input: PraxisXUiChartContract): PraxisXUiChartContract;
@@ -682,11 +788,14 @@ interface ChartContractValidationResult {
682
788
 
683
789
  declare class ChartContractValidationService {
684
790
  validate(document: PraxisXUiChartContract): ChartContractValidationResult;
791
+ private validateVersion;
685
792
  private validateSource;
686
793
  private validateTheme;
687
794
  private validateMetrics;
795
+ private validateComparison;
688
796
  private validateSizing;
689
797
  private validateKinds;
798
+ private validateDistribution;
690
799
  private validateEvents;
691
800
  private validateEventAction;
692
801
  private error;
@@ -701,7 +810,8 @@ declare class ChartContractValidationService {
701
810
  declare class PraxisChartCanonicalContractMapperService {
702
811
  private readonly normalizer;
703
812
  private readonly validator;
704
- constructor(normalizer?: ChartContractNormalizerService, validator?: ChartContractValidationService);
813
+ private readonly i18n?;
814
+ constructor(normalizer?: ChartContractNormalizerService, validator?: ChartContractValidationService, i18n?: PraxisI18nService | undefined);
705
815
  toPraxisChartConfig(contract: PraxisXUiChartContract): PraxisChartConfig;
706
816
  private buildAxes;
707
817
  private buildSeries;
@@ -732,7 +842,9 @@ declare class PraxisChartCanonicalContractMapperService {
732
842
  private mapStatsGranularityToBackend;
733
843
  private mapDistributionModeToBackend;
734
844
  private mapStatsMetricOperation;
735
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartCanonicalContractMapperService, never>;
845
+ private comparisonMetricField;
846
+ private comparisonPeriodLabel;
847
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartCanonicalContractMapperService, [null, null, { optional: true; }]>;
736
848
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartCanonicalContractMapperService>;
737
849
  }
738
850
 
@@ -767,6 +879,13 @@ declare class PraxisChartDataTransformerService {
767
879
  private transformCartesian;
768
880
  private transformPie;
769
881
  private buildCartesianSeries;
882
+ private buildCategoryBuckets;
883
+ private resolveCategoryIdentity;
884
+ private resolveCanonicalTimeCoordinate;
885
+ private usesCanonicalTimeCoordinates;
886
+ private extractTimeCoordinate;
887
+ private resolveTimePresentationLabel;
888
+ private typedIdentity;
770
889
  private buildPointData;
771
890
  private hasPointValue;
772
891
  private resolveCartesianSeriesType;
@@ -780,45 +899,9 @@ declare class PraxisChartDataTransformerService {
780
899
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartDataTransformerService>;
781
900
  }
782
901
 
783
- declare class PraxisChartOptionBuilderService {
784
- private readonly transformer;
785
- constructor(transformer: PraxisChartDataTransformerService);
786
- build(config: PraxisChartConfig, rows: PraxisChartDataRow[]): EChartsCoreOption;
787
- private resolveText;
788
- private resolveTextColor;
789
- private hasText;
790
- private buildTitle;
791
- private buildLegend;
792
- private buildGrid;
793
- private buildCartesianYAxis;
794
- private primaryValueFormat;
795
- private seriesLabelFormat;
796
- private axisLabelFormatter;
797
- private formatValue;
798
- private formatDateValue;
799
- private isDateFormat;
800
- private readDateParts;
801
- private parseCurrencyFormat;
802
- private normalizeCurrencyDisplay;
803
- private parseNumberFormat;
804
- private clampDecimals;
805
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartOptionBuilderService, never>;
806
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartOptionBuilderService>;
807
- }
808
-
809
- declare class PraxisChartMetadataRegistrationService {
810
- private readonly registry;
811
- private registered;
812
- constructor(registry: ComponentMetadataRegistry);
813
- ensureRegistered(): void;
814
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartMetadataRegistrationService, never>;
815
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartMetadataRegistrationService>;
816
- }
817
-
818
902
  declare class PraxisChartSchemaMapperService {
819
- private readonly metadataRegistration;
820
903
  private readonly canonicalContractMapper;
821
- constructor(metadataRegistration: PraxisChartMetadataRegistrationService, canonicalContractMapper: PraxisChartCanonicalContractMapperService);
904
+ constructor(canonicalContractMapper: PraxisChartCanonicalContractMapperService);
822
905
  resolve(input: PraxisChartWidgetLike, defaults?: {
823
906
  key?: string;
824
907
  canvasItem?: PraxisChartCanvasItem;
@@ -863,6 +946,7 @@ declare class PraxisChartStatsApiService {
863
946
  private resolveCategoryField;
864
947
  private resolveMetricBindings;
865
948
  private projectMetricValues;
949
+ private projectComparisonMetricValues;
866
950
  private buildStatsUrl;
867
951
  private buildDefaultApiBase;
868
952
  private normalizePath;
@@ -879,7 +963,9 @@ interface AnalyticsChartConfigAdapterOptions {
879
963
  height?: number | string;
880
964
  }
881
965
  declare class AnalyticsChartConfigAdapterService {
966
+ private readonly i18n?;
882
967
  private readonly statsBuilder;
968
+ constructor(i18n?: PraxisI18nService | undefined);
883
969
  toPraxisChartConfig(projection: PraxisAnalyticsProjection, options?: AnalyticsChartConfigAdapterOptions): PraxisChartConfig;
884
970
  private buildAxes;
885
971
  private buildSeries;
@@ -888,7 +974,9 @@ declare class AnalyticsChartConfigAdapterService {
888
974
  private mapAggregation;
889
975
  private mapExecutionMetrics;
890
976
  private getDisplayMetrics;
891
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnalyticsChartConfigAdapterService, never>;
977
+ private comparisonMetricField;
978
+ private comparisonPeriodLabel;
979
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnalyticsChartConfigAdapterService, [{ optional: true; }]>;
892
980
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AnalyticsChartConfigAdapterService>;
893
981
  }
894
982
 
@@ -966,9 +1054,9 @@ declare class PraxisChartCompositionShowcaseComponent {
966
1054
  protected readonly widgetPage: _angular_core.Signal<{
967
1055
  composition?: _praxisui_core.WidgetPageCompositionDefinition | undefined;
968
1056
  state?: _praxisui_core.WidgetPageStateInput | undefined;
969
- canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
970
- context?: Record<string, any> | undefined;
971
1057
  widgets: _praxisui_core.WidgetInstance[];
1058
+ context?: Record<string, any> | undefined;
1059
+ canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
972
1060
  layout?: _praxisui_core.WidgetPageLayout | undefined;
973
1061
  layoutPreset?: string | undefined;
974
1062
  layoutPresetOptions?: Record<string, any> | undefined;
@@ -980,9 +1068,9 @@ declare class PraxisChartCompositionShowcaseComponent {
980
1068
  protected readonly canvasPage: _angular_core.Signal<({
981
1069
  composition?: _praxisui_core.WidgetPageCompositionDefinition | undefined;
982
1070
  state?: _praxisui_core.WidgetPageStateInput | undefined;
983
- canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
984
- context?: Record<string, any> | undefined;
985
1071
  widgets: _praxisui_core.WidgetInstance[];
1072
+ context?: Record<string, any> | undefined;
1073
+ canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
986
1074
  layout?: _praxisui_core.WidgetPageLayout | undefined;
987
1075
  layoutPreset?: string | undefined;
988
1076
  layoutPresetOptions?: Record<string, any> | undefined;
@@ -1025,9 +1113,9 @@ declare class PraxisChartCompositionShowcaseComponent {
1025
1113
  protected readonly resolvedPage: _angular_core.Signal<{
1026
1114
  composition?: _praxisui_core.WidgetPageCompositionDefinition | undefined;
1027
1115
  state?: _praxisui_core.WidgetPageStateInput | undefined;
1028
- canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1029
- context?: Record<string, any> | undefined;
1030
1116
  widgets: _praxisui_core.WidgetInstance[];
1117
+ context?: Record<string, any> | undefined;
1118
+ canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1031
1119
  layout?: _praxisui_core.WidgetPageLayout | undefined;
1032
1120
  layoutPreset?: string | undefined;
1033
1121
  layoutPresetOptions?: Record<string, any> | undefined;
@@ -1084,14 +1172,15 @@ interface ChartConfigEditorResetEvent {
1084
1172
  type ChartEditorSection = 'general' | 'data' | 'analytics' | 'appearance' | 'motion' | 'events' | 'preview';
1085
1173
  type ChartFeatureKey = 'legend' | 'labels' | 'tooltip';
1086
1174
  type ChartStateKey = 'empty' | 'loading' | 'error';
1087
- type ChartEventKey = 'pointClick' | 'selectionChange' | 'drillDown' | 'crossFilter';
1175
+ type ChartEventKey = ChartEditorEventKey;
1176
+ type ChartFieldRole = 'dimension' | 'metric' | 'time';
1088
1177
  declare class PraxisChartConfigEditor implements SettingsValueProvider {
1089
1178
  readonly documentInput: _angular_core.InputSignal<PraxisXUiChartContract | null>;
1090
1179
  readonly modeInput: _angular_core.InputSignal<"create" | "edit">;
1091
1180
  readonly readonlyInput: _angular_core.InputSignal<boolean>;
1092
- readonly availableResourcesInput: _angular_core.InputSignal<ChartEditorResourceOption[]>;
1093
- readonly availableFieldsInput: _angular_core.InputSignal<ChartEditorFieldOption[]>;
1094
- readonly availableTargetsInput: _angular_core.InputSignal<ChartEditorTargetOption[]>;
1181
+ readonly availableResourcesInput: _angular_core.InputSignal<ChartEditorResourceOption[] | null>;
1182
+ readonly availableFieldsInput: _angular_core.InputSignal<ChartEditorFieldOption[] | null>;
1183
+ readonly availableTargetsInput: _angular_core.InputSignal<ChartEditorTargetOption[] | null>;
1095
1184
  readonly apply: _angular_core.OutputEmitterRef<ChartConfigEditorApplyEvent>;
1096
1185
  readonly save: _angular_core.OutputEmitterRef<ChartConfigEditorSaveEvent>;
1097
1186
  readonly resetChange: _angular_core.OutputEmitterRef<ChartConfigEditorResetEvent>;
@@ -1109,6 +1198,8 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1109
1198
  readonly operations: PraxisXUiChartStatsOperation[];
1110
1199
  readonly timeGranularities: readonly ["day", "week", "month"];
1111
1200
  readonly distributionModes: PraxisXUiChartStatsDistributionMode[];
1201
+ readonly comparisonPeriodPresets: PraxisXUiChartComparisonPeriodPreset[];
1202
+ readonly comparisonPeriodModes: PraxisXUiChartComparisonPeriodMode[];
1112
1203
  readonly dimensionRoles: NonNullable<PraxisXUiChartDimension['role']>[];
1113
1204
  readonly metricAggregations: PraxisXUiChartAggregation[];
1114
1205
  readonly metricAxes: Array<NonNullable<PraxisXUiChartMetric['axis']>>;
@@ -1126,13 +1217,25 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1126
1217
  private readonly normalizer;
1127
1218
  private readonly validator;
1128
1219
  private readonly previewMapper;
1220
+ private readonly contextResolver;
1129
1221
  private readonly i18n;
1130
1222
  private readonly currentDocument;
1131
1223
  private readonly initialDocument;
1224
+ private readonly resolvedResources;
1225
+ private readonly resolvedFields;
1226
+ private readonly catalogResolutionDiagnostics;
1132
1227
  private lastExternalSignature;
1228
+ private lastCatalogInputSignature;
1229
+ private catalogResolutionRequestId;
1230
+ private readonly baseAvailableResources;
1231
+ private readonly baseAvailableFields;
1133
1232
  readonly normalizedDocument: _angular_core.Signal<PraxisXUiChartContract>;
1134
- readonly validation: _angular_core.Signal<_praxisui_charts.ChartContractValidationResult>;
1233
+ readonly validation: _angular_core.Signal<{
1234
+ valid: boolean;
1235
+ issues: ChartContractValidationIssue[];
1236
+ }>;
1135
1237
  readonly issues: _angular_core.Signal<ChartContractValidationIssue[]>;
1238
+ readonly catalogIssues: _angular_core.Signal<ChartContractValidationIssue[]>;
1136
1239
  readonly availableResources: _angular_core.Signal<ChartEditorResourceOption[]>;
1137
1240
  readonly availableFields: _angular_core.Signal<ChartEditorFieldOption[]>;
1138
1241
  readonly availableTargets: _angular_core.Signal<ChartEditorTargetOption[]>;
@@ -1162,6 +1265,10 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1162
1265
  setDistributionMode(value: PraxisXUiChartStatsDistributionMode): void;
1163
1266
  setBucketSize(value: string): void;
1164
1267
  setBucketCount(value: string): void;
1268
+ setComparisonPeriodField(field: string): void;
1269
+ setComparisonPeriodTimezone(timezone: string): void;
1270
+ setComparisonPeriodPreset(preset: PraxisXUiChartComparisonPeriodPreset): void;
1271
+ setComparisonPeriodMode(mode: PraxisXUiChartComparisonPeriodMode): void;
1165
1272
  addDimension(): void;
1166
1273
  removeDimension(index: number): void;
1167
1274
  setDimensionField(index: number, field: string): void;
@@ -1191,11 +1298,19 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1191
1298
  subtitleValue(): string;
1192
1299
  resourceValue(): string;
1193
1300
  resourceOptions(): ChartEditorResourceOption[];
1301
+ selectedResourceOption(): ChartEditorResourceOption | undefined;
1302
+ operationOptions(): PraxisXUiChartStatsOperation[];
1303
+ resourceCatalogUnavailable(): boolean;
1304
+ operationCatalogUnavailable(): boolean;
1194
1305
  granularityValue(): typeof this.timeGranularities[number];
1195
1306
  fillGapsValue(): boolean;
1196
1307
  distributionModeValue(): PraxisXUiChartStatsDistributionMode;
1197
1308
  bucketSizeValue(): string;
1198
1309
  bucketCountValue(): string;
1310
+ comparisonPeriodFieldValue(): string;
1311
+ comparisonPeriodTimezoneValue(): string;
1312
+ comparisonPeriodPresetValue(): PraxisXUiChartComparisonPeriodPreset;
1313
+ comparisonPeriodModeValue(): PraxisXUiChartComparisonPeriodMode;
1199
1314
  heightValue(): string;
1200
1315
  sizingModeValue(): PraxisXUiChartSizingMode;
1201
1316
  sizingMinHeightValue(): string;
@@ -1211,15 +1326,19 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1211
1326
  stateDescription(stateKey: ChartStateKey): string;
1212
1327
  eventAction(eventKey: ChartEventKey): PraxisXUiChartEventAction['action'] | '';
1213
1328
  eventTarget(eventKey: ChartEventKey): string;
1214
- targetOptions(): ChartEditorTargetOption[];
1329
+ targetOptions(action?: PraxisXUiChartEventAction['action'] | '', eventKey?: ChartEventKey): ChartEditorTargetOption[];
1330
+ targetCatalogUnavailable(action?: PraxisXUiChartEventAction['action'] | '', eventKey?: ChartEventKey): boolean;
1215
1331
  eventMappingText(eventKey: ChartEventKey): string;
1216
1332
  dimensions(): PraxisXUiChartDimension[];
1217
1333
  metrics(): PraxisXUiChartMetric[];
1218
- fieldOptions(role: 'dimension' | 'metric'): ChartEditorFieldOption[];
1334
+ fieldOptions(role: ChartFieldRole): ChartEditorFieldOption[];
1335
+ metricAggregationOptions(fieldName: string | undefined): PraxisXUiChartAggregation[];
1336
+ fieldOptionLabel(field: ChartEditorFieldOption): string;
1219
1337
  showMetricAxisControls(): boolean;
1220
1338
  showMetricSeriesKindControls(): boolean;
1221
1339
  showTimeseriesControls(): boolean;
1222
1340
  showDistributionControls(): boolean;
1341
+ showComparisonControls(): boolean;
1223
1342
  showComboPanel(): boolean;
1224
1343
  showPieDonutPanel(): boolean;
1225
1344
  showScatterPanel(): boolean;
@@ -1229,6 +1348,20 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1229
1348
  private patchStateDescriptor;
1230
1349
  private patchEvent;
1231
1350
  private parseMappingText;
1351
+ private validateCatalogContext;
1352
+ private fieldMatchesSelectedResource;
1353
+ private fieldMatchesResourceOption;
1354
+ private resolveSelectedResource;
1355
+ private resourceIdentityMatches;
1356
+ private normalizeResourcePath;
1357
+ private toCatalogIssue;
1358
+ private catalogDiagnosticMessage;
1359
+ private fieldMatchesOperation;
1360
+ private fieldMatchesDistributionMode;
1361
+ private fieldMatchesRole;
1362
+ private updateComparisonPeriod;
1363
+ private defaultComparisonPeriodField;
1364
+ private catalogError;
1232
1365
  private normalizeSizingSizeInput;
1233
1366
  private mergeTheme;
1234
1367
  private createApplyPayload;
@@ -1247,40 +1380,407 @@ interface PraxisChartWidgetEditorInputs {
1247
1380
  availableTargets?: ChartEditorTargetOption[];
1248
1381
  [key: string]: unknown;
1249
1382
  }
1383
+ interface PraxisChartWidgetEditorContext {
1384
+ availableResources?: ChartEditorResourceOption[];
1385
+ availableFields?: ChartEditorFieldOption[];
1386
+ availableTargets?: ChartEditorTargetOption[];
1387
+ [key: string]: unknown;
1388
+ }
1250
1389
  interface PraxisChartWidgetEditorValue {
1251
1390
  inputs: PraxisChartWidgetEditorInputs;
1252
1391
  }
1253
- declare class PraxisChartWidgetConfigEditor implements SettingsValueProvider, AfterViewInit, OnChanges, OnDestroy {
1392
+ type ChartWidgetContextDiagnostic = NonNullable<ComponentConfigEditorContextResult['diagnostics']>[number];
1393
+ declare class PraxisChartWidgetConfigEditor implements SettingsValueProvider, OnChanges, OnDestroy {
1394
+ private readonly i18n;
1254
1395
  inputs: PraxisChartWidgetEditorInputs | null;
1255
- chartEditor?: PraxisChartConfigEditor;
1396
+ context: PraxisChartWidgetEditorContext | null;
1397
+ contextDiagnostics: ChartWidgetContextDiagnostic[];
1398
+ private activeChartEditor?;
1399
+ private chartEditorSubscription;
1400
+ set chartEditor(value: PraxisChartConfigEditor | undefined);
1401
+ get chartEditor(): PraxisChartConfigEditor | undefined;
1256
1402
  readonly isDirty$: BehaviorSubject<boolean>;
1257
1403
  readonly isValid$: BehaviorSubject<boolean>;
1258
1404
  readonly isBusy$: BehaviorSubject<boolean>;
1259
- private readonly subscription;
1405
+ private chartEditorDirty;
1260
1406
  private chartEditorValid;
1261
1407
  private queryContextDirty;
1408
+ private baselineQueryContextText;
1262
1409
  queryContextText: string;
1263
1410
  queryContextError: string;
1264
1411
  get chartDocument(): PraxisXUiChartContract | null;
1265
1412
  get availableResources(): ChartEditorResourceOption[];
1266
1413
  get availableFields(): ChartEditorFieldOption[];
1267
1414
  get availableTargets(): ChartEditorTargetOption[];
1268
- ngAfterViewInit(): void;
1269
1415
  ngOnChanges(changes: SimpleChanges): void;
1270
1416
  ngOnDestroy(): void;
1271
1417
  setQueryContextText(value: string): void;
1272
1418
  getSettingsValue(): PraxisChartWidgetEditorValue;
1273
1419
  onSave(): PraxisChartWidgetEditorValue;
1274
1420
  reset(): void;
1421
+ t(key: string, fallback: string): string;
1422
+ contextDiagnosticText(diagnostic: ChartWidgetContextDiagnostic): string;
1275
1423
  private buildValue;
1424
+ private bindChartEditor;
1425
+ private getChartDocumentForApply;
1426
+ private getChartDocumentForSave;
1427
+ private rebaseQueryContext;
1428
+ private updateDirty;
1276
1429
  private updateValidity;
1277
1430
  private formatQueryContext;
1278
1431
  private validateQueryContextText;
1279
1432
  private parseQueryContextText;
1280
1433
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartWidgetConfigEditor, never>;
1281
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartWidgetConfigEditor, "praxis-chart-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; }, {}, never, never, true, never>;
1434
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartWidgetConfigEditor, "praxis-chart-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; "context": { "alias": "context"; "required": false; }; "contextDiagnostics": { "alias": "contextDiagnostics"; "required": false; }; }, {}, never, never, true, never>;
1282
1435
  }
1283
1436
 
1437
+ type PraxisChartAuthoringCoverageMode = 'visual-editable' | 'preserved-only' | 'ai-authorable' | 'advanced-structured' | 'derived-readonly' | 'unsupported';
1438
+ type PraxisChartAuthoringCoverageOwner = 'chart-config-editor' | 'chart-widget-config-editor' | 'chart-contract-normalizer' | 'chart-runtime-mapper' | 'chart-ai-manifest' | 'settings-panel-host' | 'backend-capabilities';
1439
+ interface PraxisChartAuthoringCoverageRow {
1440
+ path: string;
1441
+ mode: PraxisChartAuthoringCoverageMode;
1442
+ owner: PraxisChartAuthoringCoverageOwner;
1443
+ rationale: string;
1444
+ proof: string[];
1445
+ }
1446
+ declare const PRAXIS_CHART_AUTHORING_COVERAGE: readonly [{
1447
+ readonly path: "chartDocument";
1448
+ readonly mode: "advanced-structured";
1449
+ readonly owner: "chart-ai-manifest";
1450
+ readonly rationale: "Whole-document authoring is allowed for AI and structured import, but the visual editor must not become a raw JSON primary path.";
1451
+ readonly proof: ["praxis-charts-authoring-manifest.spec.ts", "praxis-chart-config-editor.spec.ts"];
1452
+ }, {
1453
+ readonly path: "chartDocument.version";
1454
+ readonly mode: "derived-readonly";
1455
+ readonly owner: "chart-contract-normalizer";
1456
+ readonly rationale: "Version is canonical schema governance and is normalized to the authorable x-ui.chart version.";
1457
+ readonly proof: ["chart-authoring-coverage.matrix.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1458
+ }, {
1459
+ readonly path: "chartDocument.kind";
1460
+ readonly mode: "visual-editable";
1461
+ readonly owner: "chart-config-editor";
1462
+ readonly rationale: "Chart kind is a first-class visual decision with runtime mapper and AI manifest parity.";
1463
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1464
+ }, {
1465
+ readonly path: "chartDocument.preset";
1466
+ readonly mode: "preserved-only";
1467
+ readonly owner: "chart-contract-normalizer";
1468
+ readonly rationale: "Preset is semantic starter intent; the current editor preserves it instead of presenting it as a misleading post-hoc visual control.";
1469
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1470
+ }, {
1471
+ readonly path: "chartDocument.chartId";
1472
+ readonly mode: "visual-editable";
1473
+ readonly owner: "chart-config-editor";
1474
+ readonly rationale: "Stable chart identity is editable for host/runtime diagnostics and event correlation.";
1475
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1476
+ }, {
1477
+ readonly path: "chartDocument.orientation";
1478
+ readonly mode: "ai-authorable";
1479
+ readonly owner: "chart-ai-manifest";
1480
+ readonly rationale: "Orientation is compiled by chart type and axis decisions; the visual editor currently preserves it without a separate control.";
1481
+ readonly proof: ["praxis-charts-authoring-manifest.spec.ts", "praxis-chart-config-editor.spec.ts"];
1482
+ }, {
1483
+ readonly path: "chartDocument.title";
1484
+ readonly mode: "visual-editable";
1485
+ readonly owner: "chart-config-editor";
1486
+ readonly rationale: "Title is primary presentation copy in the editor and runtime preview.";
1487
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1488
+ }, {
1489
+ readonly path: "chartDocument.subtitle";
1490
+ readonly mode: "visual-editable";
1491
+ readonly owner: "chart-config-editor";
1492
+ readonly rationale: "Subtitle is presentation copy edited alongside title.";
1493
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1494
+ }, {
1495
+ readonly path: "chartDocument.sizing";
1496
+ readonly mode: "visual-editable";
1497
+ readonly owner: "chart-config-editor";
1498
+ readonly rationale: "Sizing controls are canonical runtime layout decisions; deprecated height is normalized into sizing.height.";
1499
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1500
+ }, {
1501
+ readonly path: "chartDocument.height";
1502
+ readonly mode: "derived-readonly";
1503
+ readonly owner: "chart-contract-normalizer";
1504
+ readonly rationale: "Deprecated compatibility input is consumed and cleared in favor of chartDocument.sizing.height.";
1505
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1506
+ }, {
1507
+ readonly path: "chartDocument.source.kind";
1508
+ readonly mode: "visual-editable";
1509
+ readonly owner: "chart-config-editor";
1510
+ readonly rationale: "Source kind selects local derived data versus governed praxis.stats binding.";
1511
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-chart-widget-config-editor.spec.ts"];
1512
+ }, {
1513
+ readonly path: "chartDocument.source.resource";
1514
+ readonly mode: "visual-editable";
1515
+ readonly owner: "chart-config-editor";
1516
+ readonly rationale: "Resource selection is governed by catalog options and fails closed when unavailable.";
1517
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1518
+ }, {
1519
+ readonly path: "chartDocument.source.operation";
1520
+ readonly mode: "visual-editable";
1521
+ readonly owner: "chart-config-editor";
1522
+ readonly rationale: "Stats operation drives field compatibility, runtime request semantics and specialized options.";
1523
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1524
+ }, {
1525
+ readonly path: "chartDocument.source.options.granularity";
1526
+ readonly mode: "visual-editable";
1527
+ readonly owner: "chart-config-editor";
1528
+ readonly rationale: "Timeseries granularity is visually edited with backend-supported values only.";
1529
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1530
+ }, {
1531
+ readonly path: "chartDocument.source.options.fillGaps";
1532
+ readonly mode: "visual-editable";
1533
+ readonly owner: "chart-config-editor";
1534
+ readonly rationale: "Timeseries gap filling is a supported runtime option surfaced in the editor.";
1535
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1536
+ }, {
1537
+ readonly path: "chartDocument.source.options.mode";
1538
+ readonly mode: "visual-editable";
1539
+ readonly owner: "chart-config-editor";
1540
+ readonly rationale: "Distribution mode is visually edited for terms versus histogram materialization.";
1541
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1542
+ }, {
1543
+ readonly path: "chartDocument.source.options.bucketSize";
1544
+ readonly mode: "visual-editable";
1545
+ readonly owner: "chart-config-editor";
1546
+ readonly rationale: "Histogram bucket size is a supported distribution option.";
1547
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1548
+ }, {
1549
+ readonly path: "chartDocument.source.options.bucketCount";
1550
+ readonly mode: "visual-editable";
1551
+ readonly owner: "chart-config-editor";
1552
+ readonly rationale: "Histogram bucket count is a supported distribution option.";
1553
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1554
+ }, {
1555
+ readonly path: "chartDocument.source.options.comparisonPeriod";
1556
+ readonly mode: "visual-editable";
1557
+ readonly owner: "chart-config-editor";
1558
+ readonly rationale: "Comparison period is a canonical operation binding edited as one governed group instead of independent endpoint calls.";
1559
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "chart-canonical-contract-mapper.service.spec.ts"];
1560
+ }, {
1561
+ readonly path: "chartDocument.source.options.comparisonPeriod.field";
1562
+ readonly mode: "visual-editable";
1563
+ readonly owner: "chart-config-editor";
1564
+ readonly rationale: "The comparison period field is selected only from time-series eligible capability-backed fields.";
1565
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "chart-resource-capability-catalog.adapter.spec.ts"];
1566
+ }, {
1567
+ readonly path: "chartDocument.source.options.comparisonPeriod.timezone";
1568
+ readonly mode: "visual-editable";
1569
+ readonly owner: "chart-config-editor";
1570
+ readonly rationale: "Timezone is an explicit canonical input required for deterministic period resolution by the backend.";
1571
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "chart-contract-validation.service.spec.ts"];
1572
+ }, {
1573
+ readonly path: "chartDocument.source.options.comparisonPeriod.preset";
1574
+ readonly mode: "visual-editable";
1575
+ readonly owner: "chart-config-editor";
1576
+ readonly rationale: "The period preset is constrained to the canonical backend vocabulary and persisted without local date arithmetic.";
1577
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "chart-contract-validation.service.spec.ts"];
1578
+ }, {
1579
+ readonly path: "chartDocument.source.options.comparisonPeriod.mode";
1580
+ readonly mode: "visual-editable";
1581
+ readonly owner: "chart-config-editor";
1582
+ readonly rationale: "Comparison mode is selected from the canonical aligned or calendar-period semantics resolved by the backend.";
1583
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "chart-contract-validation.service.spec.ts"];
1584
+ }, {
1585
+ readonly path: "chartDocument.source.options.orderBy";
1586
+ readonly mode: "preserved-only";
1587
+ readonly owner: "chart-contract-normalizer";
1588
+ readonly rationale: "Ordering is runtime-supported but not yet exposed as a primary visual control; preserving avoids silent loss.";
1589
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1590
+ }, {
1591
+ readonly path: "chartDocument.source.options.limit";
1592
+ readonly mode: "preserved-only";
1593
+ readonly owner: "chart-contract-normalizer";
1594
+ readonly rationale: "Source-level result limit remains governed by document/runtime semantics until a ranked visual control exists.";
1595
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1596
+ }, {
1597
+ readonly path: "chartDocument.source.refresh";
1598
+ readonly mode: "preserved-only";
1599
+ readonly owner: "chart-contract-normalizer";
1600
+ readonly rationale: "Refresh policy belongs to runtime/backend cadence governance; current editor preserves it.";
1601
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1602
+ }, {
1603
+ readonly path: "chartDocument.dimensions[]";
1604
+ readonly mode: "visual-editable";
1605
+ readonly owner: "chart-config-editor";
1606
+ readonly rationale: "Dimension field and role are visually editable with catalog compatibility checks.";
1607
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1608
+ }, {
1609
+ readonly path: "chartDocument.dimensions[].label";
1610
+ readonly mode: "preserved-only";
1611
+ readonly owner: "chart-contract-normalizer";
1612
+ readonly rationale: "Dimension labels can be authored by AI/imported contracts and must survive visual edits until a governed label control exists.";
1613
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1614
+ }, {
1615
+ readonly path: "chartDocument.dimensions[].format";
1616
+ readonly mode: "preserved-only";
1617
+ readonly owner: "chart-contract-normalizer";
1618
+ readonly rationale: "Dimension formatting is runtime metadata and is preserved while not yet visually edited.";
1619
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1620
+ }, {
1621
+ readonly path: "chartDocument.metrics[]";
1622
+ readonly mode: "visual-editable";
1623
+ readonly owner: "chart-config-editor";
1624
+ readonly rationale: "Metric field, label, aggregation, axis and series kind are core visual analytics controls.";
1625
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1626
+ }, {
1627
+ readonly path: "chartDocument.metrics[].color";
1628
+ readonly mode: "preserved-only";
1629
+ readonly owner: "chart-contract-normalizer";
1630
+ readonly rationale: "Series color is renderer-neutral config but not yet a governed swatch control in the editor.";
1631
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1632
+ }, {
1633
+ readonly path: "chartDocument.metrics[].format";
1634
+ readonly mode: "preserved-only";
1635
+ readonly owner: "chart-contract-normalizer";
1636
+ readonly rationale: "Metric formatting is preserved as runtime presentation metadata until visual format presets are introduced.";
1637
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1638
+ }, {
1639
+ readonly path: "chartDocument.aggregations[]";
1640
+ readonly mode: "ai-authorable";
1641
+ readonly owner: "chart-ai-manifest";
1642
+ readonly rationale: "Aggregation config is a structured analytics contract; visual authoring currently edits metric aggregation instead.";
1643
+ readonly proof: ["chart-authoring-coverage.matrix.spec.ts", "praxis-chart-config-editor.spec.ts"];
1644
+ }, {
1645
+ readonly path: "chartDocument.groupBy[]";
1646
+ readonly mode: "ai-authorable";
1647
+ readonly owner: "chart-ai-manifest";
1648
+ readonly rationale: "Grouping is derivable from dimensions for current visual flows and remains preserved for structured authoring.";
1649
+ readonly proof: ["chart-authoring-coverage.matrix.spec.ts", "praxis-chart-config-editor.spec.ts"];
1650
+ }, {
1651
+ readonly path: "chartDocument.sort[]";
1652
+ readonly mode: "preserved-only";
1653
+ readonly owner: "chart-contract-normalizer";
1654
+ readonly rationale: "Document-level sort is runtime-supported but lacks a governed visual ordering editor.";
1655
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1656
+ }, {
1657
+ readonly path: "chartDocument.filters[]";
1658
+ readonly mode: "preserved-only";
1659
+ readonly owner: "chart-contract-normalizer";
1660
+ readonly rationale: "Static document filters are preserved; dynamic authoring should prefer queryContext and backend capabilities.";
1661
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1662
+ }, {
1663
+ readonly path: "chartDocument.limit";
1664
+ readonly mode: "preserved-only";
1665
+ readonly owner: "chart-contract-normalizer";
1666
+ readonly rationale: "Document-level limit remains a structured runtime constraint until a governed visual control is added.";
1667
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1668
+ }, {
1669
+ readonly path: "chartDocument.legend";
1670
+ readonly mode: "visual-editable";
1671
+ readonly owner: "chart-config-editor";
1672
+ readonly rationale: "Legend visibility is a visual feature toggle and AI manifest operation.";
1673
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1674
+ }, {
1675
+ readonly path: "chartDocument.labels";
1676
+ readonly mode: "visual-editable";
1677
+ readonly owner: "chart-config-editor";
1678
+ readonly rationale: "Data labels are a visual feature toggle in the appearance section.";
1679
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1680
+ }, {
1681
+ readonly path: "chartDocument.tooltip";
1682
+ readonly mode: "visual-editable";
1683
+ readonly owner: "chart-config-editor";
1684
+ readonly rationale: "Tooltip visibility is a visual feature toggle and AI manifest operation.";
1685
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1686
+ }, {
1687
+ readonly path: "chartDocument.theme.palette";
1688
+ readonly mode: "visual-editable";
1689
+ readonly owner: "chart-config-editor";
1690
+ readonly rationale: "Palette token/custom values are visually edited and preserved as renderer-neutral theme contract.";
1691
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1692
+ }, {
1693
+ readonly path: "chartDocument.theme.variant";
1694
+ readonly mode: "visual-editable";
1695
+ readonly owner: "chart-config-editor";
1696
+ readonly rationale: "Theme variant is a visual editor control and runtime presentation decision.";
1697
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1698
+ }, {
1699
+ readonly path: "chartDocument.theme.surface.mode";
1700
+ readonly mode: "visual-editable";
1701
+ readonly owner: "chart-config-editor";
1702
+ readonly rationale: "Surface mode is visually edited to align chart containment with host context.";
1703
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1704
+ }, {
1705
+ readonly path: "chartDocument.theme.surface.background";
1706
+ readonly mode: "preserved-only";
1707
+ readonly owner: "chart-contract-normalizer";
1708
+ readonly rationale: "Surface color details are contract-supported but not yet governed by tokenized visual controls.";
1709
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1710
+ }, {
1711
+ readonly path: "chartDocument.theme.surface.borderColor";
1712
+ readonly mode: "preserved-only";
1713
+ readonly owner: "chart-contract-normalizer";
1714
+ readonly rationale: "Surface border color is preserved until a token-aware border editor exists.";
1715
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1716
+ }, {
1717
+ readonly path: "chartDocument.theme.surface.borderWidth";
1718
+ readonly mode: "preserved-only";
1719
+ readonly owner: "chart-contract-normalizer";
1720
+ readonly rationale: "Surface border width is preserved to avoid dropping host-authored surface detail.";
1721
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1722
+ }, {
1723
+ readonly path: "chartDocument.theme.surface.borderRadius";
1724
+ readonly mode: "preserved-only";
1725
+ readonly owner: "chart-contract-normalizer";
1726
+ readonly rationale: "Surface border radius is preserved to avoid dropping host-authored surface detail.";
1727
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1728
+ }, {
1729
+ readonly path: "chartDocument.state.empty";
1730
+ readonly mode: "visual-editable";
1731
+ readonly owner: "chart-config-editor";
1732
+ readonly rationale: "Empty-state title/description are visible runtime presentation copy.";
1733
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1734
+ }, {
1735
+ readonly path: "chartDocument.state.loading";
1736
+ readonly mode: "visual-editable";
1737
+ readonly owner: "chart-config-editor";
1738
+ readonly rationale: "Loading-state title/description are visible runtime presentation copy.";
1739
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1740
+ }, {
1741
+ readonly path: "chartDocument.state.error";
1742
+ readonly mode: "visual-editable";
1743
+ readonly owner: "chart-config-editor";
1744
+ readonly rationale: "Error-state title/description are visible runtime presentation copy.";
1745
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1746
+ }, {
1747
+ readonly path: "chartDocument.events.pointClick";
1748
+ readonly mode: "visual-editable";
1749
+ readonly owner: "chart-config-editor";
1750
+ readonly rationale: "Point click action is configured visually while raw point evidence remains a separate output.";
1751
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1752
+ }, {
1753
+ readonly path: "chartDocument.events.selectionChange";
1754
+ readonly mode: "visual-editable";
1755
+ readonly owner: "chart-config-editor";
1756
+ readonly rationale: "Selection change supports the governed single-selection event contract.";
1757
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1758
+ }, {
1759
+ readonly path: "chartDocument.events.drillDown";
1760
+ readonly mode: "visual-editable";
1761
+ readonly owner: "chart-config-editor";
1762
+ readonly rationale: "Drilldown target and mapping are visually authorable with governed target catalogs.";
1763
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1764
+ }, {
1765
+ readonly path: "chartDocument.events.crossFilter";
1766
+ readonly mode: "visual-editable";
1767
+ readonly owner: "chart-config-editor";
1768
+ readonly rationale: "Cross-filter target and mapping are visually authorable with governed target catalogs.";
1769
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1770
+ }, {
1771
+ readonly path: "chartDocument.motion";
1772
+ readonly mode: "visual-editable";
1773
+ readonly owner: "chart-config-editor";
1774
+ readonly rationale: "Motion enablement and preset are visual runtime behavior controls.";
1775
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1776
+ }, {
1777
+ readonly path: "queryContext";
1778
+ readonly mode: "advanced-structured";
1779
+ readonly owner: "chart-widget-config-editor";
1780
+ readonly rationale: "Query context is a structured widget runtime input edited as an advanced JSON fallback and validated as object-only.";
1781
+ readonly proof: ["praxis-chart-widget-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1782
+ }];
1783
+
1284
1784
  interface PraxisChartConfigEditorData {
1285
1785
  chartDocument?: PraxisXUiChartContract;
1286
1786
  document?: PraxisXUiChartContract;
@@ -1312,6 +1812,21 @@ declare class ChartEditorPreviewMapperService {
1312
1812
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartEditorPreviewMapperService>;
1313
1813
  }
1314
1814
 
1815
+ declare class ChartResourceCapabilityCatalogAdapter {
1816
+ toResourceOperations(capabilities: ResourceCapabilitySnapshot | null | undefined): PraxisXUiChartStatsOperation[];
1817
+ toFieldOptions(capabilities: ResourceCapabilitySnapshot | null | undefined, operation?: PraxisXUiChartStatsOperation | null): ChartEditorFieldOption[];
1818
+ private toFieldOptionsForRoles;
1819
+ private resolveDimensionOperations;
1820
+ private resolveAggregations;
1821
+ private resolveDistributionModes;
1822
+ private resolveResourceOperations;
1823
+ private mapMetric;
1824
+ private mapType;
1825
+ private toCountOption;
1826
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartResourceCapabilityCatalogAdapter, never>;
1827
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartResourceCapabilityCatalogAdapter>;
1828
+ }
1829
+
1315
1830
  type PraxisChartsText = PraxisTextValue;
1316
1831
  interface PraxisChartsI18nOptions {
1317
1832
  locale?: string;
@@ -1334,5 +1849,5 @@ declare function providePraxisChartDrilldownPanelMetadata(): Provider;
1334
1849
  declare const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta;
1335
1850
  declare function providePraxisChartStateProbeMetadata(): Provider;
1336
1851
 
1337
- export { AnalyticsChartConfigAdapterService, AnalyticsChartContractService, ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_AUTHORING_MANIFEST, 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_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, PraxisChartWidgetConfigEditor, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, isPraxisChartPaletteToken, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartPaletteToken, resolvePraxisChartsText };
1338
- export type { AnalyticsChartConfigAdapterOptions, AnalyticsChartContractDefinition, AnalyticsChartContractLoadOptions, AnalyticsChartContractLoadResult, AnalyticsChartContractSource, ChartConfigEditorApplyEvent, ChartConfigEditorResetEvent, ChartConfigEditorSaveEvent, ChartContractIssueSeverity, ChartContractValidationIssue, ChartContractValidationResult, ChartEditorFieldOption, ChartEditorPreviewPayload, ChartEditorResourceOption, ChartEditorTargetOption, PraxisChartAggregation, PraxisChartAxisConfig, PraxisChartAxisLabelConfig, PraxisChartAxisPosition, PraxisChartAxisType, PraxisChartBackendPayload, PraxisChartBackendWidgetPayload, PraxisChartCanvasItem, PraxisChartCartesianSeries, PraxisChartConfig, PraxisChartConfigEditorData, PraxisChartCrossFilterEvent, PraxisChartDataRow, PraxisChartDataSource, PraxisChartDeclarativeEventAction, PraxisChartDistributionStatsRequest, PraxisChartEmptyStateConfig, PraxisChartEngineAdapter, PraxisChartEngineRenderPayload, PraxisChartErrorStateConfig, PraxisChartGroupByStatsRequest, PraxisChartInteractionConfig, PraxisChartLegendConfig, PraxisChartLoadState, PraxisChartLocalDataSource, PraxisChartMetricConfig, PraxisChartMotionConfig, PraxisChartMotionPreset, PraxisChartPaletteToken, PraxisChartPieSlice, PraxisChartPointEvent, PraxisChartPrimitive, PraxisChartQueryConfig, PraxisChartQueryContext, PraxisChartQueryMetricConfig, PraxisChartQueryRequestEvent, PraxisChartRemoteDataResolver, PraxisChartRemoteDataResolverResult, PraxisChartRemoteDataSource, PraxisChartSchemaMeta, PraxisChartSelectionEvent, PraxisChartSeriesConfig, PraxisChartSeriesLabelConfig, PraxisChartSizingConfig, PraxisChartSizingMode, PraxisChartStateConfig, PraxisChartStatsDistributionMode, PraxisChartStatsGranularity, PraxisChartStatsMetricOperation, PraxisChartStatsMetricRequest, PraxisChartStatsOperation, PraxisChartStatsOrderBy, PraxisChartStatsRequest, PraxisChartSurfaceConfig, PraxisChartSurfaceMode, PraxisChartThemeConfig, PraxisChartThemeVariant, PraxisChartTimeSeriesStatsRequest, PraxisChartTooltipConfig, PraxisChartTransformedData, PraxisChartType, PraxisChartWidgetEditorInputs, PraxisChartWidgetEditorValue, PraxisChartWidgetInstance, PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema, PraxisChartsI18nOptions, PraxisChartsText, PraxisXUiChartAggregation, PraxisXUiChartAggregationConfig, PraxisXUiChartContract, PraxisXUiChartDimension, PraxisXUiChartEventAction, PraxisXUiChartEvents, PraxisXUiChartFilter, PraxisXUiChartKind, PraxisXUiChartMetric, PraxisXUiChartMotion, PraxisXUiChartMotionPreset, PraxisXUiChartPreset, PraxisXUiChartRefresh, PraxisXUiChartRuntimeHints, PraxisXUiChartSizing, PraxisXUiChartSizingMode, PraxisXUiChartSort, PraxisXUiChartSource, PraxisXUiChartSourceKind, PraxisXUiChartState, PraxisXUiChartStateDescriptor, PraxisXUiChartStatsDistributionMode, PraxisXUiChartStatsOperation, PraxisXUiChartStatsOrderBy, PraxisXUiChartStatsSourceOptions, PraxisXUiChartSurface, PraxisXUiChartSurfaceMode, PraxisXUiChartTextValue, PraxisXUiChartTheme, PraxisXUiChartToggleableFeature };
1852
+ export { AnalyticsChartConfigAdapterService, AnalyticsChartContractService, ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, ChartResourceCapabilityCatalogAdapter, PRAXIS_CHARTS_AUTHORING_MANIFEST, PRAXIS_CHARTS_I18N, PRAXIS_CHART_AUTHORING_COVERAGE, 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_ENGINE_FACTORY, PRAXIS_CHART_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, PRAXIS_X_UI_CHART_AUTHORABLE_VERSION, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, PraxisChartWidgetConfigEditor, PraxisMicroVisualizationComponent, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, isPraxisChartPaletteToken, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartPaletteToken, resolvePraxisChartsText };
1853
+ export type { AnalyticsChartConfigAdapterOptions, AnalyticsChartContractDefinition, AnalyticsChartContractLoadOptions, AnalyticsChartContractLoadResult, AnalyticsChartContractSource, ChartConfigEditorApplyEvent, ChartConfigEditorResetEvent, ChartConfigEditorSaveEvent, ChartContractIssueSeverity, ChartContractValidationIssue, ChartContractValidationResult, ChartEditorEventKey, ChartEditorFieldOption, ChartEditorPreviewPayload, ChartEditorResourceOption, ChartEditorTargetOption, PraxisChartAggregation, PraxisChartAuthoringCoverageMode, PraxisChartAuthoringCoverageOwner, PraxisChartAuthoringCoverageRow, PraxisChartAxisConfig, PraxisChartAxisLabelConfig, PraxisChartAxisPosition, PraxisChartAxisType, PraxisChartBackendPayload, PraxisChartBackendWidgetPayload, PraxisChartCanvasItem, PraxisChartCartesianSeries, PraxisChartConfig, PraxisChartConfigEditorData, PraxisChartCrossFilterEvent, PraxisChartDataRow, PraxisChartDataSource, PraxisChartDeclarativeEventAction, PraxisChartDistributionStatsRequest, PraxisChartDrillDownEvent, PraxisChartEmptyStateConfig, PraxisChartEngineAdapter, PraxisChartEngineFactory, PraxisChartEngineRenderPayload, PraxisChartErrorStateConfig, PraxisChartGroupByStatsRequest, PraxisChartInteractionConfig, PraxisChartLegendConfig, PraxisChartLoadState, PraxisChartLocalDataSource, PraxisChartMetricConfig, PraxisChartMotionConfig, PraxisChartMotionPreset, PraxisChartPaletteToken, PraxisChartPieSlice, PraxisChartPointActionEvent, PraxisChartPointEvent, PraxisChartPrimitive, PraxisChartQueryConfig, PraxisChartQueryContext, PraxisChartQueryMetricConfig, PraxisChartQueryRequestEvent, PraxisChartRemoteDataResolver, PraxisChartRemoteDataResolverResult, PraxisChartRemoteDataSource, PraxisChartSchemaMeta, PraxisChartSelectionEvent, PraxisChartSeriesConfig, PraxisChartSeriesLabelConfig, PraxisChartSizingConfig, PraxisChartSizingMode, PraxisChartStateConfig, PraxisChartStatsDistributionMode, PraxisChartStatsGranularity, PraxisChartStatsMetricOperation, PraxisChartStatsMetricRequest, PraxisChartStatsOperation, PraxisChartStatsOrderBy, PraxisChartStatsRequest, PraxisChartSurfaceConfig, PraxisChartSurfaceMode, PraxisChartThemeConfig, PraxisChartThemeVariant, PraxisChartTimeSeriesStatsRequest, PraxisChartTooltipConfig, PraxisChartTransformedData, PraxisChartType, PraxisChartWidgetEditorContext, PraxisChartWidgetEditorInputs, PraxisChartWidgetEditorValue, PraxisChartWidgetInstance, PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema, PraxisChartsI18nOptions, PraxisChartsProviderOptions, PraxisChartsText, PraxisXUiChartAggregation, PraxisXUiChartAggregationConfig, PraxisXUiChartComparisonPeriod, PraxisXUiChartComparisonPeriodMode, PraxisXUiChartComparisonPeriodPreset, PraxisXUiChartContract, PraxisXUiChartDimension, PraxisXUiChartEventAction, PraxisXUiChartEvents, PraxisXUiChartFilter, PraxisXUiChartKind, PraxisXUiChartMetric, PraxisXUiChartMotion, PraxisXUiChartMotionPreset, PraxisXUiChartPreset, PraxisXUiChartRefresh, PraxisXUiChartRuntimeHints, PraxisXUiChartSizing, PraxisXUiChartSizingMode, PraxisXUiChartSort, PraxisXUiChartSource, PraxisXUiChartSourceKind, PraxisXUiChartState, PraxisXUiChartStateDescriptor, PraxisXUiChartStatsDistributionMode, PraxisXUiChartStatsOperation, PraxisXUiChartStatsOrderBy, PraxisXUiChartStatsSourceOptions, PraxisXUiChartSurface, PraxisXUiChartSurfaceMode, PraxisXUiChartTextValue, PraxisXUiChartTheme, PraxisXUiChartToggleableFeature };