@praxisui/table 4.0.0-beta.0 → 5.0.0-beta.0

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnChanges, OnDestroy, EventEmitter, ElementRef, SimpleChanges, OnInit, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, Provider, AfterContentInit } from '@angular/core';
2
+ import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { MatTable, MatTableDataSource } from '@angular/material/table';
5
5
  import { MatPaginator, PageEvent } from '@angular/material/paginator';
@@ -10,18 +10,17 @@ import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag
10
10
  import { BehaviorSubject, Subscription, Observable } from 'rxjs';
11
11
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
12
12
  import * as _praxisui_core from '@praxisui/core';
13
- import { TableConfig, LoggerService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, LoadingState, RestApiLinks, ColumnDefinition, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, PraxisLoadingRenderer, ResourceActionCatalogItem, GlobalActionSpec, IconPickerService, SurfaceOpenPayload, GlobalActionField, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, FieldDefinition, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
14
- import { FunctionRegistry, DslParser } from '@praxisui/specification';
13
+ import { TableConfig, LoggerService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, LoadingState, RestApiLinks, ColumnDefinition, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, PraxisLoadingRenderer, ResourceActionCatalogItem, JsonLogicExpression, GlobalActionSpec, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisJsonLogicService, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
15
14
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
16
15
  import { MatDialog } from '@angular/material/dialog';
17
16
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
18
17
  import { PraxisDialog } from '@praxisui/dialog';
19
18
  import { MatTabChangeEvent } from '@angular/material/tabs';
19
+ import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
20
+ import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
20
21
  import { HttpClient } from '@angular/common/http';
21
22
  import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
22
23
  import { MatCheckboxChange } from '@angular/material/checkbox';
23
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
24
- import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
25
24
 
26
25
  interface ActionLike {
27
26
  action?: string;
@@ -35,10 +34,9 @@ interface ActionLike {
35
34
  }
36
35
  declare function getActionId(action: ActionLike): string;
37
36
 
38
- declare class PraxisTableToolbar implements OnChanges, OnDestroy {
37
+ declare class PraxisTableToolbar implements OnDestroy {
39
38
  private hostRef;
40
39
  private logger?;
41
- private static dslRuntimeInstanceCounter;
42
40
  config?: TableConfig;
43
41
  backgroundColor: string | null;
44
42
  placement: 'header' | 'footer';
@@ -47,18 +45,14 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
47
45
  showEndActions: boolean;
48
46
  showMobileActions: boolean;
49
47
  showReset: boolean;
50
- dslContext: Record<string, any> | null;
51
- dslFunctionRegistry: FunctionRegistry<any> | null;
48
+ evaluationContext: Record<string, any> | null;
52
49
  toolbarAction: EventEmitter<{
53
50
  action: string;
54
51
  actionConfig?: any;
55
52
  }>;
56
53
  reset: EventEmitter<void>;
57
54
  readonly getActionId: typeof getActionId;
58
- private dslParser;
59
- private dslRuntimeRegistry;
60
- private readonly dslRuntimeContextKey;
61
- private readonly visibleWhenSpecCache;
55
+ private readonly jsonLogic;
62
56
  private readonly validToolbarActionTypes;
63
57
  private readonly warnedInvalidToolbarActionTypes;
64
58
  private readonly warnedMenuWithoutChildren;
@@ -69,9 +63,7 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
69
63
  private fallbackLogger?;
70
64
  private fallbackLoggerEnvironment;
71
65
  constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined);
72
- ngOnChanges(changes: SimpleChanges): void;
73
66
  ngOnDestroy(): void;
74
- private configureDslRuntime;
75
67
  private getNestedPropertyValue;
76
68
  private cloneForEmit;
77
69
  private getLogger;
@@ -95,12 +87,12 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
95
87
  private resolveVisibleToolbarAction;
96
88
  private isActionVisible;
97
89
  private evaluateVisibleWhen;
90
+ private isJsonLogicExpression;
98
91
  private resolveVisibleWhenFallback;
99
92
  private resolveVisibleWhenFallbackPolicy;
100
93
  private resolveRuntimeEnvironment;
101
94
  private isDiagnosticsEnvironment;
102
- private buildDslContext;
103
- private getKnownDslFields;
95
+ private buildEvaluationContext;
104
96
  private warnVisibleWhenFallback;
105
97
  private collectShortcutBindings;
106
98
  private resolveShortcutScope;
@@ -117,7 +109,7 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
117
109
  private sortActions;
118
110
  getExportIcon(format: string): string;
119
111
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }]>;
120
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "showReset": { "alias": "showReset"; "required": false; }; "dslContext": { "alias": "dslContext"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "reset": "reset"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
112
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "showReset": { "alias": "showReset"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "reset": "reset"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
121
113
  }
122
114
 
123
115
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -873,7 +865,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
873
865
  private loadingRenderer?;
874
866
  private route?;
875
867
  private logger?;
876
- private static dslRuntimeInstanceCounter;
877
868
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
878
869
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
879
870
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
@@ -894,7 +885,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
894
885
  snoozeMs: number;
895
886
  autoOpenSettingsOnOutdated: boolean;
896
887
  crudContext: any;
897
- dslFunctionRegistry: FunctionRegistry<any> | null;
898
888
  filterCriteria: Record<string, any>;
899
889
  queryContext: PraxisDataQueryContextBridge | null;
900
890
  rowClick: EventEmitter<any>;
@@ -1056,13 +1046,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1056
1046
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1057
1047
  aiAdapter: any;
1058
1048
  private aiAdapterLoadStarted;
1059
- styleSpecCache: Map<string, any>;
1060
- actionSpecCache: Map<string, any>;
1061
1049
  private computedContextCache;
1062
1050
  private computedFieldNames;
1063
- dslParser: DslParser<any>;
1064
- private dslRuntimeRegistry;
1065
- private readonly dslRuntimeContextKey;
1051
+ private readonly jsonLogic;
1066
1052
  private computedExpressionEvaluator;
1067
1053
  private resizeObserver;
1068
1054
  private removeViewportChangeListeners;
@@ -1107,7 +1093,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1107
1093
  private ensureConfigDefaults;
1108
1094
  private setShowToolbar;
1109
1095
  private shouldExposeToolbar;
1110
- private configureDslRuntime;
1111
1096
  constructor(cdr: ChangeDetectorRef, settingsPanel: SettingsPanelService, crudService: GenericCrudService<any, any>, tableDefaultsProvider: TableDefaultsProvider, filterConfig: FilterConfigService, formattingService: DataFormattingService, pxDialog: PraxisDialog, snackBar: MatSnackBar, asyncConfigStorage: AsyncConfigStorage, connectionStorage: ConnectionStorage, hostRef: ElementRef<HTMLElement>, global: GlobalConfigService, resourceDiscovery: ResourceDiscoveryService, componentKeys: ComponentKeyService, loadingOrchestrator: LoadingOrchestrator, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
1112
1097
  private ensureAiAdapterLoaded;
1113
1098
  private emitLoadingState;
@@ -1408,9 +1393,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1408
1393
  private evaluateStyleRule;
1409
1394
  private evaluateActionVisibilityCondition;
1410
1395
  private evaluateActionDisabledCondition;
1411
- /** Evaluate row action conditions using the same DSL runtime with explicit failure policy. */
1396
+ /** Evaluate row action conditions using the canonical JSON Logic runtime with explicit failure policy. */
1412
1397
  private evaluateActionCondition;
1413
1398
  private resolveRowVisibleWhenFailurePolicy;
1399
+ private isJsonLogicExpression;
1400
+ private hasConditionalExpression;
1414
1401
  private resolveRuntimeEnvironment;
1415
1402
  private isDiagnosticsRuntimeEnvironment;
1416
1403
  private logActionConditionFallback;
@@ -1478,7 +1465,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1478
1465
  private isRowExpansionSupported;
1479
1466
  private enforceAppearanceSchemaGuards;
1480
1467
  private enforceUnsupportedFeatureGuards;
1481
- getToolbarDslContext(): Record<string, any>;
1468
+ getToolbarEvaluationContext(): Record<string, any>;
1482
1469
  getIconName(row: any, column: ColumnDefinition): string | null;
1483
1470
  getIconColor(_row: any, column: ColumnDefinition): string | null;
1484
1471
  getIconStyle(_row: any, column: ColumnDefinition): Record<string, string> | null;
@@ -1490,6 +1477,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1490
1477
  */
1491
1478
  private evaluateValueExpr;
1492
1479
  private evaluateComputedValue;
1480
+ private hasCanonicalComputedExpression;
1481
+ private buildComputedRuleData;
1482
+ private resolveComputedDependencyValue;
1493
1483
  private evaluateLegacyExpression;
1494
1484
  private tryEvaluateLegacyConcat;
1495
1485
  private tryEvaluateLegacyTernary;
@@ -1614,6 +1604,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1614
1604
  private emitMetadataChange;
1615
1605
  private emitSchemaStatus;
1616
1606
  getRowId(row: any): any;
1607
+ private reconcileSelectionAfterDataChange;
1608
+ private getComparableRowIdentity;
1617
1609
  getIdField(): string;
1618
1610
  private syncRuntimeSchemaMetaFromConfig;
1619
1611
  private getEffectiveMetadataSnapshot;
@@ -1673,7 +1665,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1673
1665
  private scheduleRowDiscoveryMarkForCheck;
1674
1666
  ngOnDestroy(): void;
1675
1667
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
1676
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1668
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1677
1669
  static ngAcceptInputType_enableCustomization: unknown;
1678
1670
  }
1679
1671
 
@@ -1912,6 +1904,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
1912
1904
  duplicateConditionalOverride(index: number): void;
1913
1905
  onConditionalOverrideReorder(event: any): void;
1914
1906
  selectConditionalOverride(index: number): void;
1907
+ getJsonLogicText(value: JsonLogicExpression | null | undefined): string;
1908
+ getJsonLogicSummary(value: JsonLogicExpression | null | undefined): string;
1909
+ private parseJsonLogicText;
1910
+ setConditionalOverrideCondition(index: number, raw: string): void;
1915
1911
  getOverrideField(path: string): any;
1916
1912
  setOverrideField(path: string, value: any): void;
1917
1913
  onOverrideTypeChange(ov: any, val: string): void;
@@ -2015,6 +2011,7 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
2015
2011
  private ensureRenderer;
2016
2012
  private _ensureKind;
2017
2013
  getRendererProp(kind: string, path: string): any;
2014
+ setRendererJsonLogicProp(kind: string, path: string, raw: string): void;
2018
2015
  setRendererProp(kind: string, path: string, value: any): void;
2019
2016
  private _deepClone;
2020
2017
  hasSelectedRenderer(): boolean;
@@ -2656,6 +2653,262 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2656
2653
  static ɵcmp: i0.ɵɵComponentDeclaration<FilterSettingsComponent, "filter-settings", never, { "metadata": { "alias": "metadata"; "required": false; }; "metadataSource": { "alias": "metadataSource"; "required": false; }; "metadataLoading": { "alias": "metadataLoading"; "required": false; }; "metadataErrorMsg": { "alias": "metadataErrorMsg"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "configKey": { "alias": "configKey"; "required": false; }; }, { "settingsChange": "settingsChange"; }, never, never, true, never>;
2657
2654
  }
2658
2655
 
2656
+ type ColumnDataType = 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
2657
+
2658
+ type OperatorKey = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'contains' | 'startsWith' | 'endsWith' | 'matches' | 'not matches' | 'in' | 'not in' | 'is empty' | 'is not empty' | 'between' | 'is today' | 'in last' | 'weekday is' | 'is true' | 'is false' | 'contains all' | 'contains any' | 'length ==' | 'length >' | 'length <' | 'jsonPath matches' | 'has key' | 'key ==' | 'id ==' | 'id in' | 'has property';
2659
+ interface OperatorSpec {
2660
+ key: OperatorKey;
2661
+ label: string;
2662
+ icon?: string;
2663
+ description?: string;
2664
+ }
2665
+ declare class OperatorsRegistryService {
2666
+ /** Returns the list of operator specs supported for a given data type. */
2667
+ getForType(type: ColumnDataType | 'enum' | 'array' | 'json' | 'relational'): OperatorSpec[];
2668
+ get keys(): OperatorKey[];
2669
+ private readonly stringOps;
2670
+ private readonly numberOps;
2671
+ private readonly dateOps;
2672
+ private readonly booleanOps;
2673
+ private readonly enumOps;
2674
+ private readonly arrayOps;
2675
+ private readonly jsonOps;
2676
+ private readonly relationalOps;
2677
+ static ɵfac: i0.ɵɵFactoryDeclaration<OperatorsRegistryService, never>;
2678
+ static ɵprov: i0.ɵɵInjectableDeclaration<OperatorsRegistryService>;
2679
+ }
2680
+
2681
+ type GroupOp = 'AND' | 'OR' | 'NOT';
2682
+ interface RuleAtom {
2683
+ field: string;
2684
+ operator: string;
2685
+ value?: any;
2686
+ options?: Record<string, any>;
2687
+ }
2688
+ interface RuleGroup {
2689
+ op: GroupOp;
2690
+ conditions: RuleAtom[];
2691
+ groups?: RuleGroup[];
2692
+ }
2693
+ type StructuredRuleCondition = JsonLogicExpression | null;
2694
+ declare class RuleCompilerService {
2695
+ /**
2696
+ * Compiles a rule group into a single textual expression string, adding
2697
+ * parentheses according to grouping and operator precedence.
2698
+ */
2699
+ compileGroup(group: RuleGroup): string;
2700
+ /** Compiles a single rule atom to a textual expression. */
2701
+ compileAtom(atom: RuleAtom): string;
2702
+ compileGroupToJsonLogic(group: RuleGroup): StructuredRuleCondition;
2703
+ compileAtomToJsonLogic(atom: RuleAtom): JsonLogicExpression | null;
2704
+ private stringify;
2705
+ private toJsonLogicValue;
2706
+ private toList;
2707
+ static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
2708
+ static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2709
+ }
2710
+
2711
+ type RuleItem = {
2712
+ condition: JsonLogicExpression;
2713
+ cssClass?: string;
2714
+ style?: Record<string, string>;
2715
+ description?: string;
2716
+ effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
2717
+ enabled?: boolean;
2718
+ };
2719
+ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
2720
+ private cdr;
2721
+ private registry;
2722
+ private compiler;
2723
+ private jsonLogic;
2724
+ private dynamicForm;
2725
+ private crud?;
2726
+ private get jsonLogicValidator();
2727
+ private readonly i18n;
2728
+ config: TableConfig;
2729
+ resourcePath?: string;
2730
+ fields?: FieldDefinition[] | null;
2731
+ i18nRules?: Partial<Record<string, string>>;
2732
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
2733
+ scope: 'row' | 'column';
2734
+ selectedColumnField: string | null;
2735
+ draftCondition: string;
2736
+ draftCssClass: string;
2737
+ draftStyleText: string;
2738
+ sanitizedStyle: Record<string, string>;
2739
+ manualMode: boolean;
2740
+ manualErrors: string[];
2741
+ testSummary: string;
2742
+ editIndex: number;
2743
+ get currentRules(): RuleItem[];
2744
+ set currentRules(v: RuleItem[]);
2745
+ rulesRow: RuleItem[];
2746
+ rulesColumn: RuleItem[];
2747
+ objectKeys: {
2748
+ (o: object): string[];
2749
+ (o: {}): string[];
2750
+ };
2751
+ dynamicValueForm: FormGroup;
2752
+ dynamicValueMetas: FieldMetadata[];
2753
+ effectsValue?: RuleEffectDefinition;
2754
+ dynamicValueActive: boolean;
2755
+ private dynamicValueSub?;
2756
+ private testSummaryTimer;
2757
+ private readonly legacyStyleAllowList;
2758
+ basicFieldType: 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
2759
+ noValueOperator: boolean;
2760
+ i18nValuePlaceholder: string;
2761
+ enumOptions: Array<{
2762
+ value: any;
2763
+ label: string;
2764
+ }>;
2765
+ private updateDerivedUiProps;
2766
+ /** Enable verbose console logging for debugging value editor behavior */
2767
+ debugLogs: boolean;
2768
+ debugLevel: 'log' | 'info' | 'debug';
2769
+ private dbg;
2770
+ /** Log a summary table of field metadata and column info for diagnostics */
2771
+ private logFieldMetasContext;
2772
+ /** Log a focused view for a single field */
2773
+ private logSingleFieldMeta;
2774
+ private logFieldChoices;
2775
+ t(key: string): string;
2776
+ constructor(cdr: ChangeDetectorRef, registry: OperatorsRegistryService, compiler: RuleCompilerService, jsonLogic: PraxisJsonLogicService, dynamicForm: DynamicFormService, crud?: GenericCrudService<any> | undefined);
2777
+ ngOnInit(): void;
2778
+ ngOnChanges(changes: SimpleChanges): void;
2779
+ ngOnDestroy(): void;
2780
+ get columnFields(): string[];
2781
+ getOperatorsForField(fieldName: string | null): string[];
2782
+ onScopeChange(scope: 'row' | 'column'): void;
2783
+ onColumnSelect(field: string): void;
2784
+ private initFromConfig;
2785
+ private loadColumnRules;
2786
+ rebuildCondition(): void;
2787
+ onDraftChange(): void;
2788
+ applyTextPreset(preset: string): void;
2789
+ generateSampleData(): void;
2790
+ runTest(): void;
2791
+ onRelSearch(ev: any): void;
2792
+ clearRelSelection(): void;
2793
+ onRelSelectSingle(opt: any): void;
2794
+ onRelAddMulti(opt: any): void;
2795
+ removeRelMulti(i: number): void;
2796
+ private fetchRelOptions;
2797
+ private getRelationalConfig;
2798
+ validateDraft(): void;
2799
+ canCommitDraft(): boolean;
2800
+ private toPersistedCellClassAndStyle;
2801
+ addOrUpdateRule(): void;
2802
+ editRule(index: number): void;
2803
+ removeRule(index: number): void;
2804
+ duplicateRule(index: number): void;
2805
+ onRuleToggle(): void;
2806
+ buildAppliedConfig(baseConfig?: TableConfig): TableConfig;
2807
+ onApply(): void;
2808
+ isValid(): boolean;
2809
+ onExportRules(): void;
2810
+ onImportRules(): void;
2811
+ private sanitizeRule;
2812
+ getAnimationLabel(r: RuleItem): string | null;
2813
+ private normalizeRendererAnimation;
2814
+ private buildRendererOverrideFromRule;
2815
+ private buildLegacyRendererOverrideFromRule;
2816
+ private buildRowRendererOverrideFromRule;
2817
+ private stringifyValue;
2818
+ getConditionLabel(condition: RuleItem['condition'] | null | undefined): string;
2819
+ private buildPersistedCondition;
2820
+ private sanitizePersistedCondition;
2821
+ private parseLegacyStyle;
2822
+ private normalizeLegacyStyleObject;
2823
+ resetDraft(): void;
2824
+ private parseManualCondition;
2825
+ private tryParseManualCondition;
2826
+ private validateManualCondition;
2827
+ private getInvalidVarPaths;
2828
+ private collectVarPaths;
2829
+ private isKnownJsonLogicPath;
2830
+ private isManualExpressionCandidate;
2831
+ private looksLikeLegacyExpression;
2832
+ private toManualValidationMessage;
2833
+ basicField: string;
2834
+ basicOperator: string;
2835
+ basicValue: any;
2836
+ basicMin: any;
2837
+ basicMax: any;
2838
+ basicListCsv: string;
2839
+ basicDate: Date | null;
2840
+ basicDateStart: Date | null;
2841
+ basicDateEnd: Date | null;
2842
+ basicEnumValue: string | number | null;
2843
+ basicEnumValues: Array<string | number>;
2844
+ basicLength: number | null;
2845
+ relationalSelected: {
2846
+ id: any;
2847
+ label: string;
2848
+ raw: any;
2849
+ } | null;
2850
+ relationalSelectedMulti: Array<{
2851
+ id: any;
2852
+ label: string;
2853
+ raw: any;
2854
+ }>;
2855
+ relationalOptions: Array<{
2856
+ id: any;
2857
+ label: string;
2858
+ raw: any;
2859
+ }>;
2860
+ basicRelPath: string;
2861
+ private relSearchTerm;
2862
+ private relCache;
2863
+ basicLastN: number | null;
2864
+ basicLastUnit: 'days' | 'weeks' | 'months';
2865
+ basicWeekdays: number[];
2866
+ weekdayOptions: {
2867
+ value: number;
2868
+ label: string;
2869
+ }[];
2870
+ basicJsonPath: string;
2871
+ basicJsonPattern: string;
2872
+ basicJsonKey: string;
2873
+ basicJsonExpected: any;
2874
+ draftGroup: RuleGroup;
2875
+ editAtomIndex: number;
2876
+ activeGroupTarget: 'root' | number;
2877
+ onEffectsChange(v: RuleEffectDefinition): void;
2878
+ private hasRuleEffectsValue;
2879
+ getFieldType(fieldName: string | null): 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
2880
+ getEnumOptions(fieldName: string | null): Array<{
2881
+ value: any;
2882
+ label: string;
2883
+ }>;
2884
+ isNoValueOperator(op: string): boolean;
2885
+ getValuePlaceholder(): string;
2886
+ getI18nValuePlaceholder(): string;
2887
+ private toIsoDateString;
2888
+ setManualMode(v: boolean): void;
2889
+ onBasicFieldChange(_val: string): void;
2890
+ onBasicOperatorChange(_val: string): void;
2891
+ private refreshDynamicValueInitialValueOnly;
2892
+ refreshDynamicValueHost(): void;
2893
+ private buildAtomFromBasic;
2894
+ canBuildAtom(): boolean;
2895
+ onAddOrUpdateAtom(): void;
2896
+ editAtom(index: number): void;
2897
+ removeAtom(index: number): void;
2898
+ resetAtomEdit(): void;
2899
+ private focusAddCondition;
2900
+ clearGroup(): void;
2901
+ onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
2902
+ updateDraftFromGroup(): void;
2903
+ getAtomPreview(a: RuleAtom): string;
2904
+ addSubgroup(): void;
2905
+ removeSubgroup(index: number): void;
2906
+ getGroupPreview(g: RuleGroup): string;
2907
+ private getActiveGroupRef;
2908
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, null, { optional: true; }]>;
2909
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableRulesEditorComponent, "table-rules-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18nRules": { "alias": "i18nRules"; "required": false; }; "debugLogs": { "alias": "debugLogs"; "required": false; }; "debugLevel": { "alias": "debugLevel"; "required": false; }; }, { "configChange": "configChange"; }, never, never, true, never>;
2910
+ }
2911
+
2659
2912
  type ResourcePathIntent = 'set' | 'clear' | 'unchanged';
2660
2913
  type EffectiveDataMode = 'remote' | 'local' | 'empty';
2661
2914
  declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValueProvider {
@@ -2664,6 +2917,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
2664
2917
  private readonly i18n;
2665
2918
  filterSettingsEditor?: FilterSettingsComponent;
2666
2919
  behaviorEditor?: BehaviorConfigEditorComponent;
2920
+ rulesEditor?: TableRulesEditorComponent;
2667
2921
  set crudEditorSetter(ref: any);
2668
2922
  private crudEditor?;
2669
2923
  private _crudSubscribed;
@@ -2763,6 +3017,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
2763
3017
  */
2764
3018
  private deepEqual;
2765
3019
  getSettingsValue(): any;
3020
+ private syncRulesFromEditor;
2766
3021
  private syncFilterSettingsFromEditor;
2767
3022
  private hasAdvancedSettingsProperty;
2768
3023
  private syncLastKnownFilterSettingsFromEditedConfig;
@@ -3021,276 +3276,6 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3021
3276
  static ɵcmp: i0.ɵɵComponentDeclaration<ValueMappingEditorComponent, "value-mapping-editor", never, { "currentMapping": { "alias": "currentMapping"; "required": false; }; "keyInputType": { "alias": "keyInputType"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "labelValue": { "alias": "labelValue"; "required": false; }; }, { "mappingChange": "mappingChange"; }, never, never, true, never>;
3022
3277
  }
3023
3278
 
3024
- type ColumnDataType = 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
3025
-
3026
- type OperatorKey = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'contains' | 'startsWith' | 'endsWith' | 'matches' | 'not matches' | 'in' | 'not in' | 'is empty' | 'is not empty' | 'between' | 'is today' | 'in last' | 'weekday is' | 'is true' | 'is false' | 'contains all' | 'contains any' | 'length ==' | 'length >' | 'length <' | 'jsonPath matches' | 'has key' | 'key ==' | 'id ==' | 'id in' | 'has property';
3027
- interface OperatorSpec {
3028
- key: OperatorKey;
3029
- label: string;
3030
- icon?: string;
3031
- description?: string;
3032
- }
3033
- declare class OperatorsRegistryService {
3034
- /** Returns the list of operator specs supported for a given data type. */
3035
- getForType(type: ColumnDataType | 'enum' | 'array' | 'json' | 'relational'): OperatorSpec[];
3036
- get keys(): OperatorKey[];
3037
- private readonly stringOps;
3038
- private readonly numberOps;
3039
- private readonly dateOps;
3040
- private readonly booleanOps;
3041
- private readonly enumOps;
3042
- private readonly arrayOps;
3043
- private readonly jsonOps;
3044
- private readonly relationalOps;
3045
- static ɵfac: i0.ɵɵFactoryDeclaration<OperatorsRegistryService, never>;
3046
- static ɵprov: i0.ɵɵInjectableDeclaration<OperatorsRegistryService>;
3047
- }
3048
-
3049
- type GroupOp = 'AND' | 'OR' | 'NOT';
3050
- interface RuleAtom {
3051
- field: string;
3052
- operator: string;
3053
- value?: any;
3054
- options?: Record<string, any>;
3055
- }
3056
- interface RuleGroup {
3057
- op: GroupOp;
3058
- conditions: RuleAtom[];
3059
- groups?: RuleGroup[];
3060
- }
3061
- declare class RuleCompilerService {
3062
- /**
3063
- * Compiles a rule group into a single DSL expression string, adding
3064
- * parentheses according to grouping and operator precedence.
3065
- */
3066
- compileGroup(group: RuleGroup): string;
3067
- /** Compiles a single rule atom to DSL. */
3068
- compileAtom(atom: RuleAtom): string;
3069
- private stringify;
3070
- static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
3071
- static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
3072
- }
3073
-
3074
- type RuleItem = {
3075
- condition: string;
3076
- cssClass?: string;
3077
- style?: Record<string, string>;
3078
- description?: string;
3079
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3080
- enabled?: boolean;
3081
- };
3082
- declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
3083
- private cdr;
3084
- private registry;
3085
- private compiler;
3086
- private dynamicForm;
3087
- private crud?;
3088
- private static runtimeRegistryInstanceCounter;
3089
- private readonly i18n;
3090
- config: TableConfig;
3091
- resourcePath?: string;
3092
- fields?: FieldDefinition[] | null;
3093
- i18nRules?: Partial<Record<string, string>>;
3094
- dslFunctionRegistry: FunctionRegistry<any> | null;
3095
- configChange: EventEmitter<_praxisui_core.TableConfigModern>;
3096
- scope: 'row' | 'column';
3097
- selectedColumnField: string | null;
3098
- draftCondition: string;
3099
- draftCssClass: string;
3100
- draftStyleText: string;
3101
- sanitizedStyle: Record<string, string>;
3102
- dslMode: boolean;
3103
- dslErrors: string[];
3104
- testSummary: string;
3105
- editIndex: number;
3106
- get currentRules(): RuleItem[];
3107
- set currentRules(v: RuleItem[]);
3108
- rulesRow: RuleItem[];
3109
- rulesColumn: RuleItem[];
3110
- private parser;
3111
- private runtimeFunctionRegistry;
3112
- private readonly runtimeRegistryContextKey;
3113
- objectKeys: {
3114
- (o: object): string[];
3115
- (o: {}): string[];
3116
- };
3117
- dynamicValueForm: FormGroup;
3118
- dynamicValueMetas: FieldMetadata[];
3119
- effectsValue?: RuleEffectDefinition;
3120
- dynamicValueActive: boolean;
3121
- private dynamicValueSub?;
3122
- private testSummaryTimer;
3123
- private readonly legacyStyleAllowList;
3124
- basicFieldType: 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
3125
- noValueOperator: boolean;
3126
- i18nValuePlaceholder: string;
3127
- enumOptions: Array<{
3128
- value: any;
3129
- label: string;
3130
- }>;
3131
- private updateDerivedUiProps;
3132
- /** Enable verbose console logging for debugging value editor behavior */
3133
- debugLogs: boolean;
3134
- debugLevel: 'log' | 'info' | 'debug';
3135
- private dbg;
3136
- /** Log a summary table of field metadata and column info for diagnostics */
3137
- private logFieldMetasContext;
3138
- /** Log a focused view for a single field */
3139
- private logSingleFieldMeta;
3140
- private logFieldChoices;
3141
- t(key: string): string;
3142
- constructor(cdr: ChangeDetectorRef, registry: OperatorsRegistryService, compiler: RuleCompilerService, dynamicForm: DynamicFormService, crud?: GenericCrudService<any> | undefined);
3143
- private configureDslRuntime;
3144
- ngOnInit(): void;
3145
- ngOnChanges(changes: SimpleChanges): void;
3146
- ngOnDestroy(): void;
3147
- get columnFields(): string[];
3148
- getOperatorsForField(fieldName: string | null): string[];
3149
- onScopeChange(_s: 'row' | 'column'): void;
3150
- onColumnSelect(_field: string): void;
3151
- private initFromConfig;
3152
- private loadColumnRules;
3153
- rebuildCondition(): void;
3154
- onDraftChange(): void;
3155
- applyTextPreset(preset: string): void;
3156
- generateSampleData(): void;
3157
- runTest(): void;
3158
- onRelSearch(ev: any): void;
3159
- clearRelSelection(): void;
3160
- onRelSelectSingle(opt: any): void;
3161
- onRelAddMulti(opt: any): void;
3162
- removeRelMulti(i: number): void;
3163
- private fetchRelOptions;
3164
- private getRelationalConfig;
3165
- validateDraft(): void;
3166
- canCommitDraft(): boolean;
3167
- private toPersistedCellClassAndStyle;
3168
- addOrUpdateRule(): void;
3169
- editRule(index: number): void;
3170
- removeRule(index: number): void;
3171
- duplicateRule(index: number): void;
3172
- onRuleToggle(): void;
3173
- onApply(): void;
3174
- isValid(): boolean;
3175
- onExportRules(): void;
3176
- onImportRules(): void;
3177
- private sanitizeRule;
3178
- private getKnownDslFields;
3179
- getAnimationLabel(r: RuleItem): string | null;
3180
- private normalizeRendererAnimation;
3181
- private buildRendererOverrideFromRule;
3182
- private buildLegacyRendererOverrideFromRule;
3183
- private buildRowRendererOverrideFromRule;
3184
- private stringifyValue;
3185
- private parseLegacyStyle;
3186
- private normalizeLegacyStyleObject;
3187
- private extractIdentifiers;
3188
- resetDraft(): void;
3189
- basicField: string;
3190
- basicOperator: string;
3191
- basicValue: any;
3192
- basicMin: any;
3193
- basicMax: any;
3194
- basicListCsv: string;
3195
- basicDate: Date | null;
3196
- basicDateStart: Date | null;
3197
- basicDateEnd: Date | null;
3198
- basicEnumValue: string | number | null;
3199
- basicEnumValues: Array<string | number>;
3200
- basicLength: number | null;
3201
- relationalSelected: {
3202
- id: any;
3203
- label: string;
3204
- raw: any;
3205
- } | null;
3206
- relationalSelectedMulti: Array<{
3207
- id: any;
3208
- label: string;
3209
- raw: any;
3210
- }>;
3211
- relationalOptions: Array<{
3212
- id: any;
3213
- label: string;
3214
- raw: any;
3215
- }>;
3216
- basicRelPath: string;
3217
- private relSearchTerm;
3218
- private relCache;
3219
- basicLastN: number | null;
3220
- basicLastUnit: 'days' | 'weeks' | 'months';
3221
- basicWeekdays: number[];
3222
- weekdayOptions: {
3223
- value: number;
3224
- label: string;
3225
- }[];
3226
- basicJsonPath: string;
3227
- basicJsonPattern: string;
3228
- basicJsonKey: string;
3229
- basicJsonExpected: any;
3230
- draftGroup: RuleGroup;
3231
- editAtomIndex: number;
3232
- activeGroupTarget: 'root' | number;
3233
- onEffectsChange(v: RuleEffectDefinition): void;
3234
- private hasRuleEffectsValue;
3235
- getFieldType(fieldName: string | null): 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
3236
- getEnumOptions(fieldName: string | null): Array<{
3237
- value: any;
3238
- label: string;
3239
- }>;
3240
- isNoValueOperator(op: string): boolean;
3241
- getValuePlaceholder(): string;
3242
- getI18nValuePlaceholder(): string;
3243
- private toIsoDateString;
3244
- setDsl(v: boolean): void;
3245
- onBasicFieldChange(_val: string): void;
3246
- onBasicOperatorChange(_val: string): void;
3247
- private refreshDynamicValueInitialValueOnly;
3248
- refreshDynamicValueHost(): void;
3249
- private buildAtomFromBasic;
3250
- canBuildAtom(): boolean;
3251
- onAddOrUpdateAtom(): void;
3252
- editAtom(index: number): void;
3253
- removeAtom(index: number): void;
3254
- resetAtomEdit(): void;
3255
- private focusAddCondition;
3256
- clearGroup(): void;
3257
- onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
3258
- updateDraftFromGroup(): void;
3259
- getAtomPreview(a: RuleAtom): string;
3260
- addSubgroup(): void;
3261
- removeSubgroup(index: number): void;
3262
- getGroupPreview(g: RuleGroup): string;
3263
- private getActiveGroupRef;
3264
- static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, { optional: true; }]>;
3265
- static ɵcmp: i0.ɵɵComponentDeclaration<TableRulesEditorComponent, "table-rules-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18nRules": { "alias": "i18nRules"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; "debugLogs": { "alias": "debugLogs"; "required": false; }; "debugLevel": { "alias": "debugLevel"; "required": false; }; }, { "configChange": "configChange"; }, never, never, true, never>;
3266
- }
3267
-
3268
- /**
3269
- * Lightweight JSON path evaluator for simple cases used in conditional styling.
3270
- * Supported syntax (subset):
3271
- * - $.a.b.c
3272
- * - a.b[0].c
3273
- * - a["key"] / a['key']
3274
- * - a[0]
3275
- */
3276
- declare function jsonPathGet(root: any, rawPath: string): any;
3277
- declare function hasJsonKey(root: any, keyOrPath: string): boolean;
3278
- declare function jsonPathMatches(root: any, path: string, pattern: string): boolean;
3279
- /**
3280
- * Registers JSON helpers in a DslParser instance, if it supports custom functions.
3281
- * This is optional — call it in your app host bootstrap.
3282
- */
3283
- declare function registerJsonDslFunctions(parser: DslParser | any): void;
3284
-
3285
- /**
3286
- * Registers simple date/time helpers in a DslParser instance.
3287
- * - today(): returns 'YYYY-MM-DD' (UTC)
3288
- * - now(): returns Unix timestamp in milliseconds
3289
- * - dateAdd(date, amount, unit): adds amount (days|weeks|months) and returns 'YYYY-MM-DD'
3290
- * - dateFormat(date, token): supports token 'E' (ISO weekday 1..7)
3291
- */
3292
- declare function registerDateDslFunctions(parser: DslParser | any): void;
3293
-
3294
3279
  declare class FormulaGeneratorService {
3295
3280
  /**
3296
3281
  * Generates a safe JavaScript expression from a formula definition
@@ -3486,5 +3471,5 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
3486
3471
  }
3487
3472
  declare const TABLE_COMPONENT_AI_CAPABILITIES: CapabilityCatalog;
3488
3473
 
3489
- export { AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_TABLE_COMPONENT_METADATA, PraxisFilter, PraxisTable, PraxisTableConfigEditor, PraxisTableToolbar, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, hasJsonKey, jsonPathGet, jsonPathMatches, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, registerDateDslFunctions, registerJsonDslFunctions, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
3474
+ export { AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_TABLE_COMPONENT_METADATA, PraxisFilter, PraxisTable, PraxisTableConfigEditor, PraxisTableToolbar, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
3490
3475
  export type { ActionLike, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };