@praxisui/charts 3.0.0-beta.1 → 3.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, Provider } from '@angular/core';
3
3
  import * as _praxisui_core from '@praxisui/core';
4
- import { PraxisTextValue, WidgetDefinition, WidgetShellConfig, GridItemLayout, WidgetInstance, GridWidgetInstance, ComponentMetadataRegistry, ApiUrlConfig, WidgetPageDefinition, GridPageDefinition, ComponentDocMeta } from '@praxisui/core';
4
+ import { PraxisTextValue, WidgetDefinition, WidgetShellConfig, WidgetInstance, ComponentMetadataRegistry, ApiUrlConfig, WidgetPageDefinition, SettingsValueProvider, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, ComponentDocMeta } from '@praxisui/core';
5
5
  import * as _praxisui_charts from '@praxisui/charts';
6
6
  import { EChartsCoreOption } from 'echarts';
7
7
  import { HttpClient } from '@angular/common/http';
8
- import { Observable } from 'rxjs';
8
+ import { Observable, BehaviorSubject } from 'rxjs';
9
9
 
10
10
  type PraxisChartAxisType = 'category' | 'value' | 'time';
11
11
  type PraxisChartAxisPosition = 'top' | 'bottom' | 'left' | 'right';
@@ -99,6 +99,16 @@ interface PraxisChartRemoteDataSource {
99
99
  }
100
100
  type PraxisChartDataSource = PraxisChartLocalDataSource | PraxisChartRemoteDataSource;
101
101
 
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
+ }
102
112
  type PraxisChartLoadState = 'idle' | 'loading' | 'ready' | 'empty' | 'error';
103
113
  interface PraxisChartInteractionConfig {
104
114
  pointClick?: boolean;
@@ -119,6 +129,7 @@ interface PraxisChartQueryRequestEvent {
119
129
  kind: 'remote';
120
130
  }>;
121
131
  query?: PraxisChartQueryConfig;
132
+ queryContext?: PraxisChartQueryContext | null;
122
133
  }
123
134
 
124
135
  type PraxisChartType = 'bar' | 'combo' | 'horizontal-bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar' | 'stacked-area' | 'scatter';
@@ -162,6 +173,11 @@ interface PraxisChartThemeConfig {
162
173
  tooltip?: PraxisChartTooltipConfig;
163
174
  }
164
175
 
176
+ type PraxisChartMotionPreset = 'subtle' | 'standard' | 'expressive';
177
+ interface PraxisChartMotionConfig {
178
+ enabled?: boolean;
179
+ preset?: PraxisChartMotionPreset;
180
+ }
165
181
  interface PraxisChartEmptyStateConfig {
166
182
  title?: PraxisTextValue;
167
183
  description?: PraxisTextValue;
@@ -193,95 +209,12 @@ interface PraxisChartConfig {
193
209
  dataSource?: PraxisChartDataSource;
194
210
  interactions?: PraxisChartInteractionConfig;
195
211
  theme?: PraxisChartThemeConfig;
212
+ motion?: PraxisChartMotionConfig;
196
213
  emptyState?: PraxisChartEmptyStateConfig;
197
214
  state?: PraxisChartStateConfig;
198
215
  preferredLoadState?: Extract<PraxisChartLoadState, 'idle' | 'loading' | 'ready' | 'empty' | 'error'>;
199
216
  }
200
217
 
201
- declare class PraxisChartComponent {
202
- readonly config: _angular_core.InputSignal<PraxisChartConfig>;
203
- readonly data: _angular_core.InputSignal<PraxisChartDataRow[] | null>;
204
- readonly pointClick: _angular_core.OutputEmitterRef<PraxisChartPointEvent>;
205
- readonly queryRequest: _angular_core.OutputEmitterRef<PraxisChartQueryRequestEvent>;
206
- readonly loadStateChange: _angular_core.OutputEmitterRef<PraxisChartLoadState>;
207
- private readonly chartHost;
208
- private readonly engine;
209
- private readonly transformer;
210
- private readonly statsApi;
211
- private readonly i18n;
212
- private readonly destroyRef;
213
- private readonly resizeObserver;
214
- private readonly currentLoadState;
215
- private readonly remoteResolvedData;
216
- private readonly remoteRuntimeState;
217
- private readonly remoteTechnicalError;
218
- private previousRemoteSignature;
219
- readonly resolvedData: _angular_core.Signal<PraxisChartDataRow[]>;
220
- readonly resolvedHeight: _angular_core.Signal<string>;
221
- readonly renderConfig: _angular_core.Signal<PraxisChartConfig>;
222
- readonly loadingLabel: _angular_core.Signal<string>;
223
- readonly emptyTitle: _angular_core.Signal<string>;
224
- readonly emptyDescription: _angular_core.Signal<string>;
225
- readonly errorTitle: _angular_core.Signal<string>;
226
- readonly errorDescription: _angular_core.Signal<string>;
227
- readonly loadState: _angular_core.Signal<PraxisChartLoadState>;
228
- constructor();
229
- private ensureResizeObserver;
230
- private buildRemoteSignature;
231
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartComponent, never>;
232
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartComponent, "praxis-chart", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; "queryRequest": "queryRequest"; "loadStateChange": "loadStateChange"; }, never, never, true, never>;
233
- }
234
-
235
- declare class PraxisChartDrilldownPanelComponent {
236
- readonly title: _angular_core.InputSignal<string>;
237
- readonly selection: _angular_core.InputSignal<PraxisChartPointEvent | null>;
238
- readonly activeCategory: _angular_core.Signal<string | null>;
239
- readonly detailData: _angular_core.Signal<_praxisui_charts.PraxisChartDataRow[]>;
240
- readonly detailChartConfig: _angular_core.Signal<{
241
- id: string;
242
- type: "donut";
243
- title: {
244
- text: string;
245
- };
246
- subtitle: {
247
- text: string;
248
- };
249
- height: number;
250
- series: {
251
- id: string;
252
- categoryField: string;
253
- metric: {
254
- field: string;
255
- aggregation: "sum";
256
- };
257
- labels: {
258
- visible: boolean;
259
- };
260
- }[];
261
- emptyState: {
262
- title: {
263
- text: string;
264
- };
265
- description: {
266
- text: string;
267
- };
268
- };
269
- theme: {
270
- palette: string[];
271
- };
272
- }>;
273
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartDrilldownPanelComponent, never>;
274
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartDrilldownPanelComponent, "praxis-chart-drilldown-panel", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
275
- }
276
-
277
- declare class PraxisChartStateProbeComponent {
278
- readonly title: _angular_core.InputSignal<string>;
279
- readonly value: _angular_core.InputSignal<unknown>;
280
- readonly serializedValue: _angular_core.Signal<string>;
281
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartStateProbeComponent, never>;
282
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartStateProbeComponent, "praxis-chart-state-probe", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
283
- }
284
-
285
218
  type PraxisXUiChartKind = 'bar' | 'combo' | 'horizontal-bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar' | 'stacked-area' | 'scatter';
286
219
  type PraxisXUiChartPreset = 'kpi-trend' | 'comparison' | 'distribution' | 'ranking' | 'composition' | 'hierarchical-drill-down';
287
220
  type PraxisXUiChartTextValue = string | {
@@ -352,6 +285,11 @@ interface PraxisXUiChartTheme {
352
285
  palette?: string | string[];
353
286
  variant?: 'default' | 'compact' | 'executive';
354
287
  }
288
+ type PraxisXUiChartMotionPreset = 'subtle' | 'standard' | 'expressive';
289
+ interface PraxisXUiChartMotion {
290
+ enabled?: boolean;
291
+ preset?: PraxisXUiChartMotionPreset;
292
+ }
355
293
  interface PraxisXUiChartStateDescriptor {
356
294
  title?: PraxisXUiChartTextValue;
357
295
  description?: PraxisXUiChartTextValue;
@@ -395,11 +333,159 @@ interface PraxisXUiChartContract {
395
333
  theme?: PraxisXUiChartTheme;
396
334
  state?: PraxisXUiChartState;
397
335
  events?: PraxisXUiChartEvents;
336
+ motion?: PraxisXUiChartMotion;
398
337
  }
399
338
  interface PraxisXUiChartRuntimeHints {
400
339
  preferredLoadState?: Extract<PraxisChartLoadState, 'idle' | 'loading' | 'ready' | 'empty' | 'error'>;
401
340
  }
402
341
 
342
+ interface ChartEditorResourceOption {
343
+ id: string;
344
+ label: string;
345
+ path: string;
346
+ description?: string;
347
+ }
348
+ interface ChartEditorFieldOption {
349
+ field: string;
350
+ label?: string;
351
+ type?: 'string' | 'number' | 'date' | 'boolean' | 'enum';
352
+ aggregable?: boolean;
353
+ filterable?: boolean;
354
+ roles?: Array<'dimension' | 'metric' | 'time'>;
355
+ }
356
+ interface ChartEditorTargetOption {
357
+ id: string;
358
+ label: string;
359
+ kind?: 'widget' | 'route' | 'panel' | 'event';
360
+ }
361
+
362
+ type PraxisDataQueryContextBridge = {
363
+ filters?: Record<string, unknown> | null;
364
+ sort?: string[] | null;
365
+ limit?: number | null;
366
+ page?: {
367
+ index?: number | null;
368
+ size?: number | null;
369
+ } | null;
370
+ meta?: Record<string, unknown> | null;
371
+ };
372
+ declare class PraxisChartComponent {
373
+ readonly config: _angular_core.InputSignal<PraxisChartConfig>;
374
+ readonly data: _angular_core.InputSignal<PraxisChartDataRow[] | null>;
375
+ readonly chartDocument: _angular_core.InputSignal<PraxisXUiChartContract | null>;
376
+ readonly filterCriteria: _angular_core.InputSignal<Record<string, unknown> | null>;
377
+ readonly queryContext: _angular_core.InputSignal<PraxisDataQueryContextBridge | null>;
378
+ readonly enableCustomization: _angular_core.InputSignalWithTransform<boolean, unknown>;
379
+ readonly availableResources: _angular_core.InputSignal<readonly ChartEditorResourceOption[]>;
380
+ readonly availableFields: _angular_core.InputSignal<readonly ChartEditorFieldOption[]>;
381
+ readonly availableTargets: _angular_core.InputSignal<readonly ChartEditorTargetOption[]>;
382
+ readonly pointClick: _angular_core.OutputEmitterRef<PraxisChartPointEvent>;
383
+ readonly queryRequest: _angular_core.OutputEmitterRef<PraxisChartQueryRequestEvent>;
384
+ readonly loadStateChange: _angular_core.OutputEmitterRef<PraxisChartLoadState>;
385
+ readonly chartDocumentApplied: _angular_core.OutputEmitterRef<PraxisXUiChartContract>;
386
+ readonly chartDocumentSaved: _angular_core.OutputEmitterRef<PraxisXUiChartContract>;
387
+ private readonly chartHost;
388
+ private readonly hostElement;
389
+ private readonly engine;
390
+ private readonly transformer;
391
+ private readonly canonicalMapper;
392
+ private readonly statsApi;
393
+ private readonly i18n;
394
+ private readonly settingsPanel;
395
+ private readonly destroyRef;
396
+ private readonly resizeObserver;
397
+ private readonly shellObserver;
398
+ private readonly currentLoadState;
399
+ private readonly remoteResolvedData;
400
+ private readonly remoteRuntimeState;
401
+ private readonly remoteTechnicalError;
402
+ private readonly runtimeChartDocument;
403
+ private readonly mappedRuntimeConfig;
404
+ private readonly chartDocumentMappingError;
405
+ private readonly fillContainerHeight;
406
+ private previousRemoteSignature;
407
+ private previousDocumentSignature;
408
+ private editorSessionSubscriptions;
409
+ readonly effectiveConfig: _angular_core.Signal<PraxisChartConfig>;
410
+ readonly resolvedData: _angular_core.Signal<PraxisChartDataRow[]>;
411
+ readonly resolvedHeight: _angular_core.Signal<string>;
412
+ readonly renderConfig: _angular_core.Signal<PraxisChartConfig>;
413
+ readonly loadingLabel: _angular_core.Signal<string>;
414
+ readonly emptyTitle: _angular_core.Signal<string>;
415
+ readonly emptyDescription: _angular_core.Signal<string>;
416
+ readonly errorTitle: _angular_core.Signal<string>;
417
+ readonly errorDescription: _angular_core.Signal<string>;
418
+ readonly editChartLabel: _angular_core.Signal<string>;
419
+ readonly loadState: _angular_core.Signal<PraxisChartLoadState>;
420
+ constructor();
421
+ canOpenConfigEditor(): boolean;
422
+ openConfigEditor(): Promise<void>;
423
+ private ensureResizeObserver;
424
+ private buildRemoteSignature;
425
+ private clearEditorSessionSubscriptions;
426
+ private observeShellSizingContext;
427
+ private scheduleResizeAfterShellModeChange;
428
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartComponent, never>;
429
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartComponent, "praxis-chart", never, { "config": { "alias": "config"; "required": true; "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; }; "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"; "queryRequest": "queryRequest"; "loadStateChange": "loadStateChange"; "chartDocumentApplied": "chartDocumentApplied"; "chartDocumentSaved": "chartDocumentSaved"; }, never, never, true, never>;
430
+ }
431
+
432
+ declare class PraxisChartDrilldownPanelComponent {
433
+ readonly title: _angular_core.InputSignal<string>;
434
+ readonly selection: _angular_core.InputSignal<PraxisChartPointEvent | null>;
435
+ readonly activeCategory: _angular_core.Signal<string | null>;
436
+ readonly detailData: _angular_core.Signal<_praxisui_charts.PraxisChartDataRow[]>;
437
+ readonly detailChartConfig: _angular_core.Signal<{
438
+ id: string;
439
+ type: "donut";
440
+ title: {
441
+ text: string;
442
+ };
443
+ subtitle: {
444
+ text: string;
445
+ };
446
+ height: number;
447
+ series: {
448
+ id: string;
449
+ categoryField: string;
450
+ metric: {
451
+ field: string;
452
+ aggregation: "sum";
453
+ };
454
+ labels: {
455
+ visible: boolean;
456
+ };
457
+ }[];
458
+ emptyState: {
459
+ title: {
460
+ text: string;
461
+ };
462
+ description: {
463
+ text: string;
464
+ };
465
+ };
466
+ theme: {
467
+ palette: string[];
468
+ };
469
+ }>;
470
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartDrilldownPanelComponent, never>;
471
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartDrilldownPanelComponent, "praxis-chart-drilldown-panel", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
472
+ }
473
+
474
+ declare class PraxisChartStateProbeComponent {
475
+ readonly title: _angular_core.InputSignal<string>;
476
+ readonly value: _angular_core.InputSignal<unknown>;
477
+ readonly serializedValue: _angular_core.Signal<string>;
478
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartStateProbeComponent, never>;
479
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartStateProbeComponent, "praxis-chart-state-probe", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
480
+ }
481
+
482
+ interface PraxisChartCanvasItem {
483
+ col: number;
484
+ row: number;
485
+ colSpan: number;
486
+ rowSpan: number;
487
+ zIndex?: number;
488
+ }
403
489
  interface PraxisChartWidgetSchema {
404
490
  kind?: 'x-ui.chart';
405
491
  componentId?: 'praxis-chart' | 'chart';
@@ -410,7 +496,7 @@ interface PraxisChartWidgetSchema {
410
496
  outputs?: WidgetDefinition['outputs'];
411
497
  bindingOrder?: string[];
412
498
  shell?: WidgetShellConfig;
413
- layout?: GridItemLayout;
499
+ canvasItem?: PraxisChartCanvasItem;
414
500
  }
415
501
  interface PraxisChartWidgetResolution {
416
502
  componentId: 'praxis-chart';
@@ -418,11 +504,10 @@ interface PraxisChartWidgetResolution {
418
504
  definition: WidgetDefinition;
419
505
  shell?: WidgetShellConfig;
420
506
  className?: string;
421
- layout?: GridItemLayout;
507
+ canvasItem?: PraxisChartCanvasItem;
422
508
  }
423
509
  type PraxisChartWidgetLike = PraxisXUiChartContract | PraxisChartWidgetSchema;
424
510
  type PraxisChartWidgetInstance = WidgetInstance;
425
- type PraxisChartGridWidgetInstance = GridWidgetInstance;
426
511
 
427
512
  interface PraxisChartSchemaMeta {
428
513
  schemaId: string;
@@ -436,7 +521,7 @@ interface PraxisChartBackendWidgetPayload {
436
521
  kind?: 'x-ui.chart';
437
522
  key?: string;
438
523
  className?: string;
439
- layout?: GridItemLayout;
524
+ canvasItem?: PraxisChartCanvasItem;
440
525
  shell?: WidgetShellConfig;
441
526
  outputs?: PraxisChartWidgetSchema['outputs'];
442
527
  bindingOrder?: string[];
@@ -466,15 +551,54 @@ declare const PRAXIS_CHART_ENGINE: InjectionToken<PraxisChartEngineAdapter>;
466
551
 
467
552
  declare function providePraxisCharts(): Provider[];
468
553
 
554
+ declare class ChartContractNormalizerService {
555
+ normalize(input: PraxisXUiChartContract): PraxisXUiChartContract;
556
+ private normalizeMotion;
557
+ private normalizeKindSpecificFields;
558
+ private normalizeOperationSpecificFields;
559
+ private normalizeSourceSpecificFields;
560
+ private isDistribution;
561
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartContractNormalizerService, never>;
562
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartContractNormalizerService>;
563
+ }
564
+
565
+ type ChartContractIssueSeverity = 'error' | 'warning';
566
+ interface ChartContractValidationIssue {
567
+ severity: ChartContractIssueSeverity;
568
+ code: string;
569
+ field: string;
570
+ message: string;
571
+ }
572
+ interface ChartContractValidationResult {
573
+ valid: boolean;
574
+ issues: ChartContractValidationIssue[];
575
+ }
576
+
577
+ declare class ChartContractValidationService {
578
+ validate(document: PraxisXUiChartContract): ChartContractValidationResult;
579
+ private validateSource;
580
+ private validateTheme;
581
+ private validateMetrics;
582
+ private validateKinds;
583
+ private validateEvents;
584
+ private validateEventAction;
585
+ private error;
586
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartContractValidationService, never>;
587
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartContractValidationService>;
588
+ }
589
+
469
590
  declare class PraxisChartCanonicalContractMapperService {
591
+ private readonly normalizer;
592
+ private readonly validator;
593
+ constructor(normalizer?: ChartContractNormalizerService, validator?: ChartContractValidationService);
470
594
  toPraxisChartConfig(contract: PraxisXUiChartContract): PraxisChartConfig;
471
- private assertSupportedContract;
472
595
  private buildAxes;
473
596
  private buildSeries;
474
597
  private buildDataSource;
475
598
  private buildQuery;
476
599
  private buildInteractions;
477
600
  private buildTheme;
601
+ private buildMotion;
478
602
  private resolveOrientation;
479
603
  private resolveSeriesType;
480
604
  private shouldSmoothSeries;
@@ -564,16 +688,12 @@ declare class PraxisChartSchemaMapperService {
564
688
  constructor(metadataRegistration: PraxisChartMetadataRegistrationService, canonicalContractMapper: PraxisChartCanonicalContractMapperService);
565
689
  resolve(input: PraxisChartWidgetLike, defaults?: {
566
690
  key?: string;
567
- layout?: GridItemLayout;
691
+ canvasItem?: PraxisChartCanvasItem;
568
692
  }): PraxisChartWidgetResolution;
569
693
  toWidgetDefinition(input: PraxisChartWidgetLike): WidgetDefinition;
570
694
  toWidgetInstance(input: PraxisChartWidgetLike, defaults?: {
571
695
  key?: string;
572
696
  }): WidgetInstance;
573
- toGridWidgetInstance(input: PraxisChartWidgetLike, defaults: {
574
- key?: string;
575
- layout: GridItemLayout;
576
- }): GridWidgetInstance;
577
697
  private normalize;
578
698
  private isWidgetSchema;
579
699
  private isCanonicalChartContract;
@@ -589,7 +709,7 @@ declare class PraxisChartBackendPayloadAdapterService {
589
709
  constructor(chartSchemaMapper: PraxisChartSchemaMapperService, canonicalContractMapper: PraxisChartCanonicalContractMapperService);
590
710
  toChartConfig(payload: PraxisChartBackendPayload): PraxisChartConfig;
591
711
  toWidgetInstance(payload: PraxisChartBackendPayload): WidgetInstance;
592
- toGridWidgetInstance(payload: PraxisChartBackendPayload): GridWidgetInstance;
712
+ toCanvasItem(payload: PraxisChartBackendPayload, fallback?: PraxisChartCanvasItem): PraxisChartCanvasItem;
593
713
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartBackendPayloadAdapterService, never>;
594
714
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartBackendPayloadAdapterService>;
595
715
  }
@@ -620,37 +740,297 @@ declare const PRAXIS_CHART_BACKEND_MOCK_TIMESERIES: PraxisChartBackendPayload;
620
740
  declare const PRAXIS_CHART_BACKEND_MOCK_DONUT: PraxisChartBackendPayload;
621
741
  declare const PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR: PraxisChartBackendPayload;
622
742
  declare const PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA: PraxisChartBackendPayload;
743
+ declare const PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR: PraxisChartBackendPayload;
623
744
  declare const PRAXIS_CHART_BACKEND_MOCK_SCATTER: PraxisChartBackendPayload;
624
745
  declare const PRAXIS_CHART_BACKEND_MOCK_COMBO: PraxisChartBackendPayload;
625
746
 
626
747
  declare const PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH: Record<string, PraxisChartDataRow[]>;
627
748
 
749
+ type CanvasWidgetPageDefinition = WidgetPageDefinition & {
750
+ canvas?: {
751
+ mode: 'grid';
752
+ columns: number;
753
+ rowUnit?: string;
754
+ gap?: string;
755
+ items: Record<string, PraxisChartCanvasItem>;
756
+ };
757
+ };
628
758
  declare function buildPraxisChartMockWidgetPage(adapter: PraxisChartBackendPayloadAdapterService): WidgetPageDefinition;
629
- declare function buildPraxisChartMockGridPage(adapter: PraxisChartBackendPayloadAdapterService): GridPageDefinition;
759
+ declare function buildPraxisChartMockCanvasPage(adapter: PraxisChartBackendPayloadAdapterService): CanvasWidgetPageDefinition;
630
760
  declare function buildPraxisChartInteractiveWidgetPage(adapter: PraxisChartBackendPayloadAdapterService): WidgetPageDefinition;
631
- declare function buildPraxisChartInteractiveGridPage(adapter: PraxisChartBackendPayloadAdapterService): GridPageDefinition;
761
+ declare function buildPraxisChartInteractiveCanvasPage(adapter: PraxisChartBackendPayloadAdapterService): CanvasWidgetPageDefinition;
632
762
 
633
- type ShowcaseLayoutMode = 'widget' | 'grid';
634
- type ShowcasePayloadMode = 'group-by' | 'timeseries' | 'distribution' | 'horizontal-bar' | 'stacked-area' | 'scatter' | 'combo';
763
+ type ShowcaseLayoutMode = 'widget' | 'canvas';
764
+ type ShowcasePayloadMode = 'group-by' | 'timeseries' | 'distribution' | 'horizontal-bar' | 'stacked-area' | 'multi-metric-bar' | 'scatter' | 'combo';
635
765
  type ShowcaseScenarioMode = 'baseline' | 'interactive' | 'empty' | 'loading' | 'error';
636
766
  declare class PraxisChartCompositionShowcaseComponent {
767
+ readonly enableCustomization: _angular_core.InputSignalWithTransform<boolean, unknown>;
637
768
  protected readonly layoutMode: _angular_core.WritableSignal<ShowcaseLayoutMode>;
638
769
  protected readonly payloadMode: _angular_core.WritableSignal<ShowcasePayloadMode>;
639
770
  protected readonly scenarioMode: _angular_core.WritableSignal<ShowcaseScenarioMode>;
640
- protected readonly runtimeContext: {
771
+ private readonly backendPayloadAdapter;
772
+ protected readonly runtimeContext: _angular_core.Signal<{
641
773
  tenantId: string;
642
774
  locale: string;
643
775
  environment: string;
644
- };
645
- private readonly backendPayloadAdapter;
776
+ enableCustomization: boolean;
777
+ }>;
646
778
  protected readonly widgetPage: _angular_core.Signal<_praxisui_core.WidgetPageDefinition>;
647
- protected readonly gridPage: _angular_core.Signal<_praxisui_core.GridPageDefinition>;
648
- protected readonly payloadTitle: _angular_core.Signal<"Envelope timeseries" | "Envelope distribution" | "Envelope horizontal-bar" | "Envelope stacked-area" | "Envelope scatter" | "Envelope combo" | "Envelope group-by">;
779
+ protected readonly canvasPage: _angular_core.Signal<(_praxisui_core.WidgetPageDefinition & {
780
+ canvas?: {
781
+ mode: "grid";
782
+ columns: number;
783
+ rowUnit?: string;
784
+ gap?: string;
785
+ items: Record<string, _praxisui_charts.PraxisChartCanvasItem>;
786
+ };
787
+ }) | {
788
+ widgets: _praxisui_core.WidgetInstance[];
789
+ canvas: {
790
+ items: {
791
+ [x: string]: _praxisui_charts.PraxisChartCanvasItem;
792
+ };
793
+ mode: "grid";
794
+ columns: number;
795
+ rowUnit?: string;
796
+ gap?: string;
797
+ autoRows?: "fixed" | "content";
798
+ collisionPolicy?: _praxisui_core.WidgetPageCanvasCollisionPolicy;
799
+ };
800
+ connections?: _praxisui_core.WidgetConnection[];
801
+ composition?: _praxisui_core.WidgetPageCompositionDefinition;
802
+ state?: _praxisui_core.WidgetPageStateInput;
803
+ context?: Record<string, any>;
804
+ layout?: _praxisui_core.WidgetPageLayout;
805
+ layoutPreset?: string;
806
+ layoutPresetOptions?: Record<string, any>;
807
+ grouping?: _praxisui_core.WidgetPageGroupingDefinition[];
808
+ slotAssignments?: _praxisui_core.WidgetPageSlotAssignments;
809
+ deviceLayouts?: _praxisui_core.WidgetPageDeviceLayouts;
810
+ themePreset?: string;
811
+ }>;
812
+ protected readonly resolvedPage: _angular_core.Signal<_praxisui_core.WidgetPageDefinition | {
813
+ widgets: _praxisui_core.WidgetInstance[];
814
+ canvas: {
815
+ items: {
816
+ [x: string]: _praxisui_charts.PraxisChartCanvasItem;
817
+ };
818
+ mode: "grid";
819
+ columns: number;
820
+ rowUnit?: string;
821
+ gap?: string;
822
+ autoRows?: "fixed" | "content";
823
+ collisionPolicy?: _praxisui_core.WidgetPageCanvasCollisionPolicy;
824
+ };
825
+ connections?: _praxisui_core.WidgetConnection[];
826
+ composition?: _praxisui_core.WidgetPageCompositionDefinition;
827
+ state?: _praxisui_core.WidgetPageStateInput;
828
+ context?: Record<string, any>;
829
+ layout?: _praxisui_core.WidgetPageLayout;
830
+ layoutPreset?: string;
831
+ layoutPresetOptions?: Record<string, any>;
832
+ grouping?: _praxisui_core.WidgetPageGroupingDefinition[];
833
+ slotAssignments?: _praxisui_core.WidgetPageSlotAssignments;
834
+ deviceLayouts?: _praxisui_core.WidgetPageDeviceLayouts;
835
+ themePreset?: string;
836
+ }>;
837
+ protected readonly payloadTitle: _angular_core.Signal<"Envelope timeseries" | "Envelope distribution" | "Envelope horizontal-bar" | "Envelope stacked-area" | "Envelope multi-metric bar" | "Envelope scatter" | "Envelope combo" | "Envelope group-by">;
649
838
  protected readonly selectedPayloadJson: _angular_core.Signal<string>;
650
839
  private readonly selectedPayload;
840
+ private buildScenarioCanvasPage;
651
841
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartCompositionShowcaseComponent, never>;
652
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartCompositionShowcaseComponent, "praxis-chart-composition-showcase", never, {}, {}, never, never, true, never>;
842
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartCompositionShowcaseComponent, "praxis-chart-composition-showcase", never, { "enableCustomization": { "alias": "enableCustomization"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
843
+ }
844
+
845
+ interface ChartEditorPreviewPayload {
846
+ config: PraxisChartConfig;
847
+ data: PraxisChartDataRow[];
848
+ }
849
+ declare class ChartEditorPreviewMapperService {
850
+ private readonly mapper;
851
+ constructor(mapper: PraxisChartCanonicalContractMapperService);
852
+ build(document: PraxisXUiChartContract): ChartEditorPreviewPayload;
853
+ private buildRows;
854
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartEditorPreviewMapperService, never>;
855
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartEditorPreviewMapperService>;
856
+ }
857
+
858
+ interface ChartConfigEditorApplyEvent {
859
+ document: PraxisXUiChartContract;
860
+ issues: ChartContractValidationIssue[];
861
+ dirty: boolean;
862
+ }
863
+ interface ChartConfigEditorSaveEvent {
864
+ document: PraxisXUiChartContract;
865
+ issues: ChartContractValidationIssue[];
866
+ dirty: boolean;
867
+ }
868
+ interface ChartConfigEditorResetEvent {
869
+ document: PraxisXUiChartContract;
870
+ }
871
+
872
+ type ChartEditorSection = 'general' | 'data' | 'analytics' | 'appearance' | 'motion' | 'events' | 'preview';
873
+ type ChartFeatureKey = 'legend' | 'labels' | 'tooltip';
874
+ type ChartStateKey = 'empty' | 'loading' | 'error';
875
+ type ChartEventKey = 'pointClick' | 'drillDown';
876
+ declare class PraxisChartConfigEditor implements SettingsValueProvider {
877
+ readonly documentInput: _angular_core.InputSignal<PraxisXUiChartContract | null>;
878
+ readonly modeInput: _angular_core.InputSignal<"create" | "edit">;
879
+ readonly readonlyInput: _angular_core.InputSignal<boolean>;
880
+ readonly availableResourcesInput: _angular_core.InputSignal<ChartEditorResourceOption[]>;
881
+ readonly availableFieldsInput: _angular_core.InputSignal<ChartEditorFieldOption[]>;
882
+ readonly availableTargetsInput: _angular_core.InputSignal<ChartEditorTargetOption[]>;
883
+ readonly apply: _angular_core.OutputEmitterRef<ChartConfigEditorApplyEvent>;
884
+ readonly save: _angular_core.OutputEmitterRef<ChartConfigEditorSaveEvent>;
885
+ readonly resetChange: _angular_core.OutputEmitterRef<ChartConfigEditorResetEvent>;
886
+ readonly documentChange: _angular_core.OutputEmitterRef<PraxisXUiChartContract>;
887
+ readonly isDirty$: BehaviorSubject<boolean>;
888
+ readonly isValid$: BehaviorSubject<boolean>;
889
+ readonly isBusy$: BehaviorSubject<boolean>;
890
+ readonly sections: Array<{
891
+ id: ChartEditorSection;
892
+ labelKey: string;
893
+ fallback: string;
894
+ }>;
895
+ readonly chartKinds: PraxisXUiChartKind[];
896
+ readonly sourceKinds: readonly ["praxis.stats", "derived"];
897
+ readonly operations: PraxisXUiChartStatsOperation[];
898
+ readonly timeGranularities: readonly ["hour", "day", "week", "month", "quarter", "year"];
899
+ readonly distributionModes: PraxisXUiChartStatsDistributionMode[];
900
+ readonly dimensionRoles: NonNullable<PraxisXUiChartDimension['role']>[];
901
+ readonly metricAggregations: PraxisXUiChartAggregation[];
902
+ readonly metricAxes: Array<NonNullable<PraxisXUiChartMetric['axis']>>;
903
+ readonly metricSeriesKinds: Array<NonNullable<PraxisXUiChartMetric['seriesKind']>>;
904
+ readonly motionPresets: readonly ["subtle", "standard", "expressive"];
905
+ readonly eventActionOptions: PraxisXUiChartEventAction['action'][];
906
+ readonly activeSection: _angular_core.WritableSignal<ChartEditorSection>;
907
+ private readonly injectedData;
908
+ private readonly defaults;
909
+ private readonly normalizer;
910
+ private readonly validator;
911
+ private readonly previewMapper;
912
+ private readonly i18n;
913
+ private readonly currentDocument;
914
+ private readonly initialDocument;
915
+ private lastExternalSignature;
916
+ readonly normalizedDocument: _angular_core.Signal<PraxisXUiChartContract>;
917
+ readonly validation: _angular_core.Signal<ChartContractValidationResult>;
918
+ readonly issues: _angular_core.Signal<ChartContractValidationIssue[]>;
919
+ readonly availableResources: _angular_core.Signal<ChartEditorResourceOption[]>;
920
+ readonly availableFields: _angular_core.Signal<ChartEditorFieldOption[]>;
921
+ readonly availableTargets: _angular_core.Signal<ChartEditorTargetOption[]>;
922
+ readonly preview: _angular_core.Signal<ChartEditorPreviewPayload | null>;
923
+ constructor();
924
+ getSettingsValue(): PraxisXUiChartContract;
925
+ onSave(): PraxisXUiChartContract;
926
+ reset(): void;
927
+ applyChanges(): ChartConfigEditorApplyEvent;
928
+ saveChanges(): ChartConfigEditorSaveEvent;
929
+ setSection(section: ChartEditorSection): void;
930
+ setChartId(value: string): void;
931
+ setKind(value: PraxisXUiChartKind): void;
932
+ setTitle(value: string): void;
933
+ setSubtitle(value: string): void;
934
+ setHeight(value: string): void;
935
+ setSourceKind(value: 'praxis.stats' | 'derived'): void;
936
+ setResource(value: string): void;
937
+ setOperation(value: PraxisXUiChartStatsOperation): void;
938
+ setGranularity(value: typeof this.timeGranularities[number]): void;
939
+ setFillGaps(value: boolean): void;
940
+ setDistributionMode(value: PraxisXUiChartStatsDistributionMode): void;
941
+ setBucketSize(value: string): void;
942
+ setBucketCount(value: string): void;
943
+ addDimension(): void;
944
+ removeDimension(index: number): void;
945
+ setDimensionField(index: number, field: string): void;
946
+ setDimensionRole(index: number, role: NonNullable<PraxisXUiChartDimension['role']>): void;
947
+ addMetric(): void;
948
+ removeMetric(index: number): void;
949
+ setMetricField(index: number, field: string): void;
950
+ setMetricLabel(index: number, label: string): void;
951
+ setMetricAggregation(index: number, aggregation: PraxisXUiChartAggregation): void;
952
+ setMetricAxis(index: number, axis: NonNullable<PraxisXUiChartMetric['axis']>): void;
953
+ setMetricSeriesKind(index: number, seriesKind: NonNullable<PraxisXUiChartMetric['seriesKind']>): void;
954
+ setMotionEnabled(enabled: boolean): void;
955
+ setMotionPreset(preset: 'subtle' | 'standard' | 'expressive'): void;
956
+ setFeatureEnabled(feature: ChartFeatureKey, enabled: boolean): void;
957
+ setPalette(value: string): void;
958
+ setStateTitle(stateKey: ChartStateKey, value: string): void;
959
+ setStateDescription(stateKey: ChartStateKey, value: string): void;
960
+ setEventAction(eventKey: ChartEventKey, action: PraxisXUiChartEventAction['action'] | ''): void;
961
+ setEventTarget(eventKey: ChartEventKey, target: string): void;
962
+ setEventMapping(eventKey: ChartEventKey, value: string): void;
963
+ isReadonly(): boolean;
964
+ titleValue(): string;
965
+ subtitleValue(): string;
966
+ resourceValue(): string;
967
+ resourceOptions(): ChartEditorResourceOption[];
968
+ granularityValue(): typeof this.timeGranularities[number];
969
+ fillGapsValue(): boolean;
970
+ distributionModeValue(): PraxisXUiChartStatsDistributionMode;
971
+ bucketSizeValue(): string;
972
+ bucketCountValue(): string;
973
+ heightValue(): string;
974
+ featureEnabled(feature: ChartFeatureKey): boolean;
975
+ paletteValue(): string;
976
+ stateTitle(stateKey: ChartStateKey): string;
977
+ stateDescription(stateKey: ChartStateKey): string;
978
+ eventAction(eventKey: ChartEventKey): PraxisXUiChartEventAction['action'] | '';
979
+ eventTarget(eventKey: ChartEventKey): string;
980
+ targetOptions(): ChartEditorTargetOption[];
981
+ eventMappingText(eventKey: ChartEventKey): string;
982
+ dimensions(): PraxisXUiChartDimension[];
983
+ metrics(): PraxisXUiChartMetric[];
984
+ fieldOptions(role: 'dimension' | 'metric'): ChartEditorFieldOption[];
985
+ showMetricAxisControls(): boolean;
986
+ showMetricSeriesKindControls(): boolean;
987
+ showTimeseriesControls(): boolean;
988
+ showDistributionControls(): boolean;
989
+ showComboPanel(): boolean;
990
+ showPieDonutPanel(): boolean;
991
+ showScatterPanel(): boolean;
992
+ issueTrackBy(_: number, issue: ChartContractValidationIssue): string;
993
+ t(key: string, fallback: string): string;
994
+ doc(): PraxisXUiChartContract;
995
+ private patchStateDescriptor;
996
+ private patchEvent;
997
+ private parseMappingText;
998
+ private createApplyPayload;
999
+ private createSavePayload;
1000
+ private patchDocument;
1001
+ private refreshState;
1002
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartConfigEditor, never>;
1003
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartConfigEditor, "praxis-chart-config-editor", never, { "documentInput": { "alias": "document"; "required": false; "isSignal": true; }; "modeInput": { "alias": "mode"; "required": false; "isSignal": true; }; "readonlyInput": { "alias": "readonly"; "required": false; "isSignal": true; }; "availableResourcesInput": { "alias": "availableResources"; "required": false; "isSignal": true; }; "availableFieldsInput": { "alias": "availableFields"; "required": false; "isSignal": true; }; "availableTargetsInput": { "alias": "availableTargets"; "required": false; "isSignal": true; }; }, { "apply": "apply"; "save": "save"; "resetChange": "resetChange"; "documentChange": "documentChange"; }, never, never, true, never>;
1004
+ }
1005
+
1006
+ interface PraxisChartConfigEditorData {
1007
+ chartDocument?: PraxisXUiChartContract;
1008
+ document?: PraxisXUiChartContract;
1009
+ chartKey?: string;
1010
+ mode?: 'create' | 'edit';
1011
+ availableResources?: ChartEditorResourceOption[];
1012
+ availableFields?: ChartEditorFieldOption[];
1013
+ availableTargets?: ChartEditorTargetOption[];
1014
+ hostContext?: Record<string, unknown>;
1015
+ readonly?: boolean;
1016
+ }
1017
+
1018
+ declare class ChartEditorDefaultsService {
1019
+ create(): PraxisXUiChartContract;
1020
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartEditorDefaultsService, never>;
1021
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ChartEditorDefaultsService>;
1022
+ }
1023
+
1024
+ type PraxisChartsText = PraxisTextValue;
1025
+ interface PraxisChartsI18nOptions {
1026
+ locale?: string;
1027
+ fallbackLocale?: string;
1028
+ dictionaries?: Record<string, PraxisI18nDictionary>;
653
1029
  }
1030
+ declare const PRAXIS_CHARTS_I18N: InjectionToken<Record<string, never>>;
1031
+ declare function createPraxisChartsI18nConfig(options?: PraxisChartsI18nOptions): Partial<PraxisI18nConfig>;
1032
+ declare function providePraxisChartsI18n(options?: PraxisChartsI18nOptions): Provider[];
1033
+ declare function resolvePraxisChartsText(value: PraxisChartsText | null | undefined, fallback?: string): PraxisI18nMessageDescriptor;
654
1034
 
655
1035
  declare const PRAXIS_CHART_COMPONENT_METADATA: ComponentDocMeta;
656
1036
  declare function providePraxisChartsMetadata(): Provider;
@@ -661,5 +1041,5 @@ declare function providePraxisChartDrilldownPanelMetadata(): Provider;
661
1041
  declare const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta;
662
1042
  declare function providePraxisChartStateProbeMetadata(): Provider;
663
1043
 
664
- export { 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_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, buildPraxisChartInteractiveGridPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockGridPage, buildPraxisChartMockWidgetPage, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsMetadata };
665
- export type { PraxisChartAggregation, PraxisChartAxisConfig, PraxisChartAxisLabelConfig, PraxisChartAxisPosition, PraxisChartAxisType, PraxisChartBackendPayload, PraxisChartBackendWidgetPayload, PraxisChartCartesianSeries, PraxisChartConfig, PraxisChartDataRow, PraxisChartDataSource, PraxisChartDistributionStatsRequest, PraxisChartEmptyStateConfig, PraxisChartEngineAdapter, PraxisChartEngineRenderPayload, PraxisChartErrorStateConfig, PraxisChartGridWidgetInstance, PraxisChartGroupByStatsRequest, PraxisChartInteractionConfig, PraxisChartLegendConfig, PraxisChartLoadState, PraxisChartLocalDataSource, PraxisChartMetricConfig, PraxisChartPieSlice, PraxisChartPointEvent, PraxisChartPrimitive, PraxisChartQueryConfig, PraxisChartQueryMetricConfig, PraxisChartQueryRequestEvent, PraxisChartRemoteDataSource, PraxisChartSchemaMeta, PraxisChartSeriesConfig, PraxisChartSeriesLabelConfig, PraxisChartStateConfig, PraxisChartStatsDistributionMode, PraxisChartStatsGranularity, PraxisChartStatsMetricOperation, PraxisChartStatsMetricRequest, PraxisChartStatsOperation, PraxisChartStatsOrderBy, PraxisChartStatsRequest, PraxisChartThemeConfig, PraxisChartTimeSeriesStatsRequest, PraxisChartTooltipConfig, PraxisChartTransformedData, PraxisChartType, PraxisChartWidgetInstance, PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema, PraxisXUiChartAggregation, PraxisXUiChartAggregationConfig, PraxisXUiChartContract, PraxisXUiChartDimension, PraxisXUiChartEventAction, PraxisXUiChartEvents, PraxisXUiChartFilter, PraxisXUiChartKind, PraxisXUiChartMetric, PraxisXUiChartPreset, PraxisXUiChartRefresh, PraxisXUiChartRuntimeHints, PraxisXUiChartSort, PraxisXUiChartSource, PraxisXUiChartSourceKind, PraxisXUiChartState, PraxisXUiChartStateDescriptor, PraxisXUiChartStatsDistributionMode, PraxisXUiChartStatsOperation, PraxisXUiChartStatsOrderBy, PraxisXUiChartStatsSourceOptions, PraxisXUiChartTextValue, PraxisXUiChartTheme, PraxisXUiChartToggleableFeature };
1044
+ export { ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_I18N, PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_COMBO, PRAXIS_CHART_BACKEND_MOCK_DONUT, PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR, PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR, PRAXIS_CHART_BACKEND_MOCK_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartsText };
1045
+ export type { ChartConfigEditorApplyEvent, ChartConfigEditorResetEvent, ChartConfigEditorSaveEvent, ChartContractIssueSeverity, ChartContractValidationIssue, ChartContractValidationResult, ChartEditorFieldOption, ChartEditorPreviewPayload, ChartEditorResourceOption, ChartEditorTargetOption, PraxisChartAggregation, PraxisChartAxisConfig, PraxisChartAxisLabelConfig, PraxisChartAxisPosition, PraxisChartAxisType, PraxisChartBackendPayload, PraxisChartBackendWidgetPayload, PraxisChartCanvasItem, PraxisChartCartesianSeries, PraxisChartConfig, PraxisChartConfigEditorData, PraxisChartDataRow, PraxisChartDataSource, PraxisChartDistributionStatsRequest, PraxisChartEmptyStateConfig, PraxisChartEngineAdapter, PraxisChartEngineRenderPayload, PraxisChartErrorStateConfig, PraxisChartGroupByStatsRequest, PraxisChartInteractionConfig, PraxisChartLegendConfig, PraxisChartLoadState, PraxisChartLocalDataSource, PraxisChartMetricConfig, PraxisChartMotionConfig, PraxisChartMotionPreset, PraxisChartPieSlice, PraxisChartPointEvent, PraxisChartPrimitive, PraxisChartQueryConfig, PraxisChartQueryContext, PraxisChartQueryMetricConfig, PraxisChartQueryRequestEvent, PraxisChartRemoteDataSource, PraxisChartSchemaMeta, PraxisChartSeriesConfig, PraxisChartSeriesLabelConfig, PraxisChartStateConfig, PraxisChartStatsDistributionMode, PraxisChartStatsGranularity, PraxisChartStatsMetricOperation, PraxisChartStatsMetricRequest, PraxisChartStatsOperation, PraxisChartStatsOrderBy, PraxisChartStatsRequest, PraxisChartThemeConfig, PraxisChartTimeSeriesStatsRequest, PraxisChartTooltipConfig, PraxisChartTransformedData, PraxisChartType, PraxisChartWidgetInstance, PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema, PraxisChartsI18nOptions, PraxisChartsText, PraxisXUiChartAggregation, PraxisXUiChartAggregationConfig, PraxisXUiChartContract, PraxisXUiChartDimension, PraxisXUiChartEventAction, PraxisXUiChartEvents, PraxisXUiChartFilter, PraxisXUiChartKind, PraxisXUiChartMetric, PraxisXUiChartMotion, PraxisXUiChartMotionPreset, PraxisXUiChartPreset, PraxisXUiChartRefresh, PraxisXUiChartRuntimeHints, PraxisXUiChartSort, PraxisXUiChartSource, PraxisXUiChartSourceKind, PraxisXUiChartState, PraxisXUiChartStateDescriptor, PraxisXUiChartStatsDistributionMode, PraxisXUiChartStatsOperation, PraxisXUiChartStatsOrderBy, PraxisXUiChartStatsSourceOptions, PraxisXUiChartTextValue, PraxisXUiChartTheme, PraxisXUiChartToggleableFeature };