@praxisui/charts 3.0.0-beta.0 → 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';
@@ -39,11 +39,13 @@ type PraxisChartStatsMetricOperation = 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX';
39
39
  interface PraxisChartStatsMetricRequest {
40
40
  operation: PraxisChartStatsMetricOperation;
41
41
  field?: string;
42
+ alias?: string;
42
43
  }
43
44
  interface PraxisChartGroupByStatsRequest {
44
45
  filter: Record<string, unknown>;
45
46
  field: string;
46
47
  metric: PraxisChartStatsMetricRequest;
48
+ metrics?: PraxisChartStatsMetricRequest[];
47
49
  limit?: number;
48
50
  orderBy?: 'KEY_ASC' | 'KEY_DESC' | 'VALUE_ASC' | 'VALUE_DESC';
49
51
  }
@@ -52,6 +54,7 @@ interface PraxisChartTimeSeriesStatsRequest {
52
54
  field: string;
53
55
  granularity: Uppercase<PraxisChartStatsGranularity>;
54
56
  metric: PraxisChartStatsMetricRequest;
57
+ metrics?: PraxisChartStatsMetricRequest[];
55
58
  from?: string;
56
59
  to?: string;
57
60
  fillGaps?: boolean;
@@ -96,6 +99,16 @@ interface PraxisChartRemoteDataSource {
96
99
  }
97
100
  type PraxisChartDataSource = PraxisChartLocalDataSource | PraxisChartRemoteDataSource;
98
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
+ }
99
112
  type PraxisChartLoadState = 'idle' | 'loading' | 'ready' | 'empty' | 'error';
100
113
  interface PraxisChartInteractionConfig {
101
114
  pointClick?: boolean;
@@ -116,9 +129,10 @@ interface PraxisChartQueryRequestEvent {
116
129
  kind: 'remote';
117
130
  }>;
118
131
  query?: PraxisChartQueryConfig;
132
+ queryContext?: PraxisChartQueryContext | null;
119
133
  }
120
134
 
121
- type PraxisChartType = 'bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar';
135
+ type PraxisChartType = 'bar' | 'combo' | 'horizontal-bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar' | 'stacked-area' | 'scatter';
122
136
  type PraxisChartAggregation = 'sum' | 'count' | 'avg' | 'min' | 'max';
123
137
  interface PraxisChartMetricConfig {
124
138
  field?: string;
@@ -133,6 +147,7 @@ interface PraxisChartSeriesConfig {
133
147
  id: string;
134
148
  name?: string;
135
149
  type?: PraxisChartType;
150
+ axis?: 'primary' | 'secondary';
136
151
  categoryField?: string;
137
152
  metric?: PraxisChartMetricConfig;
138
153
  color?: string;
@@ -158,6 +173,11 @@ interface PraxisChartThemeConfig {
158
173
  tooltip?: PraxisChartTooltipConfig;
159
174
  }
160
175
 
176
+ type PraxisChartMotionPreset = 'subtle' | 'standard' | 'expressive';
177
+ interface PraxisChartMotionConfig {
178
+ enabled?: boolean;
179
+ preset?: PraxisChartMotionPreset;
180
+ }
161
181
  interface PraxisChartEmptyStateConfig {
162
182
  title?: PraxisTextValue;
163
183
  description?: PraxisTextValue;
@@ -176,107 +196,26 @@ interface PraxisChartStateConfig {
176
196
  interface PraxisChartConfig {
177
197
  id?: string;
178
198
  type: PraxisChartType;
199
+ orientation?: 'vertical' | 'horizontal';
179
200
  title?: PraxisTextValue;
180
201
  subtitle?: PraxisTextValue;
181
202
  height?: number | string;
182
203
  axes?: {
183
204
  x?: PraxisChartAxisConfig;
184
205
  y?: PraxisChartAxisConfig;
206
+ ySecondary?: PraxisChartAxisConfig;
185
207
  };
186
208
  series: PraxisChartSeriesConfig[];
187
209
  dataSource?: PraxisChartDataSource;
188
210
  interactions?: PraxisChartInteractionConfig;
189
211
  theme?: PraxisChartThemeConfig;
212
+ motion?: PraxisChartMotionConfig;
190
213
  emptyState?: PraxisChartEmptyStateConfig;
191
214
  state?: PraxisChartStateConfig;
192
215
  preferredLoadState?: Extract<PraxisChartLoadState, 'idle' | 'loading' | 'ready' | 'empty' | 'error'>;
193
216
  }
194
217
 
195
- declare class PraxisChartComponent {
196
- readonly config: _angular_core.InputSignal<PraxisChartConfig>;
197
- readonly data: _angular_core.InputSignal<PraxisChartDataRow[] | null>;
198
- readonly pointClick: _angular_core.OutputEmitterRef<PraxisChartPointEvent>;
199
- readonly queryRequest: _angular_core.OutputEmitterRef<PraxisChartQueryRequestEvent>;
200
- readonly loadStateChange: _angular_core.OutputEmitterRef<PraxisChartLoadState>;
201
- private readonly chartHost;
202
- private readonly engine;
203
- private readonly transformer;
204
- private readonly statsApi;
205
- private readonly i18n;
206
- private readonly destroyRef;
207
- private readonly resizeObserver;
208
- private readonly currentLoadState;
209
- private readonly remoteResolvedData;
210
- private readonly remoteRuntimeState;
211
- private readonly remoteTechnicalError;
212
- private previousRemoteSignature;
213
- readonly resolvedData: _angular_core.Signal<PraxisChartDataRow[]>;
214
- readonly resolvedHeight: _angular_core.Signal<string>;
215
- readonly renderConfig: _angular_core.Signal<PraxisChartConfig>;
216
- readonly loadingLabel: _angular_core.Signal<string>;
217
- readonly emptyTitle: _angular_core.Signal<string>;
218
- readonly emptyDescription: _angular_core.Signal<string>;
219
- readonly errorTitle: _angular_core.Signal<string>;
220
- readonly errorDescription: _angular_core.Signal<string>;
221
- readonly loadState: _angular_core.Signal<PraxisChartLoadState>;
222
- constructor();
223
- private ensureResizeObserver;
224
- private buildRemoteSignature;
225
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartComponent, never>;
226
- 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>;
227
- }
228
-
229
- declare class PraxisChartDrilldownPanelComponent {
230
- readonly title: _angular_core.InputSignal<string>;
231
- readonly selection: _angular_core.InputSignal<PraxisChartPointEvent | null>;
232
- readonly activeCategory: _angular_core.Signal<string | null>;
233
- readonly detailData: _angular_core.Signal<_praxisui_charts.PraxisChartDataRow[]>;
234
- readonly detailChartConfig: _angular_core.Signal<{
235
- id: string;
236
- type: "donut";
237
- title: {
238
- text: string;
239
- };
240
- subtitle: {
241
- text: string;
242
- };
243
- height: number;
244
- series: {
245
- id: string;
246
- categoryField: string;
247
- metric: {
248
- field: string;
249
- aggregation: "sum";
250
- };
251
- labels: {
252
- visible: boolean;
253
- };
254
- }[];
255
- emptyState: {
256
- title: {
257
- text: string;
258
- };
259
- description: {
260
- text: string;
261
- };
262
- };
263
- theme: {
264
- palette: string[];
265
- };
266
- }>;
267
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartDrilldownPanelComponent, never>;
268
- 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>;
269
- }
270
-
271
- declare class PraxisChartStateProbeComponent {
272
- readonly title: _angular_core.InputSignal<string>;
273
- readonly value: _angular_core.InputSignal<unknown>;
274
- readonly serializedValue: _angular_core.Signal<string>;
275
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartStateProbeComponent, never>;
276
- 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>;
277
- }
278
-
279
- type PraxisXUiChartKind = 'bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar';
218
+ type PraxisXUiChartKind = 'bar' | 'combo' | 'horizontal-bar' | 'line' | 'pie' | 'donut' | 'area' | 'stacked-bar' | 'stacked-area' | 'scatter';
280
219
  type PraxisXUiChartPreset = 'kpi-trend' | 'comparison' | 'distribution' | 'ranking' | 'composition' | 'hierarchical-drill-down';
281
220
  type PraxisXUiChartTextValue = string | {
282
221
  key: string;
@@ -300,13 +239,16 @@ interface PraxisXUiChartSort {
300
239
  interface PraxisXUiChartDimension {
301
240
  field: string;
302
241
  label?: PraxisXUiChartTextValue;
303
- role?: 'category' | 'series' | 'segment' | 'time';
242
+ role?: 'category' | 'series' | 'segment' | 'time' | 'value';
304
243
  format?: string;
305
244
  }
306
245
  interface PraxisXUiChartMetric {
307
246
  field: string;
308
247
  label?: PraxisXUiChartTextValue;
309
248
  aggregation?: PraxisXUiChartAggregation;
249
+ seriesKind?: 'bar' | 'line' | 'area';
250
+ axis?: 'primary' | 'secondary';
251
+ color?: string;
310
252
  format?: string;
311
253
  }
312
254
  interface PraxisXUiChartAggregationConfig {
@@ -343,6 +285,11 @@ interface PraxisXUiChartTheme {
343
285
  palette?: string | string[];
344
286
  variant?: 'default' | 'compact' | 'executive';
345
287
  }
288
+ type PraxisXUiChartMotionPreset = 'subtle' | 'standard' | 'expressive';
289
+ interface PraxisXUiChartMotion {
290
+ enabled?: boolean;
291
+ preset?: PraxisXUiChartMotionPreset;
292
+ }
346
293
  interface PraxisXUiChartStateDescriptor {
347
294
  title?: PraxisXUiChartTextValue;
348
295
  description?: PraxisXUiChartTextValue;
@@ -368,6 +315,7 @@ interface PraxisXUiChartContract {
368
315
  kind: PraxisXUiChartKind;
369
316
  preset?: PraxisXUiChartPreset;
370
317
  chartId?: string;
318
+ orientation?: 'vertical' | 'horizontal';
371
319
  title?: PraxisXUiChartTextValue;
372
320
  subtitle?: PraxisXUiChartTextValue;
373
321
  height?: number | string;
@@ -385,11 +333,159 @@ interface PraxisXUiChartContract {
385
333
  theme?: PraxisXUiChartTheme;
386
334
  state?: PraxisXUiChartState;
387
335
  events?: PraxisXUiChartEvents;
336
+ motion?: PraxisXUiChartMotion;
388
337
  }
389
338
  interface PraxisXUiChartRuntimeHints {
390
339
  preferredLoadState?: Extract<PraxisChartLoadState, 'idle' | 'loading' | 'ready' | 'empty' | 'error'>;
391
340
  }
392
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
+ }
393
489
  interface PraxisChartWidgetSchema {
394
490
  kind?: 'x-ui.chart';
395
491
  componentId?: 'praxis-chart' | 'chart';
@@ -400,7 +496,7 @@ interface PraxisChartWidgetSchema {
400
496
  outputs?: WidgetDefinition['outputs'];
401
497
  bindingOrder?: string[];
402
498
  shell?: WidgetShellConfig;
403
- layout?: GridItemLayout;
499
+ canvasItem?: PraxisChartCanvasItem;
404
500
  }
405
501
  interface PraxisChartWidgetResolution {
406
502
  componentId: 'praxis-chart';
@@ -408,11 +504,10 @@ interface PraxisChartWidgetResolution {
408
504
  definition: WidgetDefinition;
409
505
  shell?: WidgetShellConfig;
410
506
  className?: string;
411
- layout?: GridItemLayout;
507
+ canvasItem?: PraxisChartCanvasItem;
412
508
  }
413
509
  type PraxisChartWidgetLike = PraxisXUiChartContract | PraxisChartWidgetSchema;
414
510
  type PraxisChartWidgetInstance = WidgetInstance;
415
- type PraxisChartGridWidgetInstance = GridWidgetInstance;
416
511
 
417
512
  interface PraxisChartSchemaMeta {
418
513
  schemaId: string;
@@ -426,7 +521,7 @@ interface PraxisChartBackendWidgetPayload {
426
521
  kind?: 'x-ui.chart';
427
522
  key?: string;
428
523
  className?: string;
429
- layout?: GridItemLayout;
524
+ canvasItem?: PraxisChartCanvasItem;
430
525
  shell?: WidgetShellConfig;
431
526
  outputs?: PraxisChartWidgetSchema['outputs'];
432
527
  bindingOrder?: string[];
@@ -456,15 +551,57 @@ declare const PRAXIS_CHART_ENGINE: InjectionToken<PraxisChartEngineAdapter>;
456
551
 
457
552
  declare function providePraxisCharts(): Provider[];
458
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
+
459
590
  declare class PraxisChartCanonicalContractMapperService {
591
+ private readonly normalizer;
592
+ private readonly validator;
593
+ constructor(normalizer?: ChartContractNormalizerService, validator?: ChartContractValidationService);
460
594
  toPraxisChartConfig(contract: PraxisXUiChartContract): PraxisChartConfig;
461
- private assertSupportedContract;
462
595
  private buildAxes;
463
596
  private buildSeries;
464
597
  private buildDataSource;
465
598
  private buildQuery;
466
599
  private buildInteractions;
467
600
  private buildTheme;
601
+ private buildMotion;
602
+ private resolveOrientation;
603
+ private resolveSeriesType;
604
+ private shouldSmoothSeries;
468
605
  private mapTextValue;
469
606
  private toLabel;
470
607
  private resolveToggle;
@@ -474,6 +611,7 @@ declare class PraxisChartCanonicalContractMapperService {
474
611
  private buildStatsRequest;
475
612
  private resolveStatsField;
476
613
  private buildStatsMetricRequest;
614
+ private buildStatsMetricRequests;
477
615
  private mapStatsOrderBy;
478
616
  private mapStatsOrderByToBackend;
479
617
  private mapStatsGranularityToBackend;
@@ -486,13 +624,14 @@ declare class PraxisChartCanonicalContractMapperService {
486
624
  interface PraxisChartCartesianSeries {
487
625
  id: string;
488
626
  name: string;
489
- type: 'bar' | 'line';
627
+ type: 'bar' | 'line' | 'scatter';
628
+ axis?: 'primary' | 'secondary';
490
629
  stack?: string;
491
630
  smooth?: boolean;
492
631
  area?: boolean;
493
632
  color?: string;
494
633
  labelsVisible?: boolean;
495
- points: Array<number | null>;
634
+ points: Array<number | null | [number | string, number | null]>;
496
635
  }
497
636
  interface PraxisChartPieSlice {
498
637
  id: string;
@@ -501,7 +640,7 @@ interface PraxisChartPieSlice {
501
640
  color?: string;
502
641
  }
503
642
  interface PraxisChartTransformedData {
504
- mode: 'cartesian' | 'pie';
643
+ mode: 'cartesian' | 'pie' | 'scatter';
505
644
  categories: string[];
506
645
  series: PraxisChartCartesianSeries[];
507
646
  slices: PraxisChartPieSlice[];
@@ -512,9 +651,13 @@ declare class PraxisChartDataTransformerService {
512
651
  private transformCartesian;
513
652
  private transformPie;
514
653
  private buildCartesianSeries;
654
+ private resolveCartesianSeriesType;
655
+ private isAreaLikeSeries;
656
+ private transformScatter;
515
657
  private aggregate;
516
658
  private extractMetricValue;
517
659
  private normalizeCategory;
660
+ private extractScatterXValue;
518
661
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartDataTransformerService, never>;
519
662
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartDataTransformerService>;
520
663
  }
@@ -524,6 +667,8 @@ declare class PraxisChartOptionBuilderService {
524
667
  constructor(transformer: PraxisChartDataTransformerService);
525
668
  build(config: PraxisChartConfig, rows: PraxisChartDataRow[]): EChartsCoreOption;
526
669
  private resolveText;
670
+ private buildGrid;
671
+ private buildCartesianYAxis;
527
672
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartOptionBuilderService, never>;
528
673
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartOptionBuilderService>;
529
674
  }
@@ -543,16 +688,12 @@ declare class PraxisChartSchemaMapperService {
543
688
  constructor(metadataRegistration: PraxisChartMetadataRegistrationService, canonicalContractMapper: PraxisChartCanonicalContractMapperService);
544
689
  resolve(input: PraxisChartWidgetLike, defaults?: {
545
690
  key?: string;
546
- layout?: GridItemLayout;
691
+ canvasItem?: PraxisChartCanvasItem;
547
692
  }): PraxisChartWidgetResolution;
548
693
  toWidgetDefinition(input: PraxisChartWidgetLike): WidgetDefinition;
549
694
  toWidgetInstance(input: PraxisChartWidgetLike, defaults?: {
550
695
  key?: string;
551
696
  }): WidgetInstance;
552
- toGridWidgetInstance(input: PraxisChartWidgetLike, defaults: {
553
- key?: string;
554
- layout: GridItemLayout;
555
- }): GridWidgetInstance;
556
697
  private normalize;
557
698
  private isWidgetSchema;
558
699
  private isCanonicalChartContract;
@@ -568,7 +709,7 @@ declare class PraxisChartBackendPayloadAdapterService {
568
709
  constructor(chartSchemaMapper: PraxisChartSchemaMapperService, canonicalContractMapper: PraxisChartCanonicalContractMapperService);
569
710
  toChartConfig(payload: PraxisChartBackendPayload): PraxisChartConfig;
570
711
  toWidgetInstance(payload: PraxisChartBackendPayload): WidgetInstance;
571
- toGridWidgetInstance(payload: PraxisChartBackendPayload): GridWidgetInstance;
712
+ toCanvasItem(payload: PraxisChartBackendPayload, fallback?: PraxisChartCanvasItem): PraxisChartCanvasItem;
572
713
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartBackendPayloadAdapterService, never>;
573
714
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PraxisChartBackendPayloadAdapterService>;
574
715
  }
@@ -582,7 +723,8 @@ declare class PraxisChartStatsApiService {
582
723
  private resolveBucketCategory;
583
724
  private resolveMetricValue;
584
725
  private resolveCategoryField;
585
- private resolveMetricField;
726
+ private resolveMetricBindings;
727
+ private projectMetricValues;
586
728
  private buildStatsUrl;
587
729
  private buildDefaultApiBase;
588
730
  private normalizePath;
@@ -596,35 +738,299 @@ declare class PraxisChartStatsApiService {
596
738
  declare const PRAXIS_CHART_BACKEND_MOCK_BAR: PraxisChartBackendPayload;
597
739
  declare const PRAXIS_CHART_BACKEND_MOCK_TIMESERIES: PraxisChartBackendPayload;
598
740
  declare const PRAXIS_CHART_BACKEND_MOCK_DONUT: PraxisChartBackendPayload;
741
+ declare const PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR: PraxisChartBackendPayload;
742
+ declare const PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA: PraxisChartBackendPayload;
743
+ declare const PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR: PraxisChartBackendPayload;
744
+ declare const PRAXIS_CHART_BACKEND_MOCK_SCATTER: PraxisChartBackendPayload;
745
+ declare const PRAXIS_CHART_BACKEND_MOCK_COMBO: PraxisChartBackendPayload;
599
746
 
600
747
  declare const PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH: Record<string, PraxisChartDataRow[]>;
601
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
+ };
602
758
  declare function buildPraxisChartMockWidgetPage(adapter: PraxisChartBackendPayloadAdapterService): WidgetPageDefinition;
603
- declare function buildPraxisChartMockGridPage(adapter: PraxisChartBackendPayloadAdapterService): GridPageDefinition;
759
+ declare function buildPraxisChartMockCanvasPage(adapter: PraxisChartBackendPayloadAdapterService): CanvasWidgetPageDefinition;
604
760
  declare function buildPraxisChartInteractiveWidgetPage(adapter: PraxisChartBackendPayloadAdapterService): WidgetPageDefinition;
605
- declare function buildPraxisChartInteractiveGridPage(adapter: PraxisChartBackendPayloadAdapterService): GridPageDefinition;
761
+ declare function buildPraxisChartInteractiveCanvasPage(adapter: PraxisChartBackendPayloadAdapterService): CanvasWidgetPageDefinition;
606
762
 
607
- type ShowcaseLayoutMode = 'widget' | 'grid';
608
- type ShowcasePayloadMode = 'group-by' | 'timeseries' | 'distribution';
763
+ type ShowcaseLayoutMode = 'widget' | 'canvas';
764
+ type ShowcasePayloadMode = 'group-by' | 'timeseries' | 'distribution' | 'horizontal-bar' | 'stacked-area' | 'multi-metric-bar' | 'scatter' | 'combo';
609
765
  type ShowcaseScenarioMode = 'baseline' | 'interactive' | 'empty' | 'loading' | 'error';
610
766
  declare class PraxisChartCompositionShowcaseComponent {
767
+ readonly enableCustomization: _angular_core.InputSignalWithTransform<boolean, unknown>;
611
768
  protected readonly layoutMode: _angular_core.WritableSignal<ShowcaseLayoutMode>;
612
769
  protected readonly payloadMode: _angular_core.WritableSignal<ShowcasePayloadMode>;
613
770
  protected readonly scenarioMode: _angular_core.WritableSignal<ShowcaseScenarioMode>;
614
- protected readonly runtimeContext: {
771
+ private readonly backendPayloadAdapter;
772
+ protected readonly runtimeContext: _angular_core.Signal<{
615
773
  tenantId: string;
616
774
  locale: string;
617
775
  environment: string;
618
- };
619
- private readonly backendPayloadAdapter;
776
+ enableCustomization: boolean;
777
+ }>;
620
778
  protected readonly widgetPage: _angular_core.Signal<_praxisui_core.WidgetPageDefinition>;
621
- protected readonly gridPage: _angular_core.Signal<_praxisui_core.GridPageDefinition>;
622
- protected readonly payloadTitle: _angular_core.Signal<"Envelope timeseries" | "Envelope distribution" | "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">;
623
838
  protected readonly selectedPayloadJson: _angular_core.Signal<string>;
624
839
  private readonly selectedPayload;
840
+ private buildScenarioCanvasPage;
625
841
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisChartCompositionShowcaseComponent, never>;
626
- 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>;
627
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;
628
1034
 
629
1035
  declare const PRAXIS_CHART_COMPONENT_METADATA: ComponentDocMeta;
630
1036
  declare function providePraxisChartsMetadata(): Provider;
@@ -635,5 +1041,5 @@ declare function providePraxisChartDrilldownPanelMetadata(): Provider;
635
1041
  declare const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta;
636
1042
  declare function providePraxisChartStateProbeMetadata(): Provider;
637
1043
 
638
- export { PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_DONUT, 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 };
639
- 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 };