@praxisui/table 8.0.0-beta.85 → 8.0.0-beta.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { firstValueFrom } from 'rxjs';
2
2
  import { BaseAiAdapter, createComponentAuthoringContext } from '@praxisui/ai';
3
3
  import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
4
- import { z as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, R as coerceTableComponentEditPlans, W as compileTableComponentEditPlans, G as TASK_PRESETS, $ as getTableComponentEditPlanCapabilities, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-BdJW7m53.mjs';
4
+ import { G as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, W as coerceTableComponentEditPlans, Y as compileTableComponentEditPlans, I as TASK_PRESETS, a1 as getTableComponentEditPlanCapabilities, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-CpSv6jWv.mjs';
5
5
 
6
6
  const TABLE_COMPONENT_CONTEXT_PACK = {
7
7
  version: 'v1',
@@ -1890,6 +1890,10 @@ const TABLE_RECORD_SURFACE_OPEN_ACTION_IDS = new Set(['surface.open', 'dynamicPa
1890
1890
  const TABLE_EXPORT_SCOPES = ['auto', 'selected', 'filtered', 'currentPage', 'all'];
1891
1891
  const TABLE_EXPORT_FORMATS = ['excel', 'pdf', 'csv', 'json', 'print'];
1892
1892
  const TABLE_UNSUPPORTED_FILTER_COMBINATOR_KEYS = new Set([
1893
+ '!=',
1894
+ '!==',
1895
+ '==',
1896
+ '===',
1893
1897
  '$and',
1894
1898
  '$not',
1895
1899
  '$or',
@@ -1900,6 +1904,8 @@ const TABLE_UNSUPPORTED_FILTER_COMBINATOR_KEYS = new Set([
1900
1904
  'oneOf',
1901
1905
  'or',
1902
1906
  ]);
1907
+ const TABLE_FILTER_EQUALITY_OPERATORS = new Set(['==', '===']);
1908
+ const TABLE_FILTER_CONJUNCTION_OPERATORS = new Set(['and', '$and']);
1903
1909
  /**
1904
1910
  * Adapter that connects the AI Engine to a specific PraxisTable instance.
1905
1911
  * Implements two-step intent flow + heuristics for contextual suggestions.
@@ -2032,6 +2038,7 @@ class TableAiAdapter extends BaseAiAdapter {
2032
2038
  'Do not use table.filter.apply for related-surface requests unless the user explicitly asks to find other records.',
2033
2039
  'When runtimeOperations.filterExpression.supported is not true, do not materialize OR, alternative groups, or nested boolean filters; ask which single filter field/value should be applied or explain the limitation.',
2034
2040
  'table.filter.apply accepts only simple conjunction criteria over declared fields; do not emit OR/AND groups, anyOf/oneOf/allOf, or nested boolean filter expressions. Ask for clarification or explain the limitation when the user needs alternatives.',
2041
+ 'For boolean filters, use the boolean value expected by the declared field, for example { ativo: true } for an active-only filter when the catalog exposes ativo/status as a boolean criterion.',
2035
2042
  ...(runtimeExportFormats.length
2036
2043
  ? [
2037
2044
  'Use table.export.run only when the user asks to run an export now; choose scope selected for selected records, filtered for filtered results, and ask for clarification when the user does not specify enough context.',
@@ -2084,6 +2091,7 @@ class TableAiAdapter extends BaseAiAdapter {
2084
2091
  'The user asks to change table configuration, visual rules, renderers, columns, behavior, actions, or appearance.',
2085
2092
  ],
2086
2093
  rules: [
2094
+ 'Do not use componentEditPlan for requests to apply, run, clear, or execute current filters against table data; those belong to runtime mode and tableRuntimeOperations.',
2087
2095
  'Do not use rowAction.add for capability-discovery questions such as which row buttons or actions can be added; those belong to consult mode until the user explicitly asks to add one.',
2088
2096
  'Do not use toolbar.action.add or bulkAction.add for capability-discovery questions such as which global actions, toolbar buttons, route buttons, or bulk buttons can be added; those belong to consult mode until the user explicitly asks to add one.',
2089
2097
  'When the user asks to add a row button, row option, or action in each row for a declared record surface, use rowAction.add with capabilityPath "actions.row.actions[]".',
@@ -2103,11 +2111,16 @@ class TableAiAdapter extends BaseAiAdapter {
2103
2111
  preferredResponse: TABLE_RUNTIME_OPERATION_BATCH_KIND,
2104
2112
  useWhen: [
2105
2113
  'The user asks to execute a declared table runtime operation now, such as applying filters, exporting data, or opening a related dynamic-page surface.',
2114
+ 'The user asks to filter the current table data by a declared filterFieldCatalog field or value, even when no records are selected.',
2106
2115
  'The user selects records and asks to open, show, display, navigate to, or inspect a declared record surface such as a detail, team, timeline, history, payroll, or other related surface.',
2107
2116
  'The user selects records and asks to filter or export using declared selectedRecordsContext and runtimeOperations.',
2108
2117
  ],
2109
2118
  rules: [
2110
2119
  'Return type "patch" with tableRuntimeOperations when the request can be materialized by a declared runtimeOperations operation.',
2120
+ 'For table.filter.apply, emit tableRuntimeOperations.operations[] with operationId "table.filter.apply" and input.criteria using declared filterFieldCatalog field names.',
2121
+ 'For boolean filters, use the boolean value expected by the declared field, for example { ativo: true } for an active-only filter when the catalog exposes ativo/status as a boolean criterion.',
2122
+ 'For set filters whose declared field ends with "In", use an array value, for example { departamentoIdsIn: [22], cargoIdsIn: [10] }.',
2123
+ 'For multiple requested filters, emit one table.filter.apply operation with simple conjunction criteria containing every requested declared filter field.',
2111
2124
  'For dynamicPage.surface.open, emit tableRuntimeOperations.operations[] with operationId "dynamicPage.surface.open" and input.surfaceId equal to one declared recordSurfaces.surfaces[].id.',
2112
2125
  'For dynamicPage.surface.open, choose a READ_PROJECTION or VIEW recordSurface when the user is asking to see or understand information; choose FORM or PARTIAL_FORM only when the user is asking to edit or update information.',
2113
2126
  'Do not answer with a textual confirmation before emitting dynamicPage.surface.open when a single requested record surface is declared and the user asks to open or show it now.',
@@ -2392,6 +2405,7 @@ class TableAiAdapter extends BaseAiAdapter {
2392
2405
  const relatedColumnFields = this.toStringArray(field['relatedColumnFields']);
2393
2406
  const relatedColumnLabels = this.toStringArray(field['relatedColumnLabels']);
2394
2407
  const criterionSemantics = this.inferFilterCriterionSemantics(field);
2408
+ const valueHints = this.buildFilterFieldValueHints(field, relatedColumnFields);
2395
2409
  return {
2396
2410
  name: field['name'],
2397
2411
  label: field['label'] ?? field['name'],
@@ -2399,12 +2413,53 @@ class TableAiAdapter extends BaseAiAdapter {
2399
2413
  controlType: field['controlType'] ?? null,
2400
2414
  ...(relatedColumnFields.length ? { relatedColumnFields } : {}),
2401
2415
  ...(relatedColumnLabels.length ? { relatedColumnLabels } : {}),
2416
+ ...(valueHints.length ? { valueHints } : {}),
2402
2417
  ...(criterionSemantics ? criterionSemantics : {}),
2403
2418
  ...(aliases.length ? { aliases } : {}),
2404
2419
  };
2405
2420
  }),
2406
2421
  };
2407
2422
  }
2423
+ buildFilterFieldValueHints(field, relatedColumnFields) {
2424
+ const values = new Set();
2425
+ const add = (value) => {
2426
+ const text = typeof value === 'string'
2427
+ ? value.trim()
2428
+ : typeof value === 'number' || typeof value === 'boolean'
2429
+ ? String(value)
2430
+ : '';
2431
+ if (!text || text.length < 2)
2432
+ return;
2433
+ values.add(text);
2434
+ };
2435
+ const options = Array.isArray(field['options']) ? field['options'] : [];
2436
+ const labelKey = typeof field['optionLabelKey'] === 'string' && field['optionLabelKey'].trim()
2437
+ ? field['optionLabelKey'].trim()
2438
+ : 'label';
2439
+ const valueKey = typeof field['optionValueKey'] === 'string' && field['optionValueKey'].trim()
2440
+ ? field['optionValueKey'].trim()
2441
+ : 'value';
2442
+ for (const option of options) {
2443
+ if (option && typeof option === 'object') {
2444
+ const record = option;
2445
+ add(record[labelKey] ?? record['label'] ?? record['name'] ?? record['description']);
2446
+ add(record[valueKey] ?? record['value'] ?? record['id'] ?? record['key']);
2447
+ }
2448
+ else {
2449
+ add(option);
2450
+ }
2451
+ }
2452
+ const fields = relatedColumnFields.length ? relatedColumnFields : [String(field['name'] || '')].filter(Boolean);
2453
+ const rows = Array.isArray(this.table.dataSource?.data) ? this.table.dataSource.data : [];
2454
+ for (const row of rows.slice(0, 50)) {
2455
+ if (!row || typeof row !== 'object')
2456
+ continue;
2457
+ for (const sourceField of fields) {
2458
+ add(row[sourceField]);
2459
+ }
2460
+ }
2461
+ return [...values].slice(0, 40);
2462
+ }
2408
2463
  getFilterSchemaFields() {
2409
2464
  const tableWithFilterSchema = this.table;
2410
2465
  try {
@@ -2718,6 +2773,7 @@ class TableAiAdapter extends BaseAiAdapter {
2718
2773
  const raw = this.toRecord(source[TABLE_RUNTIME_OPERATION_PATCH_KEY])
2719
2774
  ?? this.toRecord(source['runtimeOperationBatch'])
2720
2775
  ?? this.toRecord(source['tableRuntimeOperation'])
2776
+ ?? (this.stringValue(source['kind']) === TABLE_RUNTIME_OPERATION_BATCH_KIND ? source : null)
2721
2777
  ?? nestedComponentEditPlan;
2722
2778
  const directOperation = this.toRecord(source['runtimeOperation']);
2723
2779
  const directOperations = Array.isArray(source['runtimeOperations']) ? source['runtimeOperations'] : null;
@@ -2748,7 +2804,9 @@ class TableAiAdapter extends BaseAiAdapter {
2748
2804
  coerceTableRuntimeOperationBatchFromText(source) {
2749
2805
  for (const key of ['message', 'assistantMessage', 'content', 'explanation']) {
2750
2806
  const text = this.stringValue(source[key]);
2751
- if (!text || !text.includes(TABLE_RUNTIME_OPERATION_PATCH_KEY) || !text.includes('operationId')) {
2807
+ if (!text
2808
+ || !text.includes('operationId')
2809
+ || (!text.includes(TABLE_RUNTIME_OPERATION_PATCH_KEY) && !text.includes(TABLE_RUNTIME_OPERATION_BATCH_KIND))) {
2752
2810
  continue;
2753
2811
  }
2754
2812
  const parsed = this.parseRuntimeOperationJsonFromText(text);
@@ -2817,7 +2875,7 @@ class TableAiAdapter extends BaseAiAdapter {
2817
2875
  const warnings = [];
2818
2876
  for (const operation of batch.operations) {
2819
2877
  if (operation.operationId === 'table.filter.apply') {
2820
- const criteria = this.toRecord(operation.input['criteria']);
2878
+ const criteria = this.normalizeRuntimeFilterCriteria(this.toRecord(operation.input['criteria']));
2821
2879
  if (!criteria) {
2822
2880
  return {
2823
2881
  success: false,
@@ -3069,6 +3127,109 @@ class TableAiAdapter extends BaseAiAdapter {
3069
3127
  return Array.isArray(value) || this.toRecord(value) !== null;
3070
3128
  });
3071
3129
  }
3130
+ normalizeRuntimeFilterCriteria(criteria) {
3131
+ if (!criteria)
3132
+ return null;
3133
+ const jsonLogicCriteria = this.tryNormalizeJsonLogicFilterCriteria(criteria);
3134
+ if (jsonLogicCriteria)
3135
+ return jsonLogicCriteria;
3136
+ const normalized = {};
3137
+ let changed = false;
3138
+ for (const [field, value] of Object.entries(criteria)) {
3139
+ const canonicalField = this.normalizeRuntimeFilterFieldName(field);
3140
+ const fieldCriteria = this.normalizeRuntimeFilterFieldCriterion(canonicalField, value);
3141
+ normalized[canonicalField] = fieldCriteria;
3142
+ changed = changed || canonicalField !== field || fieldCriteria !== value;
3143
+ }
3144
+ return changed ? normalized : criteria;
3145
+ }
3146
+ tryNormalizeJsonLogicFilterCriteria(criteria) {
3147
+ const entries = Object.entries(criteria);
3148
+ if (entries.length !== 1)
3149
+ return null;
3150
+ const [operator, value] = entries[0];
3151
+ if (TABLE_FILTER_EQUALITY_OPERATORS.has(operator)) {
3152
+ return this.normalizeRuntimeFilterEquality(value);
3153
+ }
3154
+ if (TABLE_FILTER_CONJUNCTION_OPERATORS.has(operator) && Array.isArray(value)) {
3155
+ const normalized = {};
3156
+ for (const clause of value) {
3157
+ const clauseRecord = this.toRecord(clause);
3158
+ const clauseCriteria = clauseRecord ? this.tryNormalizeJsonLogicFilterCriteria(clauseRecord) : null;
3159
+ if (!clauseCriteria)
3160
+ return null;
3161
+ for (const [field, criterion] of Object.entries(clauseCriteria)) {
3162
+ normalized[field] = criterion;
3163
+ }
3164
+ }
3165
+ return Object.keys(normalized).length ? normalized : null;
3166
+ }
3167
+ return null;
3168
+ }
3169
+ normalizeRuntimeFilterEquality(value) {
3170
+ if (!Array.isArray(value) || value.length !== 2)
3171
+ return null;
3172
+ const leftField = this.normalizeRuntimeFilterFieldName(this.jsonLogicVarField(value[0]));
3173
+ const rightField = this.normalizeRuntimeFilterFieldName(this.jsonLogicVarField(value[1]));
3174
+ if (leftField && !rightField)
3175
+ return { [leftField]: this.normalizeRuntimeFilterCriterionValue(leftField, value[1]) };
3176
+ if (rightField && !leftField)
3177
+ return { [rightField]: this.normalizeRuntimeFilterCriterionValue(rightField, value[0]) };
3178
+ return null;
3179
+ }
3180
+ normalizeRuntimeFilterFieldName(field) {
3181
+ if (!field)
3182
+ return '';
3183
+ const raw = field.trim();
3184
+ if (!raw)
3185
+ return '';
3186
+ const normalized = this.normalizeAliasValue(raw);
3187
+ if (!normalized)
3188
+ return raw;
3189
+ const matches = this.getFilterSchemaFields()
3190
+ .map((candidate) => {
3191
+ const name = this.stringValue(candidate['name']);
3192
+ if (!name)
3193
+ return null;
3194
+ const aliases = new Set();
3195
+ this.addFilterFieldAlias(aliases, name);
3196
+ this.addFilterFieldAlias(aliases, candidate['label']);
3197
+ this.toStringArray(candidate['aliases']).forEach((alias) => this.addFilterFieldAlias(aliases, alias));
3198
+ this.toStringArray(candidate['relatedColumnFields']).forEach((alias) => this.addFilterFieldAlias(aliases, alias));
3199
+ this.toStringArray(candidate['relatedColumnLabels']).forEach((alias) => this.addFilterFieldAlias(aliases, alias));
3200
+ return aliases.has(normalized) ? name : null;
3201
+ })
3202
+ .filter((name) => !!name);
3203
+ return matches.length === 1 ? matches[0] : raw;
3204
+ }
3205
+ normalizeRuntimeFilterCriterionValue(field, value) {
3206
+ if (/In$/u.test(field) && !Array.isArray(value)) {
3207
+ return [value];
3208
+ }
3209
+ return value;
3210
+ }
3211
+ normalizeRuntimeFilterFieldCriterion(field, value) {
3212
+ const record = this.toRecord(value);
3213
+ if (!record)
3214
+ return this.normalizeRuntimeFilterCriterionValue(field, value);
3215
+ const entries = Object.entries(record);
3216
+ if (entries.length !== 1)
3217
+ return value;
3218
+ const [operator, criterion] = entries[0];
3219
+ if (!TABLE_FILTER_EQUALITY_OPERATORS.has(operator))
3220
+ return value;
3221
+ return this.normalizeRuntimeFilterCriterionValue(field, criterion);
3222
+ }
3223
+ jsonLogicVarField(value) {
3224
+ const record = this.toRecord(value);
3225
+ if (!record)
3226
+ return null;
3227
+ const raw = record['var'];
3228
+ if (typeof raw !== 'string')
3229
+ return null;
3230
+ const field = raw.trim();
3231
+ return field ? field : null;
3232
+ }
3072
3233
  stringValue(value) {
3073
3234
  return typeof value === 'string' ? value.trim() : '';
3074
3235
  }
@@ -3525,7 +3686,16 @@ Columns Analysis:
3525
3686
  const patchCols = patch.columns;
3526
3687
  const mergedCols = originalCols.map((origCol) => {
3527
3688
  const match = patchCols.find((p) => p.field === origCol.field);
3528
- return match ? deepMerge(origCol, match) : origCol;
3689
+ if (!match)
3690
+ return origCol;
3691
+ const merged = deepMerge(origCol, match);
3692
+ if (Array.isArray(match.conditionalRenderers)) {
3693
+ merged.conditionalRenderers = match.conditionalRenderers;
3694
+ }
3695
+ if (Array.isArray(match.conditionalStyles)) {
3696
+ merged.conditionalStyles = match.conditionalStyles;
3697
+ }
3698
+ return merged;
3529
3699
  });
3530
3700
  patchCols.forEach((pCol) => {
3531
3701
  if (!originalCols.find((o) => o.field === pCol.field)) {
@@ -1 +1 @@
1
- export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PraxisFilter, n as PraxisFilterWidgetConfigEditor, o as PraxisTable, p as PraxisTableConfigEditor, q as PraxisTableInlineAuthoringEditorComponent, r as PraxisTableToolbar, s as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, t as TABLE_COMPONENT_AI_CAPABILITIES, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, y as TABLE_COMPONENT_EDIT_PLAN_KIND, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TASK_PRESETS, H as TableDefaultsProvider, I as TableRulesEditorComponent, K as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, L as VisualFormulaBuilderComponent, O as buildTableApplyPlan, Q as coerceTableComponentEditPlan, R as coerceTableComponentEditPlans, U as compileTableComponentEditPlan, W as compileTableComponentEditPlans, X as createTableAuthoringDocument, Y as getActionId, Z as getEnum, _ as getTableCapabilities, $ as getTableComponentEditPlanCapabilities, a0 as isTableRendererSupportedByRichContentP0, a1 as mapTableRendererToRichContentP0, a2 as normalizeTableAuthoringDocument, a3 as parseLegacyOrTableDocument, a4 as providePraxisFilterMetadata, a5 as providePraxisTableMetadata, a6 as serializeTableAuthoringDocument, a7 as toCanonicalTableConfig, a8 as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-BdJW7m53.mjs';
1
+ export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, n as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, o as PraxisFilter, p as PraxisFilterWidgetConfigEditor, q as PraxisTable, r as PraxisTableConfigEditor, s as PraxisTableInlineAuthoringEditorComponent, t as PraxisTableToolbar, u as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, v as TABLE_COMPONENT_AI_CAPABILITIES, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_KIND, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, I as TASK_PRESETS, K as TableDefaultsProvider, L as TableRulesEditorComponent, O as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, Q as VisualFormulaBuilderComponent, R as buildTableApplyPlan, U as coerceTableComponentEditPlan, W as coerceTableComponentEditPlans, X as compileTableComponentEditPlan, Y as compileTableComponentEditPlans, Z as createTableAuthoringDocument, _ as getActionId, $ as getEnum, a0 as getTableCapabilities, a1 as getTableComponentEditPlanCapabilities, a2 as isTableRendererSupportedByRichContentP0, a3 as mapTableRendererToRichContentP0, a4 as normalizeTableAuthoringDocument, a5 as parseLegacyOrTableDocument, a6 as providePraxisFilterMetadata, a7 as providePraxisTableMetadata, a8 as providePraxisTableToolbarAppearance, a9 as serializeTableAuthoringDocument, aa as toCanonicalTableConfig, ab as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-CpSv6jWv.mjs';
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.85",
3
+ "version": "8.0.0-beta.86",
4
4
  "description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/ai": "^8.0.0-beta.85",
9
- "@praxisui/core": "^8.0.0-beta.85",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.85",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.85",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.85",
13
- "@praxisui/rich-content": "^8.0.0-beta.85",
14
- "@praxisui/settings-panel": "^8.0.0-beta.85",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.85",
8
+ "@praxisui/ai": "^8.0.0-beta.86",
9
+ "@praxisui/core": "^8.0.0-beta.86",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.86",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.86",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.86",
13
+ "@praxisui/rich-content": "^8.0.0-beta.86",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.86",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.86",
16
16
  "@angular/cdk": "^21.0.0",
17
17
  "@angular/forms": "^21.0.0",
18
18
  "@angular/material": "^21.0.0",
19
19
  "@angular/router": "^21.0.0",
20
- "@praxisui/dialog": "^8.0.0-beta.85",
20
+ "@praxisui/dialog": "^8.0.0-beta.86",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {
@@ -316,6 +316,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
316
316
  | `behavior.expansion.interaction.motion` | object | No | runtime-defaults | preset-driven | Presets controlados (`none`, `subtle-slide`, `accordion`, `fade-scale`) com respeito a `prefers-reduced-motion`; `durationMs` aceita `0` para desabilitar motion temporal. |
317
317
  | `appearance.responsive` | object | No | component-defaults | numeric-breakpoint | Breakpoint móvel inválido é normalizado para `768`. |
318
318
  | `toolbar.actions[]` | array | No | `[]` | action-contract | Ações de toolbar com roteamento para `toolbarAction`/`bulkAction`. |
319
+ | `toolbar.appearance` | object | No | Material 3 fallback | token-contract | Governa variante, densidade, forma, divisores e tokens públicos da toolbar sem alterar a semântica das ações. |
319
320
  | `actions.row.actions[].recordSurface` | object | No | none | `ResourceSurfaceCatalogItem` | Preserva a identidade canônica da superfície relacionada aberta por uma ação de linha, mantendo `actions.row.actions[].id` como identidade do botão. |
320
321
  | `actions.row.discovery.enabled` | boolean | No | `true` | row-action-discovery | Controla se row actions podem ser enriquecidas por HATEOAS/capabilities. Configure `false` para manter somente ações declaradas em `actions.row.actions[]`. |
321
322
  | `columns[].renderer` | object | No | field-type-driven | renderer-contract | Renderers condicionais, payload expr e ações interativas. |
@@ -329,6 +330,8 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
329
330
 
330
331
  - O bloco `toolbar` continua parte do contrato público principal.
331
332
  - Use `toolbar.actions[]` para quick actions e `toolbar.search` para busca quando o host não injeta shell própria.
333
+ - Use `toolbar.appearance` para personalizar o chrome da toolbar por contrato governado. O runtime materializa `variant`, `density`, `shape`, `divider` e `tokens` como classes e CSS custom properties públicas; o host pode trocar aparência sem redefinir intenção, capability ou roteamento.
334
+ - Tokens públicos suportados em `toolbar.appearance.tokens`: `bg`, `fg`, `borderColor`, `borderWidth`, `radius`, `shadow`, `paddingBlock`, `paddingInline`, `minHeight`, `gap`, `actionsGap`, `dividerColor`, `actionSize`, `actionRadius`, `actionBg`, `actionFg`, `actionHoverBg`, `actionActiveBg`, `actionFocusRing`, `aiAccentColor` e `statusFg`.
332
335
  - Para localizar paths específicos de toolbar, complemente a leitura com o `Appendix: JSON path index`.
333
336
 
334
337
  ### Messages contract
@@ -1157,6 +1160,7 @@ A superficie usa `horizontalScroll` com classes:
1157
1160
  | `columns[]` | `TableColumnConfig[]` | Yes | `[]` | Active | Definicao de colunas, renderers e regras de exibicao. |
1158
1161
  | `behavior` | `TableBehaviorConfig` | No | defaults do runtime | Partial | Inclui paginacao, filtro, selecao e expansao por blocos. |
1159
1162
  | `toolbar.actions[]` | `ToolbarActionConfig[]` | No | `[]` | Partial | Acoes de toolbar com roteamento para `toolbarAction` e `bulkAction`. |
1163
+ | `toolbar.appearance` | `TableToolbarAppearanceConfig` | No | fallback M3 | Active | Chrome visual governado da toolbar; tokens viram `--p-table-toolbar-*` no runtime. |
1160
1164
  | `messages` | `TableMessagesConfig` | No | defaults internos | Partial | Overrides de i18n e mensagens operacionais. |
1161
1165
  | `data` | `TableDataConfig` | No | modo local/remoto autodetectado | Partial | Integra origem local ou remota conforme `resourcePath`/inputs. |
1162
1166
 
@@ -1,7 +1,7 @@
1
1
  import * as _praxisui_core from '@praxisui/core';
2
- import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, PraxisExportScope, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
2
+ import { TableToolbarAppearanceConfig, TableConfig, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, PraxisExportScope, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
3
3
  import * as i0 from '@angular/core';
4
- import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, Provider, AfterContentInit, Injector } from '@angular/core';
4
+ import { InjectionToken, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterContentInit, Injector } from '@angular/core';
5
5
  import { ActivatedRoute } from '@angular/router';
6
6
  import { MatTable, MatTableDataSource } from '@angular/material/table';
7
7
  import * as _angular_material_paginator from '@angular/material/paginator';
@@ -36,11 +36,17 @@ interface ActionLike {
36
36
  }
37
37
  declare function getActionId(action: ActionLike): string;
38
38
 
39
+ declare const PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE: InjectionToken<TableToolbarAppearanceConfig>;
40
+ declare const PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS: InjectionToken<Record<string, TableToolbarAppearanceConfig>>;
41
+ declare function providePraxisTableToolbarAppearance(appearance: TableToolbarAppearanceConfig, presets?: Record<string, TableToolbarAppearanceConfig>): Provider[];
39
42
  declare class PraxisTableToolbar implements OnDestroy {
40
43
  private hostRef;
41
44
  private logger?;
42
45
  private i18n?;
46
+ private defaultAppearance?;
47
+ private tokenPresets?;
43
48
  config?: TableConfig;
49
+ appearance?: TableToolbarAppearanceConfig | null;
44
50
  backgroundColor: string | null;
45
51
  placement: 'header' | 'footer';
46
52
  showMain: boolean;
@@ -67,12 +73,25 @@ declare class PraxisTableToolbar implements OnDestroy {
67
73
  private readonly warnedShortcutConflicts;
68
74
  private fallbackLogger?;
69
75
  private fallbackLoggerEnvironment;
70
- constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined);
76
+ constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined, defaultAppearance?: TableToolbarAppearanceConfig | undefined, tokenPresets?: Record<string, TableToolbarAppearanceConfig> | undefined);
77
+ getToolbarAriaLabel(): string;
78
+ getToolbarLeadingLabel(): string;
79
+ getToolbarActionsLabel(): string;
80
+ getToolbarConfigurationLabel(): string;
71
81
  getExportDataLabel(): string;
72
82
  getMoreActionsLabel(): string;
73
83
  emitExportAction(event: Event, format: string): void;
74
84
  private tx;
75
85
  ngOnDestroy(): void;
86
+ getToolbarVariant(): TableToolbarAppearanceVariant;
87
+ getToolbarDensity(): TableToolbarAppearanceDensity;
88
+ getToolbarShape(): TableToolbarAppearanceShape;
89
+ getToolbarDivider(): TableToolbarAppearanceDivider;
90
+ getToolbarToken(name: TableToolbarTokenName): string | null;
91
+ private resolveToolbarAppearance;
92
+ private resolveToolbarAppearancePreset;
93
+ private mergeToolbarAppearance;
94
+ private normalizeTokenValue;
76
95
  private getNestedPropertyValue;
77
96
  private cloneForEmit;
78
97
  private getLogger;
@@ -117,8 +136,8 @@ declare class PraxisTableToolbar implements OnDestroy {
117
136
  private warnShortcutConflict;
118
137
  private sortActions;
119
138
  getExportIcon(format: string): string;
120
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }]>;
121
- 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; }; "exportBusy": { "alias": "exportBusy"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
139
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
140
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "appearance": { "alias": "appearance"; "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; }; "exportBusy": { "alias": "exportBusy"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
122
141
  }
123
142
 
124
143
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -619,6 +638,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
619
638
  private computeIsMobile;
620
639
  ngOnChanges(changes: SimpleChanges): void;
621
640
  private areStringArraysEqual;
641
+ private normalizeFieldIdList;
622
642
  private areMetadataOverrideMapsEqual;
623
643
  /** Force-sync settings coming from parent table config updates. */
624
644
  applyExternalSettings(cfg?: Partial<FilterConfig>): void;
@@ -1311,6 +1331,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1311
1331
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1312
1332
  getAiAssistantRecommendedIntents(): readonly PraxisAssistantRecommendedIntent[];
1313
1333
  onAiAssistantRecommendedIntent(intent: PraxisAssistantRecommendedIntent): void;
1334
+ private getAiAssistantRecommendationResponseContract;
1314
1335
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1315
1336
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1316
1337
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
@@ -1713,6 +1734,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1713
1734
  private ensureRowCapabilitySnapshot;
1714
1735
  private ensureRowActionCatalog;
1715
1736
  private getCachedRowCapabilitySnapshot;
1737
+ private getAiAssistantRowDiscoveryLinks;
1738
+ private mergeRowCapabilitySnapshots;
1716
1739
  private hasResolvedRowActionCatalog;
1717
1740
  isRowDiscoveryPending(row: any): boolean;
1718
1741
  private getCachedRowActionCatalog;
@@ -3800,6 +3823,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3800
3823
  toolbarVisible: boolean;
3801
3824
  density: 'compact' | 'comfortable' | 'spacious';
3802
3825
  toolbarActionsPosition: 'top' | 'bottom' | 'both';
3826
+ toolbarAppearanceVariant: 'flat' | 'outlined' | 'elevated' | 'integrated';
3827
+ toolbarAppearanceShape: 'square' | 'rounded' | 'pill';
3828
+ toolbarAppearanceDivider: 'none' | 'start' | 'between-groups';
3803
3829
  toolbarHeight: number;
3804
3830
  toolbarActionsBackgroundColor: string;
3805
3831
  paginationEnabled: boolean;
@@ -3827,6 +3853,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3827
3853
  setToolbarVisible(value: boolean): void;
3828
3854
  setDensity(value: 'compact' | 'comfortable' | 'spacious'): void;
3829
3855
  setToolbarActionsPosition(value: 'top' | 'bottom' | 'both'): void;
3856
+ setToolbarAppearanceVariant(value: 'flat' | 'outlined' | 'elevated' | 'integrated'): void;
3857
+ setToolbarAppearanceShape(value: 'square' | 'rounded' | 'pill'): void;
3858
+ setToolbarAppearanceDivider(value: 'none' | 'start' | 'between-groups'): void;
3830
3859
  setToolbarHeight(value: number | string): void;
3831
3860
  setToolbarActionsBackgroundColor(value: string): void;
3832
3861
  setPaginationEnabled(value: boolean): void;
@@ -3854,6 +3883,7 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3854
3883
  tx(key: string, fallback: string): string;
3855
3884
  private emitConfig;
3856
3885
  private patchToolbar;
3886
+ private patchToolbarAppearance;
3857
3887
  private patchBehavior;
3858
3888
  private patchPagination;
3859
3889
  private patchSorting;
@@ -4441,5 +4471,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
4441
4471
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4442
4472
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4443
4473
 
4444
- 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_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, PraxisFilter, PraxisFilterWidgetConfigEditor, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
4474
+ 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_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, PraxisFilter, PraxisFilterWidgetConfigEditor, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, providePraxisTableToolbarAppearance, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
4445
4475
  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, PraxisFilterWidgetEditorInputs, PraxisFilterWidgetEditorValue, PraxisTableWidgetEditorInputs, PraxisTableWidgetEditorValue, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableAiContext, TableAiNavigationContextPack, TableAiNavigationDestinationContext, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };