@praxisui/charts 9.0.0-beta.73 → 9.0.0-beta.74

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,8 +1,8 @@
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, PraxisPresentationVisualizationConfig, PraxisPresentationVisualizationPoint, PraxisPresentationVisualizationSegment, PraxisPresentationVisualizationThreshold, 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, ApiUrlConfig, PraxisI18nService, PraxisAnalyticsProjection, AnalyticsSchemaContractService, AnalyticsPresentationResolver, WidgetPageDefinition, SettingsValueProvider, ComponentConfigEditorContextResult, ResourceCapabilitySnapshot, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, ComponentAuthoringManifest, ComponentDocMeta } from '@praxisui/core';
6
6
  import { Observable, BehaviorSubject } from 'rxjs';
7
7
  import { HttpClient } from '@angular/common/http';
8
8
 
@@ -30,7 +30,7 @@ interface PraxisChartQueryMetricConfig {
30
30
  aggregation?: 'sum' | 'count' | 'distinct-count' | 'avg' | 'min' | 'max';
31
31
  alias?: string;
32
32
  }
33
- type PraxisChartStatsOperation = 'group-by' | 'timeseries' | 'distribution';
33
+ type PraxisChartStatsOperation = 'group-by' | 'timeseries' | 'distribution' | 'comparison';
34
34
  type PraxisChartStatsDistributionMode = 'terms' | 'histogram';
35
35
  type PraxisChartStatsOrderBy = 'key-asc' | 'key-desc' | 'value-asc' | 'value-desc';
36
36
  type PraxisChartStatsGranularity = 'day' | 'week' | 'month';
@@ -68,7 +68,7 @@ interface PraxisChartDistributionStatsRequest {
68
68
  limit?: number;
69
69
  orderBy?: 'KEY_ASC' | 'KEY_DESC' | 'VALUE_ASC' | 'VALUE_DESC';
70
70
  }
71
- type PraxisChartStatsRequest = PraxisChartGroupByStatsRequest | PraxisChartTimeSeriesStatsRequest | PraxisChartDistributionStatsRequest;
71
+ type PraxisChartStatsRequest = PraxisChartGroupByStatsRequest | PraxisChartTimeSeriesStatsRequest | PraxisChartDistributionStatsRequest | PraxisAnalyticsComparisonStatsRequest;
72
72
  interface PraxisChartQueryConfig {
73
73
  sourceKind?: 'praxis.stats';
74
74
  statsOperation?: PraxisChartStatsOperation;
@@ -98,16 +98,7 @@ interface PraxisChartRemoteDataSource {
98
98
  }
99
99
  type PraxisChartDataSource = PraxisChartLocalDataSource | PraxisChartRemoteDataSource;
100
100
 
101
- interface PraxisChartQueryContext {
102
- filters?: Record<string, unknown> | null;
103
- sort?: string[] | null;
104
- limit?: number | null;
105
- page?: {
106
- index?: number | null;
107
- size?: number | null;
108
- } | null;
109
- meta?: Record<string, unknown> | null;
110
- }
101
+ type PraxisChartQueryContext = PraxisDataQueryContext;
111
102
  type PraxisChartLoadState = 'idle' | 'loading' | 'ready' | 'empty' | 'error';
112
103
  interface PraxisChartInteractionConfig {
113
104
  pointClick?: boolean;
@@ -129,8 +120,17 @@ interface PraxisChartDeclarativeEventAction {
129
120
  target?: string;
130
121
  mapping?: Record<string, string>;
131
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
+ }
132
131
  interface PraxisChartSelectionEvent extends PraxisChartPointEvent {
133
132
  selected: boolean;
133
+ mode: 'single';
134
134
  filters: Record<string, unknown>;
135
135
  action?: PraxisChartDeclarativeEventAction;
136
136
  }
@@ -141,6 +141,14 @@ interface PraxisChartCrossFilterEvent {
141
141
  action?: PraxisChartDeclarativeEventAction;
142
142
  source: PraxisChartSelectionEvent;
143
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
+ }
144
152
  interface PraxisChartQueryRequestEvent {
145
153
  chartId?: string;
146
154
  dataSource: Extract<PraxisChartDataSource, {
@@ -265,6 +273,7 @@ interface PraxisChartConfig {
265
273
  preferredLoadState?: Extract<PraxisChartLoadState, 'idle' | 'loading' | 'ready' | 'empty' | 'error'>;
266
274
  }
267
275
 
276
+ declare const PRAXIS_X_UI_CHART_AUTHORABLE_VERSION: "0.1.0";
268
277
  type PraxisXUiChartKind = 'bar' | 'combo' | 'horizontal-bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar' | 'stacked-area' | 'scatter';
269
278
  type PraxisXUiChartPreset = 'kpi-trend' | 'comparison' | 'distribution' | 'ranking' | 'composition' | 'hierarchical-drill-down';
270
279
  type PraxisXUiChartTextValue = string | {
@@ -323,6 +332,7 @@ interface PraxisXUiChartRefresh {
323
332
  }
324
333
  interface PraxisXUiChartSource {
325
334
  kind: PraxisXUiChartSourceKind;
335
+ /** Canonical operational resource path. Resource keys are discovery identities and must be resolved before persistence. */
326
336
  resource?: string;
327
337
  operation?: PraxisXUiChartStatsOperation;
328
338
  options?: PraxisXUiChartStatsSourceOptions;
@@ -413,6 +423,7 @@ interface ChartEditorResourceOption {
413
423
  label: string;
414
424
  path: string;
415
425
  description?: string;
426
+ operations?: PraxisXUiChartStatsOperation[];
416
427
  }
417
428
  interface ChartEditorFieldOption {
418
429
  field: string;
@@ -421,36 +432,42 @@ interface ChartEditorFieldOption {
421
432
  aggregable?: boolean;
422
433
  filterable?: boolean;
423
434
  roles?: Array<'dimension' | 'metric' | 'time'>;
435
+ resourceIds?: string[];
436
+ resourcePaths?: string[];
437
+ operations?: PraxisXUiChartStatsOperation[];
438
+ distributionModes?: PraxisXUiChartStatsDistributionMode[];
439
+ aggregations?: PraxisXUiChartAggregation[];
424
440
  }
441
+ type ChartEditorEventKey = 'pointClick' | 'selectionChange' | 'drillDown' | 'crossFilter';
425
442
  interface ChartEditorTargetOption {
426
443
  id: string;
427
444
  label: string;
428
445
  kind?: 'widget' | 'route' | 'panel' | 'event';
446
+ actions?: Array<PraxisXUiChartEventAction['action']>;
447
+ /**
448
+ * Canonical chart events whose exact composition links govern this target.
449
+ *
450
+ * Omission is reserved for legacy/manual host catalogs. Context-resolved
451
+ * catalogs always declare at least one event and therefore fail closed.
452
+ */
453
+ events?: ChartEditorEventKey[];
429
454
  }
430
455
 
431
- type PraxisDataQueryContextBridge = {
432
- filters?: Record<string, unknown> | null;
433
- sort?: string[] | null;
434
- limit?: number | null;
435
- page?: {
436
- index?: number | null;
437
- size?: number | null;
438
- } | null;
439
- meta?: Record<string, unknown> | null;
440
- };
441
456
  declare class PraxisChartComponent {
442
457
  readonly config: _angular_core.InputSignal<PraxisChartConfig>;
443
458
  readonly data: _angular_core.InputSignal<PraxisChartDataRow[] | null>;
444
459
  readonly chartDocument: _angular_core.InputSignal<PraxisXUiChartContract | null>;
445
460
  readonly filterCriteria: _angular_core.InputSignal<Record<string, unknown> | null>;
446
- readonly queryContext: _angular_core.InputSignal<PraxisDataQueryContextBridge | null>;
461
+ readonly queryContext: _angular_core.InputSignal<PraxisDataQueryContext | null>;
447
462
  readonly remoteDataResolver: _angular_core.InputSignal<PraxisChartRemoteDataResolver | null>;
448
463
  readonly enableCustomization: _angular_core.InputSignalWithTransform<boolean, unknown>;
449
464
  readonly availableResources: _angular_core.InputSignal<readonly ChartEditorResourceOption[]>;
450
465
  readonly availableFields: _angular_core.InputSignal<readonly ChartEditorFieldOption[]>;
451
466
  readonly availableTargets: _angular_core.InputSignal<readonly ChartEditorTargetOption[]>;
452
467
  readonly pointClick: _angular_core.OutputEmitterRef<PraxisChartPointEvent>;
468
+ readonly pointAction: _angular_core.OutputEmitterRef<PraxisChartPointActionEvent>;
453
469
  readonly selectionChange: _angular_core.OutputEmitterRef<PraxisChartSelectionEvent>;
470
+ readonly drillDown: _angular_core.OutputEmitterRef<PraxisChartDrillDownEvent>;
454
471
  readonly crossFilter: _angular_core.OutputEmitterRef<PraxisChartCrossFilterEvent>;
455
472
  readonly queryRequest: _angular_core.OutputEmitterRef<PraxisChartQueryRequestEvent>;
456
473
  readonly loadStateChange: _angular_core.OutputEmitterRef<PraxisChartLoadState>;
@@ -469,6 +486,8 @@ declare class PraxisChartComponent {
469
486
  private readonly resizeObserver;
470
487
  private resizeObserverHost;
471
488
  private readonly shellObserver;
489
+ private readonly themeObserver;
490
+ private readonly inheritedTheme;
472
491
  private readonly currentLoadState;
473
492
  private readonly remoteResolvedData;
474
493
  private readonly remoteRuntimeState;
@@ -484,7 +503,10 @@ declare class PraxisChartComponent {
484
503
  private previousRemoteSignature;
485
504
  private previousRemoteDataResolver;
486
505
  private previousDocumentSignature;
506
+ private inheritedThemeSignature;
487
507
  private editorSessionSubscriptions;
508
+ private remoteRequestSubscription;
509
+ private remoteRequestSequence;
488
510
  readonly effectiveConfig: _angular_core.Signal<PraxisChartConfig>;
489
511
  readonly resolvedData: _angular_core.Signal<PraxisChartDataRow[]>;
490
512
  readonly resolvedHeight: _angular_core.Signal<string>;
@@ -520,8 +542,15 @@ declare class PraxisChartComponent {
520
542
  private toCssSize;
521
543
  private toCssAspectRatio;
522
544
  private buildRemoteSignature;
545
+ private cancelRemoteDataRequest;
523
546
  private clearEditorSessionSubscriptions;
524
547
  private observeShellSizingContext;
548
+ private observeThemeContext;
549
+ private syncInheritedTheme;
550
+ private isThemeVariant;
551
+ private applyInheritedTheme;
552
+ private cloneTheme;
553
+ private mergeOptionalThemeObject;
525
554
  private shouldFillShellContainer;
526
555
  private scheduleResizeAfterShellModeChange;
527
556
  private scheduleEngineResize;
@@ -529,7 +558,7 @@ declare class PraxisChartComponent {
529
558
  private cancelScheduledRender;
530
559
  private cancelScheduledResize;
531
560
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartComponent, never>;
532
- 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>;
561
+ 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>;
533
562
  }
534
563
 
535
564
  interface BulletBand {
@@ -750,11 +779,13 @@ interface ChartContractValidationResult {
750
779
 
751
780
  declare class ChartContractValidationService {
752
781
  validate(document: PraxisXUiChartContract): ChartContractValidationResult;
782
+ private validateVersion;
753
783
  private validateSource;
754
784
  private validateTheme;
755
785
  private validateMetrics;
756
786
  private validateSizing;
757
787
  private validateKinds;
788
+ private validateDistribution;
758
789
  private validateEvents;
759
790
  private validateEventAction;
760
791
  private error;
@@ -835,6 +866,13 @@ declare class PraxisChartDataTransformerService {
835
866
  private transformCartesian;
836
867
  private transformPie;
837
868
  private buildCartesianSeries;
869
+ private buildCategoryBuckets;
870
+ private resolveCategoryIdentity;
871
+ private resolveCanonicalTimeCoordinate;
872
+ private usesCanonicalTimeCoordinates;
873
+ private extractTimeCoordinate;
874
+ private resolveTimePresentationLabel;
875
+ private typedIdentity;
838
876
  private buildPointData;
839
877
  private hasPointValue;
840
878
  private resolveCartesianSeriesType;
@@ -848,19 +886,9 @@ declare class PraxisChartDataTransformerService {
848
886
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartDataTransformerService>;
849
887
  }
850
888
 
851
- declare class PraxisChartMetadataRegistrationService {
852
- private readonly registry;
853
- private registered;
854
- constructor(registry: ComponentMetadataRegistry);
855
- ensureRegistered(): void;
856
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartMetadataRegistrationService, never>;
857
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartMetadataRegistrationService>;
858
- }
859
-
860
889
  declare class PraxisChartSchemaMapperService {
861
- private readonly metadataRegistration;
862
890
  private readonly canonicalContractMapper;
863
- constructor(metadataRegistration: PraxisChartMetadataRegistrationService, canonicalContractMapper: PraxisChartCanonicalContractMapperService);
891
+ constructor(canonicalContractMapper: PraxisChartCanonicalContractMapperService);
864
892
  resolve(input: PraxisChartWidgetLike, defaults?: {
865
893
  key?: string;
866
894
  canvasItem?: PraxisChartCanvasItem;
@@ -905,6 +933,7 @@ declare class PraxisChartStatsApiService {
905
933
  private resolveCategoryField;
906
934
  private resolveMetricBindings;
907
935
  private projectMetricValues;
936
+ private projectComparisonMetricValues;
908
937
  private buildStatsUrl;
909
938
  private buildDefaultApiBase;
910
939
  private normalizePath;
@@ -921,7 +950,9 @@ interface AnalyticsChartConfigAdapterOptions {
921
950
  height?: number | string;
922
951
  }
923
952
  declare class AnalyticsChartConfigAdapterService {
953
+ private readonly i18n?;
924
954
  private readonly statsBuilder;
955
+ constructor(i18n?: PraxisI18nService | undefined);
925
956
  toPraxisChartConfig(projection: PraxisAnalyticsProjection, options?: AnalyticsChartConfigAdapterOptions): PraxisChartConfig;
926
957
  private buildAxes;
927
958
  private buildSeries;
@@ -930,7 +961,9 @@ declare class AnalyticsChartConfigAdapterService {
930
961
  private mapAggregation;
931
962
  private mapExecutionMetrics;
932
963
  private getDisplayMetrics;
933
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnalyticsChartConfigAdapterService, never>;
964
+ private comparisonMetricField;
965
+ private comparisonPeriodLabel;
966
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnalyticsChartConfigAdapterService, [{ optional: true; }]>;
934
967
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AnalyticsChartConfigAdapterService>;
935
968
  }
936
969
 
@@ -1008,9 +1041,9 @@ declare class PraxisChartCompositionShowcaseComponent {
1008
1041
  protected readonly widgetPage: _angular_core.Signal<{
1009
1042
  composition?: _praxisui_core.WidgetPageCompositionDefinition | undefined;
1010
1043
  state?: _praxisui_core.WidgetPageStateInput | undefined;
1011
- canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1012
- context?: Record<string, any> | undefined;
1013
1044
  widgets: _praxisui_core.WidgetInstance[];
1045
+ context?: Record<string, any> | undefined;
1046
+ canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1014
1047
  layout?: _praxisui_core.WidgetPageLayout | undefined;
1015
1048
  layoutPreset?: string | undefined;
1016
1049
  layoutPresetOptions?: Record<string, any> | undefined;
@@ -1022,9 +1055,9 @@ declare class PraxisChartCompositionShowcaseComponent {
1022
1055
  protected readonly canvasPage: _angular_core.Signal<({
1023
1056
  composition?: _praxisui_core.WidgetPageCompositionDefinition | undefined;
1024
1057
  state?: _praxisui_core.WidgetPageStateInput | undefined;
1025
- canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1026
- context?: Record<string, any> | undefined;
1027
1058
  widgets: _praxisui_core.WidgetInstance[];
1059
+ context?: Record<string, any> | undefined;
1060
+ canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1028
1061
  layout?: _praxisui_core.WidgetPageLayout | undefined;
1029
1062
  layoutPreset?: string | undefined;
1030
1063
  layoutPresetOptions?: Record<string, any> | undefined;
@@ -1067,9 +1100,9 @@ declare class PraxisChartCompositionShowcaseComponent {
1067
1100
  protected readonly resolvedPage: _angular_core.Signal<{
1068
1101
  composition?: _praxisui_core.WidgetPageCompositionDefinition | undefined;
1069
1102
  state?: _praxisui_core.WidgetPageStateInput | undefined;
1070
- canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1071
- context?: Record<string, any> | undefined;
1072
1103
  widgets: _praxisui_core.WidgetInstance[];
1104
+ context?: Record<string, any> | undefined;
1105
+ canvas?: _praxisui_core.WidgetPageCanvasLayout | undefined;
1073
1106
  layout?: _praxisui_core.WidgetPageLayout | undefined;
1074
1107
  layoutPreset?: string | undefined;
1075
1108
  layoutPresetOptions?: Record<string, any> | undefined;
@@ -1126,14 +1159,15 @@ interface ChartConfigEditorResetEvent {
1126
1159
  type ChartEditorSection = 'general' | 'data' | 'analytics' | 'appearance' | 'motion' | 'events' | 'preview';
1127
1160
  type ChartFeatureKey = 'legend' | 'labels' | 'tooltip';
1128
1161
  type ChartStateKey = 'empty' | 'loading' | 'error';
1129
- type ChartEventKey = 'pointClick' | 'selectionChange' | 'drillDown' | 'crossFilter';
1162
+ type ChartEventKey = ChartEditorEventKey;
1163
+ type ChartFieldRole = 'dimension' | 'metric';
1130
1164
  declare class PraxisChartConfigEditor implements SettingsValueProvider {
1131
1165
  readonly documentInput: _angular_core.InputSignal<PraxisXUiChartContract | null>;
1132
1166
  readonly modeInput: _angular_core.InputSignal<"create" | "edit">;
1133
1167
  readonly readonlyInput: _angular_core.InputSignal<boolean>;
1134
- readonly availableResourcesInput: _angular_core.InputSignal<ChartEditorResourceOption[]>;
1135
- readonly availableFieldsInput: _angular_core.InputSignal<ChartEditorFieldOption[]>;
1136
- readonly availableTargetsInput: _angular_core.InputSignal<ChartEditorTargetOption[]>;
1168
+ readonly availableResourcesInput: _angular_core.InputSignal<ChartEditorResourceOption[] | null>;
1169
+ readonly availableFieldsInput: _angular_core.InputSignal<ChartEditorFieldOption[] | null>;
1170
+ readonly availableTargetsInput: _angular_core.InputSignal<ChartEditorTargetOption[] | null>;
1137
1171
  readonly apply: _angular_core.OutputEmitterRef<ChartConfigEditorApplyEvent>;
1138
1172
  readonly save: _angular_core.OutputEmitterRef<ChartConfigEditorSaveEvent>;
1139
1173
  readonly resetChange: _angular_core.OutputEmitterRef<ChartConfigEditorResetEvent>;
@@ -1168,13 +1202,25 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1168
1202
  private readonly normalizer;
1169
1203
  private readonly validator;
1170
1204
  private readonly previewMapper;
1205
+ private readonly contextResolver;
1171
1206
  private readonly i18n;
1172
1207
  private readonly currentDocument;
1173
1208
  private readonly initialDocument;
1209
+ private readonly resolvedResources;
1210
+ private readonly resolvedFields;
1211
+ private readonly catalogResolutionDiagnostics;
1174
1212
  private lastExternalSignature;
1213
+ private lastCatalogInputSignature;
1214
+ private catalogResolutionRequestId;
1215
+ private readonly baseAvailableResources;
1216
+ private readonly baseAvailableFields;
1175
1217
  readonly normalizedDocument: _angular_core.Signal<PraxisXUiChartContract>;
1176
- readonly validation: _angular_core.Signal<_praxisui_charts.ChartContractValidationResult>;
1218
+ readonly validation: _angular_core.Signal<{
1219
+ valid: boolean;
1220
+ issues: ChartContractValidationIssue[];
1221
+ }>;
1177
1222
  readonly issues: _angular_core.Signal<ChartContractValidationIssue[]>;
1223
+ readonly catalogIssues: _angular_core.Signal<ChartContractValidationIssue[]>;
1178
1224
  readonly availableResources: _angular_core.Signal<ChartEditorResourceOption[]>;
1179
1225
  readonly availableFields: _angular_core.Signal<ChartEditorFieldOption[]>;
1180
1226
  readonly availableTargets: _angular_core.Signal<ChartEditorTargetOption[]>;
@@ -1233,6 +1279,10 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1233
1279
  subtitleValue(): string;
1234
1280
  resourceValue(): string;
1235
1281
  resourceOptions(): ChartEditorResourceOption[];
1282
+ selectedResourceOption(): ChartEditorResourceOption | undefined;
1283
+ operationOptions(): PraxisXUiChartStatsOperation[];
1284
+ resourceCatalogUnavailable(): boolean;
1285
+ operationCatalogUnavailable(): boolean;
1236
1286
  granularityValue(): typeof this.timeGranularities[number];
1237
1287
  fillGapsValue(): boolean;
1238
1288
  distributionModeValue(): PraxisXUiChartStatsDistributionMode;
@@ -1253,11 +1303,14 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1253
1303
  stateDescription(stateKey: ChartStateKey): string;
1254
1304
  eventAction(eventKey: ChartEventKey): PraxisXUiChartEventAction['action'] | '';
1255
1305
  eventTarget(eventKey: ChartEventKey): string;
1256
- targetOptions(): ChartEditorTargetOption[];
1306
+ targetOptions(action?: PraxisXUiChartEventAction['action'] | '', eventKey?: ChartEventKey): ChartEditorTargetOption[];
1307
+ targetCatalogUnavailable(action?: PraxisXUiChartEventAction['action'] | '', eventKey?: ChartEventKey): boolean;
1257
1308
  eventMappingText(eventKey: ChartEventKey): string;
1258
1309
  dimensions(): PraxisXUiChartDimension[];
1259
1310
  metrics(): PraxisXUiChartMetric[];
1260
- fieldOptions(role: 'dimension' | 'metric'): ChartEditorFieldOption[];
1311
+ fieldOptions(role: ChartFieldRole): ChartEditorFieldOption[];
1312
+ metricAggregationOptions(fieldName: string | undefined): PraxisXUiChartAggregation[];
1313
+ fieldOptionLabel(field: ChartEditorFieldOption): string;
1261
1314
  showMetricAxisControls(): boolean;
1262
1315
  showMetricSeriesKindControls(): boolean;
1263
1316
  showTimeseriesControls(): boolean;
@@ -1271,6 +1324,18 @@ declare class PraxisChartConfigEditor implements SettingsValueProvider {
1271
1324
  private patchStateDescriptor;
1272
1325
  private patchEvent;
1273
1326
  private parseMappingText;
1327
+ private validateCatalogContext;
1328
+ private fieldMatchesSelectedResource;
1329
+ private fieldMatchesResourceOption;
1330
+ private resolveSelectedResource;
1331
+ private resourceIdentityMatches;
1332
+ private normalizeResourcePath;
1333
+ private toCatalogIssue;
1334
+ private catalogDiagnosticMessage;
1335
+ private fieldMatchesOperation;
1336
+ private fieldMatchesDistributionMode;
1337
+ private fieldMatchesRole;
1338
+ private catalogError;
1274
1339
  private normalizeSizingSizeInput;
1275
1340
  private mergeTheme;
1276
1341
  private createApplyPayload;
@@ -1289,40 +1354,377 @@ interface PraxisChartWidgetEditorInputs {
1289
1354
  availableTargets?: ChartEditorTargetOption[];
1290
1355
  [key: string]: unknown;
1291
1356
  }
1357
+ interface PraxisChartWidgetEditorContext {
1358
+ availableResources?: ChartEditorResourceOption[];
1359
+ availableFields?: ChartEditorFieldOption[];
1360
+ availableTargets?: ChartEditorTargetOption[];
1361
+ [key: string]: unknown;
1362
+ }
1292
1363
  interface PraxisChartWidgetEditorValue {
1293
1364
  inputs: PraxisChartWidgetEditorInputs;
1294
1365
  }
1295
- declare class PraxisChartWidgetConfigEditor implements SettingsValueProvider, AfterViewInit, OnChanges, OnDestroy {
1366
+ type ChartWidgetContextDiagnostic = NonNullable<ComponentConfigEditorContextResult['diagnostics']>[number];
1367
+ declare class PraxisChartWidgetConfigEditor implements SettingsValueProvider, OnChanges, OnDestroy {
1368
+ private readonly i18n;
1296
1369
  inputs: PraxisChartWidgetEditorInputs | null;
1297
- chartEditor?: PraxisChartConfigEditor;
1370
+ context: PraxisChartWidgetEditorContext | null;
1371
+ contextDiagnostics: ChartWidgetContextDiagnostic[];
1372
+ private activeChartEditor?;
1373
+ private chartEditorSubscription;
1374
+ set chartEditor(value: PraxisChartConfigEditor | undefined);
1375
+ get chartEditor(): PraxisChartConfigEditor | undefined;
1298
1376
  readonly isDirty$: BehaviorSubject<boolean>;
1299
1377
  readonly isValid$: BehaviorSubject<boolean>;
1300
1378
  readonly isBusy$: BehaviorSubject<boolean>;
1301
- private readonly subscription;
1379
+ private chartEditorDirty;
1302
1380
  private chartEditorValid;
1303
1381
  private queryContextDirty;
1382
+ private baselineQueryContextText;
1304
1383
  queryContextText: string;
1305
1384
  queryContextError: string;
1306
1385
  get chartDocument(): PraxisXUiChartContract | null;
1307
1386
  get availableResources(): ChartEditorResourceOption[];
1308
1387
  get availableFields(): ChartEditorFieldOption[];
1309
1388
  get availableTargets(): ChartEditorTargetOption[];
1310
- ngAfterViewInit(): void;
1311
1389
  ngOnChanges(changes: SimpleChanges): void;
1312
1390
  ngOnDestroy(): void;
1313
1391
  setQueryContextText(value: string): void;
1314
1392
  getSettingsValue(): PraxisChartWidgetEditorValue;
1315
1393
  onSave(): PraxisChartWidgetEditorValue;
1316
1394
  reset(): void;
1395
+ t(key: string, fallback: string): string;
1396
+ contextDiagnosticText(diagnostic: ChartWidgetContextDiagnostic): string;
1317
1397
  private buildValue;
1398
+ private bindChartEditor;
1399
+ private getChartDocumentForApply;
1400
+ private getChartDocumentForSave;
1401
+ private rebaseQueryContext;
1402
+ private updateDirty;
1318
1403
  private updateValidity;
1319
1404
  private formatQueryContext;
1320
1405
  private validateQueryContextText;
1321
1406
  private parseQueryContextText;
1322
1407
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartWidgetConfigEditor, never>;
1323
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartWidgetConfigEditor, "praxis-chart-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; }, {}, never, never, true, never>;
1408
+ 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>;
1324
1409
  }
1325
1410
 
1411
+ type PraxisChartAuthoringCoverageMode = 'visual-editable' | 'preserved-only' | 'ai-authorable' | 'advanced-structured' | 'derived-readonly' | 'unsupported';
1412
+ type PraxisChartAuthoringCoverageOwner = 'chart-config-editor' | 'chart-widget-config-editor' | 'chart-contract-normalizer' | 'chart-runtime-mapper' | 'chart-ai-manifest' | 'settings-panel-host' | 'backend-capabilities';
1413
+ interface PraxisChartAuthoringCoverageRow {
1414
+ path: string;
1415
+ mode: PraxisChartAuthoringCoverageMode;
1416
+ owner: PraxisChartAuthoringCoverageOwner;
1417
+ rationale: string;
1418
+ proof: string[];
1419
+ }
1420
+ declare const PRAXIS_CHART_AUTHORING_COVERAGE: readonly [{
1421
+ readonly path: "chartDocument";
1422
+ readonly mode: "advanced-structured";
1423
+ readonly owner: "chart-ai-manifest";
1424
+ readonly rationale: "Whole-document authoring is allowed for AI and structured import, but the visual editor must not become a raw JSON primary path.";
1425
+ readonly proof: ["praxis-charts-authoring-manifest.spec.ts", "praxis-chart-config-editor.spec.ts"];
1426
+ }, {
1427
+ readonly path: "chartDocument.version";
1428
+ readonly mode: "derived-readonly";
1429
+ readonly owner: "chart-contract-normalizer";
1430
+ readonly rationale: "Version is canonical schema governance and is normalized to the authorable x-ui.chart version.";
1431
+ readonly proof: ["chart-authoring-coverage.matrix.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1432
+ }, {
1433
+ readonly path: "chartDocument.kind";
1434
+ readonly mode: "visual-editable";
1435
+ readonly owner: "chart-config-editor";
1436
+ readonly rationale: "Chart kind is a first-class visual decision with runtime mapper and AI manifest parity.";
1437
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1438
+ }, {
1439
+ readonly path: "chartDocument.preset";
1440
+ readonly mode: "preserved-only";
1441
+ readonly owner: "chart-contract-normalizer";
1442
+ readonly rationale: "Preset is semantic starter intent; the current editor preserves it instead of presenting it as a misleading post-hoc visual control.";
1443
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1444
+ }, {
1445
+ readonly path: "chartDocument.chartId";
1446
+ readonly mode: "visual-editable";
1447
+ readonly owner: "chart-config-editor";
1448
+ readonly rationale: "Stable chart identity is editable for host/runtime diagnostics and event correlation.";
1449
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1450
+ }, {
1451
+ readonly path: "chartDocument.orientation";
1452
+ readonly mode: "ai-authorable";
1453
+ readonly owner: "chart-ai-manifest";
1454
+ readonly rationale: "Orientation is compiled by chart type and axis decisions; the visual editor currently preserves it without a separate control.";
1455
+ readonly proof: ["praxis-charts-authoring-manifest.spec.ts", "praxis-chart-config-editor.spec.ts"];
1456
+ }, {
1457
+ readonly path: "chartDocument.title";
1458
+ readonly mode: "visual-editable";
1459
+ readonly owner: "chart-config-editor";
1460
+ readonly rationale: "Title is primary presentation copy in the editor and runtime preview.";
1461
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1462
+ }, {
1463
+ readonly path: "chartDocument.subtitle";
1464
+ readonly mode: "visual-editable";
1465
+ readonly owner: "chart-config-editor";
1466
+ readonly rationale: "Subtitle is presentation copy edited alongside title.";
1467
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1468
+ }, {
1469
+ readonly path: "chartDocument.sizing";
1470
+ readonly mode: "visual-editable";
1471
+ readonly owner: "chart-config-editor";
1472
+ readonly rationale: "Sizing controls are canonical runtime layout decisions; deprecated height is normalized into sizing.height.";
1473
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1474
+ }, {
1475
+ readonly path: "chartDocument.height";
1476
+ readonly mode: "derived-readonly";
1477
+ readonly owner: "chart-contract-normalizer";
1478
+ readonly rationale: "Deprecated compatibility input is consumed and cleared in favor of chartDocument.sizing.height.";
1479
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1480
+ }, {
1481
+ readonly path: "chartDocument.source.kind";
1482
+ readonly mode: "visual-editable";
1483
+ readonly owner: "chart-config-editor";
1484
+ readonly rationale: "Source kind selects local derived data versus governed praxis.stats binding.";
1485
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-chart-widget-config-editor.spec.ts"];
1486
+ }, {
1487
+ readonly path: "chartDocument.source.resource";
1488
+ readonly mode: "visual-editable";
1489
+ readonly owner: "chart-config-editor";
1490
+ readonly rationale: "Resource selection is governed by catalog options and fails closed when unavailable.";
1491
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1492
+ }, {
1493
+ readonly path: "chartDocument.source.operation";
1494
+ readonly mode: "visual-editable";
1495
+ readonly owner: "chart-config-editor";
1496
+ readonly rationale: "Stats operation drives field compatibility, runtime request semantics and specialized options.";
1497
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1498
+ }, {
1499
+ readonly path: "chartDocument.source.options.granularity";
1500
+ readonly mode: "visual-editable";
1501
+ readonly owner: "chart-config-editor";
1502
+ readonly rationale: "Timeseries granularity is visually edited with backend-supported values only.";
1503
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1504
+ }, {
1505
+ readonly path: "chartDocument.source.options.fillGaps";
1506
+ readonly mode: "visual-editable";
1507
+ readonly owner: "chart-config-editor";
1508
+ readonly rationale: "Timeseries gap filling is a supported runtime option surfaced in the editor.";
1509
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1510
+ }, {
1511
+ readonly path: "chartDocument.source.options.mode";
1512
+ readonly mode: "visual-editable";
1513
+ readonly owner: "chart-config-editor";
1514
+ readonly rationale: "Distribution mode is visually edited for terms versus histogram materialization.";
1515
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1516
+ }, {
1517
+ readonly path: "chartDocument.source.options.bucketSize";
1518
+ readonly mode: "visual-editable";
1519
+ readonly owner: "chart-config-editor";
1520
+ readonly rationale: "Histogram bucket size is a supported distribution option.";
1521
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1522
+ }, {
1523
+ readonly path: "chartDocument.source.options.bucketCount";
1524
+ readonly mode: "visual-editable";
1525
+ readonly owner: "chart-config-editor";
1526
+ readonly rationale: "Histogram bucket count is a supported distribution option.";
1527
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1528
+ }, {
1529
+ readonly path: "chartDocument.source.options.orderBy";
1530
+ readonly mode: "preserved-only";
1531
+ readonly owner: "chart-contract-normalizer";
1532
+ readonly rationale: "Ordering is runtime-supported but not yet exposed as a primary visual control; preserving avoids silent loss.";
1533
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1534
+ }, {
1535
+ readonly path: "chartDocument.source.options.limit";
1536
+ readonly mode: "preserved-only";
1537
+ readonly owner: "chart-contract-normalizer";
1538
+ readonly rationale: "Source-level result limit remains governed by document/runtime semantics until a ranked visual control exists.";
1539
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1540
+ }, {
1541
+ readonly path: "chartDocument.source.refresh";
1542
+ readonly mode: "preserved-only";
1543
+ readonly owner: "chart-contract-normalizer";
1544
+ readonly rationale: "Refresh policy belongs to runtime/backend cadence governance; current editor preserves it.";
1545
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1546
+ }, {
1547
+ readonly path: "chartDocument.dimensions[]";
1548
+ readonly mode: "visual-editable";
1549
+ readonly owner: "chart-config-editor";
1550
+ readonly rationale: "Dimension field and role are visually editable with catalog compatibility checks.";
1551
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1552
+ }, {
1553
+ readonly path: "chartDocument.dimensions[].label";
1554
+ readonly mode: "preserved-only";
1555
+ readonly owner: "chart-contract-normalizer";
1556
+ readonly rationale: "Dimension labels can be authored by AI/imported contracts and must survive visual edits until a governed label control exists.";
1557
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1558
+ }, {
1559
+ readonly path: "chartDocument.dimensions[].format";
1560
+ readonly mode: "preserved-only";
1561
+ readonly owner: "chart-contract-normalizer";
1562
+ readonly rationale: "Dimension formatting is runtime metadata and is preserved while not yet visually edited.";
1563
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1564
+ }, {
1565
+ readonly path: "chartDocument.metrics[]";
1566
+ readonly mode: "visual-editable";
1567
+ readonly owner: "chart-config-editor";
1568
+ readonly rationale: "Metric field, label, aggregation, axis and series kind are core visual analytics controls.";
1569
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1570
+ }, {
1571
+ readonly path: "chartDocument.metrics[].color";
1572
+ readonly mode: "preserved-only";
1573
+ readonly owner: "chart-contract-normalizer";
1574
+ readonly rationale: "Series color is renderer-neutral config but not yet a governed swatch control in the editor.";
1575
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1576
+ }, {
1577
+ readonly path: "chartDocument.metrics[].format";
1578
+ readonly mode: "preserved-only";
1579
+ readonly owner: "chart-contract-normalizer";
1580
+ readonly rationale: "Metric formatting is preserved as runtime presentation metadata until visual format presets are introduced.";
1581
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1582
+ }, {
1583
+ readonly path: "chartDocument.aggregations[]";
1584
+ readonly mode: "ai-authorable";
1585
+ readonly owner: "chart-ai-manifest";
1586
+ readonly rationale: "Aggregation config is a structured analytics contract; visual authoring currently edits metric aggregation instead.";
1587
+ readonly proof: ["chart-authoring-coverage.matrix.spec.ts", "praxis-chart-config-editor.spec.ts"];
1588
+ }, {
1589
+ readonly path: "chartDocument.groupBy[]";
1590
+ readonly mode: "ai-authorable";
1591
+ readonly owner: "chart-ai-manifest";
1592
+ readonly rationale: "Grouping is derivable from dimensions for current visual flows and remains preserved for structured authoring.";
1593
+ readonly proof: ["chart-authoring-coverage.matrix.spec.ts", "praxis-chart-config-editor.spec.ts"];
1594
+ }, {
1595
+ readonly path: "chartDocument.sort[]";
1596
+ readonly mode: "preserved-only";
1597
+ readonly owner: "chart-contract-normalizer";
1598
+ readonly rationale: "Document-level sort is runtime-supported but lacks a governed visual ordering editor.";
1599
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1600
+ }, {
1601
+ readonly path: "chartDocument.filters[]";
1602
+ readonly mode: "preserved-only";
1603
+ readonly owner: "chart-contract-normalizer";
1604
+ readonly rationale: "Static document filters are preserved; dynamic authoring should prefer queryContext and backend capabilities.";
1605
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1606
+ }, {
1607
+ readonly path: "chartDocument.limit";
1608
+ readonly mode: "preserved-only";
1609
+ readonly owner: "chart-contract-normalizer";
1610
+ readonly rationale: "Document-level limit remains a structured runtime constraint until a governed visual control is added.";
1611
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1612
+ }, {
1613
+ readonly path: "chartDocument.legend";
1614
+ readonly mode: "visual-editable";
1615
+ readonly owner: "chart-config-editor";
1616
+ readonly rationale: "Legend visibility is a visual feature toggle and AI manifest operation.";
1617
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1618
+ }, {
1619
+ readonly path: "chartDocument.labels";
1620
+ readonly mode: "visual-editable";
1621
+ readonly owner: "chart-config-editor";
1622
+ readonly rationale: "Data labels are a visual feature toggle in the appearance section.";
1623
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1624
+ }, {
1625
+ readonly path: "chartDocument.tooltip";
1626
+ readonly mode: "visual-editable";
1627
+ readonly owner: "chart-config-editor";
1628
+ readonly rationale: "Tooltip visibility is a visual feature toggle and AI manifest operation.";
1629
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1630
+ }, {
1631
+ readonly path: "chartDocument.theme.palette";
1632
+ readonly mode: "visual-editable";
1633
+ readonly owner: "chart-config-editor";
1634
+ readonly rationale: "Palette token/custom values are visually edited and preserved as renderer-neutral theme contract.";
1635
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1636
+ }, {
1637
+ readonly path: "chartDocument.theme.variant";
1638
+ readonly mode: "visual-editable";
1639
+ readonly owner: "chart-config-editor";
1640
+ readonly rationale: "Theme variant is a visual editor control and runtime presentation decision.";
1641
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-settings-panel.smoke.playwright.spec.ts"];
1642
+ }, {
1643
+ readonly path: "chartDocument.theme.surface.mode";
1644
+ readonly mode: "visual-editable";
1645
+ readonly owner: "chart-config-editor";
1646
+ readonly rationale: "Surface mode is visually edited to align chart containment with host context.";
1647
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1648
+ }, {
1649
+ readonly path: "chartDocument.theme.surface.background";
1650
+ readonly mode: "preserved-only";
1651
+ readonly owner: "chart-contract-normalizer";
1652
+ readonly rationale: "Surface color details are contract-supported but not yet governed by tokenized visual controls.";
1653
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1654
+ }, {
1655
+ readonly path: "chartDocument.theme.surface.borderColor";
1656
+ readonly mode: "preserved-only";
1657
+ readonly owner: "chart-contract-normalizer";
1658
+ readonly rationale: "Surface border color is preserved until a token-aware border editor exists.";
1659
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1660
+ }, {
1661
+ readonly path: "chartDocument.theme.surface.borderWidth";
1662
+ readonly mode: "preserved-only";
1663
+ readonly owner: "chart-contract-normalizer";
1664
+ readonly rationale: "Surface border width is preserved to avoid dropping host-authored surface detail.";
1665
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1666
+ }, {
1667
+ readonly path: "chartDocument.theme.surface.borderRadius";
1668
+ readonly mode: "preserved-only";
1669
+ readonly owner: "chart-contract-normalizer";
1670
+ readonly rationale: "Surface border radius is preserved to avoid dropping host-authored surface detail.";
1671
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1672
+ }, {
1673
+ readonly path: "chartDocument.state.empty";
1674
+ readonly mode: "visual-editable";
1675
+ readonly owner: "chart-config-editor";
1676
+ readonly rationale: "Empty-state title/description are visible runtime presentation copy.";
1677
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1678
+ }, {
1679
+ readonly path: "chartDocument.state.loading";
1680
+ readonly mode: "visual-editable";
1681
+ readonly owner: "chart-config-editor";
1682
+ readonly rationale: "Loading-state title/description are visible runtime presentation copy.";
1683
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1684
+ }, {
1685
+ readonly path: "chartDocument.state.error";
1686
+ readonly mode: "visual-editable";
1687
+ readonly owner: "chart-config-editor";
1688
+ readonly rationale: "Error-state title/description are visible runtime presentation copy.";
1689
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1690
+ }, {
1691
+ readonly path: "chartDocument.events.pointClick";
1692
+ readonly mode: "visual-editable";
1693
+ readonly owner: "chart-config-editor";
1694
+ readonly rationale: "Point click action is configured visually while raw point evidence remains a separate output.";
1695
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1696
+ }, {
1697
+ readonly path: "chartDocument.events.selectionChange";
1698
+ readonly mode: "visual-editable";
1699
+ readonly owner: "chart-config-editor";
1700
+ readonly rationale: "Selection change supports the governed single-selection event contract.";
1701
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1702
+ }, {
1703
+ readonly path: "chartDocument.events.drillDown";
1704
+ readonly mode: "visual-editable";
1705
+ readonly owner: "chart-config-editor";
1706
+ readonly rationale: "Drilldown target and mapping are visually authorable with governed target catalogs.";
1707
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1708
+ }, {
1709
+ readonly path: "chartDocument.events.crossFilter";
1710
+ readonly mode: "visual-editable";
1711
+ readonly owner: "chart-config-editor";
1712
+ readonly rationale: "Cross-filter target and mapping are visually authorable with governed target catalogs.";
1713
+ readonly proof: ["praxis-chart-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1714
+ }, {
1715
+ readonly path: "chartDocument.motion";
1716
+ readonly mode: "visual-editable";
1717
+ readonly owner: "chart-config-editor";
1718
+ readonly rationale: "Motion enablement and preset are visual runtime behavior controls.";
1719
+ readonly proof: ["praxis-chart-config-editor.spec.ts"];
1720
+ }, {
1721
+ readonly path: "queryContext";
1722
+ readonly mode: "advanced-structured";
1723
+ readonly owner: "chart-widget-config-editor";
1724
+ readonly rationale: "Query context is a structured widget runtime input edited as an advanced JSON fallback and validated as object-only.";
1725
+ readonly proof: ["praxis-chart-widget-config-editor.spec.ts", "praxis-charts-authoring-manifest.spec.ts"];
1726
+ }];
1727
+
1326
1728
  interface PraxisChartConfigEditorData {
1327
1729
  chartDocument?: PraxisXUiChartContract;
1328
1730
  document?: PraxisXUiChartContract;
@@ -1354,6 +1756,19 @@ declare class ChartEditorPreviewMapperService {
1354
1756
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartEditorPreviewMapperService>;
1355
1757
  }
1356
1758
 
1759
+ declare class ChartResourceCapabilityCatalogAdapter {
1760
+ toResourceOperations(capabilities: ResourceCapabilitySnapshot | null | undefined): PraxisXUiChartStatsOperation[];
1761
+ toFieldOptions(capabilities: ResourceCapabilitySnapshot | null | undefined, operation?: PraxisXUiChartStatsOperation | null): ChartEditorFieldOption[];
1762
+ private toFieldOptionsForRoles;
1763
+ private resolveDimensionOperations;
1764
+ private resolveAggregations;
1765
+ private resolveDistributionModes;
1766
+ private mapMetric;
1767
+ private toCountOption;
1768
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartResourceCapabilityCatalogAdapter, never>;
1769
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartResourceCapabilityCatalogAdapter>;
1770
+ }
1771
+
1357
1772
  type PraxisChartsText = PraxisTextValue;
1358
1773
  interface PraxisChartsI18nOptions {
1359
1774
  locale?: string;
@@ -1376,5 +1791,5 @@ declare function providePraxisChartDrilldownPanelMetadata(): Provider;
1376
1791
  declare const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta;
1377
1792
  declare function providePraxisChartStateProbeMetadata(): Provider;
1378
1793
 
1379
- 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_ENGINE_FACTORY, PRAXIS_CHART_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, 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 };
1380
- 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, PraxisChartEngineFactory, 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, PraxisChartsProviderOptions, 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 };
1794
+ 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 };
1795
+ 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, 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 };