@praxisui/core 9.0.3 → 9.0.4-rc.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/README.md +3 -1
- package/ai/component-registry.json +394 -83
- package/fesm2022/praxisui-core.mjs +357 -60
- package/package.json +1 -1
- package/types/praxisui-core.d.ts +151 -4
|
@@ -1121,6 +1121,31 @@ const TABLE_SAFE_KINDS = new Set([
|
|
|
1121
1121
|
'delta',
|
|
1122
1122
|
'processFlow',
|
|
1123
1123
|
]);
|
|
1124
|
+
const TABLE_CELL_RECOMMENDED_KINDS = new Set([
|
|
1125
|
+
'delta',
|
|
1126
|
+
'bullet',
|
|
1127
|
+
'radial',
|
|
1128
|
+
'harveyBall',
|
|
1129
|
+
'stackedBar',
|
|
1130
|
+
]);
|
|
1131
|
+
/**
|
|
1132
|
+
* Returns the compact-table suitability of a supported visualization kind.
|
|
1133
|
+
* Trend and workflow-heavy kinds are conditional because they require enough
|
|
1134
|
+
* column width and a clear decision-making purpose to remain legible.
|
|
1135
|
+
*/
|
|
1136
|
+
function getPraxisTableCellVisualizationGuidance(kind) {
|
|
1137
|
+
return TABLE_CELL_RECOMMENDED_KINDS.has(kind) ? 'recommended' : 'conditional';
|
|
1138
|
+
}
|
|
1139
|
+
function getPraxisTableCellVisualizationConstraint(kind) {
|
|
1140
|
+
if (kind === 'comparison')
|
|
1141
|
+
return 'row-density';
|
|
1142
|
+
if (kind === 'processFlow')
|
|
1143
|
+
return 'step-labels';
|
|
1144
|
+
if (kind === 'line' || kind === 'area' || kind === 'column') {
|
|
1145
|
+
return 'horizontal-space';
|
|
1146
|
+
}
|
|
1147
|
+
return null;
|
|
1148
|
+
}
|
|
1124
1149
|
function normalizePraxisPresentationVisualization(value) {
|
|
1125
1150
|
if (!value || typeof value !== 'object') {
|
|
1126
1151
|
return undefined;
|
|
@@ -1201,6 +1226,9 @@ function renderPraxisPresentationVisualizationHtml(value, options = {}) {
|
|
|
1201
1226
|
}
|
|
1202
1227
|
function renderComparisonVisualizationHtml(visualization, options) {
|
|
1203
1228
|
const points = visualization.points ?? [];
|
|
1229
|
+
if (points.length === 0) {
|
|
1230
|
+
return renderFallbackVisualizationHtml(visualization, visualization.tone ?? 'neutral');
|
|
1231
|
+
}
|
|
1204
1232
|
const max = Math.max(1, ...points.map((point) => Math.max(0, point.value)));
|
|
1205
1233
|
const rows = points
|
|
1206
1234
|
.map((point) => {
|
|
@@ -1219,6 +1247,9 @@ function renderComparisonVisualizationHtml(visualization, options) {
|
|
|
1219
1247
|
}
|
|
1220
1248
|
function renderStackedBarVisualizationHtml(visualization, options) {
|
|
1221
1249
|
const segments = visualization.segments ?? [];
|
|
1250
|
+
if (segments.length === 0) {
|
|
1251
|
+
return renderFallbackVisualizationHtml(visualization, visualization.tone ?? 'neutral');
|
|
1252
|
+
}
|
|
1222
1253
|
const total = visualization.total && visualization.total > 0
|
|
1223
1254
|
? visualization.total
|
|
1224
1255
|
: Math.max(1, segments.reduce((sum, segment) => sum + Math.max(0, segment.value), 0));
|
|
@@ -1252,7 +1283,10 @@ function resolveBulletMax(visualization) {
|
|
|
1252
1283
|
return Math.max(...values, 100);
|
|
1253
1284
|
}
|
|
1254
1285
|
function renderBulletVisualizationHtml(visualization, options) {
|
|
1255
|
-
const currentValue = toFiniteNumber(visualization.value)
|
|
1286
|
+
const currentValue = toFiniteNumber(visualization.value);
|
|
1287
|
+
if (currentValue === undefined) {
|
|
1288
|
+
return renderFallbackVisualizationHtml(visualization, visualization.tone ?? 'neutral');
|
|
1289
|
+
}
|
|
1256
1290
|
const max = resolveBulletMax(visualization);
|
|
1257
1291
|
const target = toFiniteNumber(visualization.target);
|
|
1258
1292
|
const targetLeft = target === undefined ? null : percent(target, max);
|
|
@@ -1432,7 +1466,10 @@ function normalizeText$1(value) {
|
|
|
1432
1466
|
return trimmed.length ? trimmed : undefined;
|
|
1433
1467
|
}
|
|
1434
1468
|
function renderRadialVisualizationHtml(visualization, options) {
|
|
1435
|
-
const value = toFiniteNumber(visualization.value)
|
|
1469
|
+
const value = toFiniteNumber(visualization.value);
|
|
1470
|
+
if (value === undefined) {
|
|
1471
|
+
return renderFallbackVisualizationHtml(visualization, visualization.tone ?? 'neutral');
|
|
1472
|
+
}
|
|
1436
1473
|
const total = visualization.total && visualization.total > 0 ? visualization.total : 100;
|
|
1437
1474
|
const pct = Math.max(0, Math.min(100, (value / total) * 100));
|
|
1438
1475
|
const tone = visualization.tone ?? 'info';
|
|
@@ -1457,7 +1494,10 @@ function renderRadialVisualizationHtml(visualization, options) {
|
|
|
1457
1494
|
</span>`;
|
|
1458
1495
|
}
|
|
1459
1496
|
function renderHarveyBallVisualizationHtml(visualization, options) {
|
|
1460
|
-
const value = toFiniteNumber(visualization.value)
|
|
1497
|
+
const value = toFiniteNumber(visualization.value);
|
|
1498
|
+
if (value === undefined) {
|
|
1499
|
+
return renderFallbackVisualizationHtml(visualization, visualization.tone ?? 'neutral');
|
|
1500
|
+
}
|
|
1461
1501
|
const total = visualization.total && visualization.total > 0 ? visualization.total : 100;
|
|
1462
1502
|
const pct = Math.max(0, Math.min(100, (value / total) * 100));
|
|
1463
1503
|
const tone = visualization.tone ?? 'info';
|
|
@@ -4254,6 +4294,7 @@ class GenericCrudService {
|
|
|
4254
4294
|
_lastResourceIdentityDiagnostics = [];
|
|
4255
4295
|
// Última informação do schema consumido (para auditoria/merge)
|
|
4256
4296
|
_lastSchemaInfo = {};
|
|
4297
|
+
_resourceEtags = new Map();
|
|
4257
4298
|
/**
|
|
4258
4299
|
* Cria a instância do serviço genérico.
|
|
4259
4300
|
*
|
|
@@ -4362,6 +4403,7 @@ class GenericCrudService {
|
|
|
4362
4403
|
this._lastResourceCapabilityDigest = null;
|
|
4363
4404
|
this._lastResourceIdentity = null;
|
|
4364
4405
|
this._lastResourceIdentityDiagnostics = [];
|
|
4406
|
+
this._resourceEtags.clear();
|
|
4365
4407
|
debugCrudService('[CRUD:Service] configure', {
|
|
4366
4408
|
resourcePath, baseApiUrl: this.baseApiUrl,
|
|
4367
4409
|
});
|
|
@@ -5071,13 +5113,15 @@ class GenericCrudService {
|
|
|
5071
5113
|
this.ensureConfigured();
|
|
5072
5114
|
const entry = this.resolveEndpointEntry(options?.endpointKey);
|
|
5073
5115
|
const url = this.getEndpointUrl('getById', id, options?.parentPath, options?.endpointKey);
|
|
5116
|
+
const versionKey = this.resourceVersionKey(id, options);
|
|
5074
5117
|
debugCrudService('[CRUD:Service] getById:url', { url });
|
|
5075
5118
|
return this.http
|
|
5076
5119
|
.get(url, {
|
|
5077
5120
|
headers: composeHeadersWithVersion(entry),
|
|
5078
5121
|
context: options?.httpContext,
|
|
5122
|
+
observe: 'response',
|
|
5079
5123
|
})
|
|
5080
|
-
.pipe(catchError(this.handleError));
|
|
5124
|
+
.pipe(map((response) => this.captureResourceVersion(versionKey, response)), catchError(this.handleError));
|
|
5081
5125
|
}
|
|
5082
5126
|
/**
|
|
5083
5127
|
* Cria um novo registro.
|
|
@@ -5145,12 +5189,42 @@ class GenericCrudService {
|
|
|
5145
5189
|
this.ensureConfigured();
|
|
5146
5190
|
const entry = this.resolveEndpointEntry(options?.endpointKey);
|
|
5147
5191
|
const url = this.getEndpointUrl('update', id, options?.parentPath, options?.endpointKey);
|
|
5192
|
+
const versionKey = this.resourceVersionKey(id, options);
|
|
5193
|
+
let headers = composeHeadersWithVersion(entry);
|
|
5194
|
+
const etag = this._resourceEtags.get(versionKey);
|
|
5195
|
+
if (etag) {
|
|
5196
|
+
headers = (headers instanceof HttpHeaders ? headers : new HttpHeaders(headers))
|
|
5197
|
+
.set('If-Match', etag);
|
|
5198
|
+
}
|
|
5148
5199
|
return this.http
|
|
5149
5200
|
.put(url, entity, {
|
|
5150
|
-
headers
|
|
5201
|
+
headers,
|
|
5151
5202
|
context: options?.httpContext,
|
|
5203
|
+
observe: 'response',
|
|
5152
5204
|
})
|
|
5153
|
-
.pipe(
|
|
5205
|
+
.pipe(map((response) => this.captureResourceVersion(versionKey, response)), catchError((error) => {
|
|
5206
|
+
if (error.status === 412 || error.status === 428) {
|
|
5207
|
+
this._resourceEtags.delete(versionKey);
|
|
5208
|
+
}
|
|
5209
|
+
return this.handleError(error);
|
|
5210
|
+
}));
|
|
5211
|
+
}
|
|
5212
|
+
resourceVersionKey(id, options) {
|
|
5213
|
+
const entry = this.resolveEndpointEntry(options?.endpointKey);
|
|
5214
|
+
const headers = composeHeadersWithVersion(entry);
|
|
5215
|
+
const tenant = headers?.get('X-Tenant-ID') ?? '';
|
|
5216
|
+
const environment = headers?.get('X-Env') ?? '';
|
|
5217
|
+
return [buildApiUrl(entry), tenant, environment, this.resourcePath, options?.parentPath ?? '', String(id)].join('|');
|
|
5218
|
+
}
|
|
5219
|
+
captureResourceVersion(key, response) {
|
|
5220
|
+
const etag = response.headers.get('ETag');
|
|
5221
|
+
if (etag) {
|
|
5222
|
+
this._resourceEtags.set(key, etag);
|
|
5223
|
+
}
|
|
5224
|
+
if (!response.body) {
|
|
5225
|
+
throw new Error('Resource response body is empty.');
|
|
5226
|
+
}
|
|
5227
|
+
return response.body;
|
|
5154
5228
|
}
|
|
5155
5229
|
/**
|
|
5156
5230
|
* Remove um registro pelo ID.
|
|
@@ -8526,6 +8600,14 @@ class GlobalActionService {
|
|
|
8526
8600
|
runtime.emitResult(this.toSurfaceResult(payload, 'result'));
|
|
8527
8601
|
return { success: true };
|
|
8528
8602
|
});
|
|
8603
|
+
this.register('surface.complete', async (payload, context) => {
|
|
8604
|
+
const runtime = this.resolveSurfaceRuntime(context);
|
|
8605
|
+
if (typeof runtime?.complete !== 'function') {
|
|
8606
|
+
return { success: false, error: 'Surface completion runtime not available' };
|
|
8607
|
+
}
|
|
8608
|
+
runtime.complete(this.toSurfaceOutcome(payload));
|
|
8609
|
+
return { success: true };
|
|
8610
|
+
});
|
|
8529
8611
|
this.register('dynamicPage.composition.dispatch', async (payload, context) => this.handleCompositionDispatch(payload, context));
|
|
8530
8612
|
this.register('toast.success', async (payload) => {
|
|
8531
8613
|
const message = payload?.message || payload;
|
|
@@ -8811,6 +8893,21 @@ class GlobalActionService {
|
|
|
8811
8893
|
});
|
|
8812
8894
|
});
|
|
8813
8895
|
}
|
|
8896
|
+
toSurfaceOutcome(payload) {
|
|
8897
|
+
const result = this.toSurfaceResult(payload, 'completed');
|
|
8898
|
+
const record = payload && typeof payload === 'object'
|
|
8899
|
+
? payload
|
|
8900
|
+
: {};
|
|
8901
|
+
const requestedKind = String(record['kind'] || 'completed');
|
|
8902
|
+
const kind = requestedKind === 'notification' || requestedKind === 'dismissed' || requestedKind === 'failed'
|
|
8903
|
+
? requestedKind
|
|
8904
|
+
: 'completed';
|
|
8905
|
+
return {
|
|
8906
|
+
...result,
|
|
8907
|
+
kind,
|
|
8908
|
+
type: String(record['type'] || 'completed'),
|
|
8909
|
+
};
|
|
8910
|
+
}
|
|
8814
8911
|
toSurfaceResult(payload, fallbackType) {
|
|
8815
8912
|
if (payload && typeof payload === 'object' && ('type' in payload || 'data' in payload)) {
|
|
8816
8913
|
return {
|
|
@@ -13810,6 +13907,36 @@ const SURFACE_OPEN_PRESETS = [
|
|
|
13810
13907
|
description: 'Abre um formulário dinâmico com resourcePath, formId e resourceId.',
|
|
13811
13908
|
payload: {
|
|
13812
13909
|
presentation: 'drawer',
|
|
13910
|
+
lifecycle: {
|
|
13911
|
+
outcomes: [
|
|
13912
|
+
{
|
|
13913
|
+
output: 'formSubmit',
|
|
13914
|
+
when: [{ path: 'stage', equals: 'after' }],
|
|
13915
|
+
outcome: { kind: 'completed', type: 'save', dataPath: 'result' },
|
|
13916
|
+
},
|
|
13917
|
+
{
|
|
13918
|
+
output: 'formSubmit',
|
|
13919
|
+
when: [{ path: 'stage', equals: 'error' }],
|
|
13920
|
+
outcome: { kind: 'failed', type: 'submit-error', errorPath: 'error' },
|
|
13921
|
+
},
|
|
13922
|
+
{
|
|
13923
|
+
output: 'formCancel',
|
|
13924
|
+
outcome: { kind: 'dismissed', type: 'cancel' },
|
|
13925
|
+
},
|
|
13926
|
+
{
|
|
13927
|
+
output: 'formReset',
|
|
13928
|
+
outcome: { kind: 'notification', type: 'reset' },
|
|
13929
|
+
},
|
|
13930
|
+
{
|
|
13931
|
+
output: 'customAction',
|
|
13932
|
+
outcome: { kind: 'notification', type: 'custom-action' },
|
|
13933
|
+
},
|
|
13934
|
+
{
|
|
13935
|
+
output: 'initializationError',
|
|
13936
|
+
outcome: { kind: 'failed', type: 'initialization-error', errorPath: 'error' },
|
|
13937
|
+
},
|
|
13938
|
+
],
|
|
13939
|
+
},
|
|
13813
13940
|
widget: {
|
|
13814
13941
|
id: 'praxis-dynamic-form',
|
|
13815
13942
|
bindingOrder: [
|
|
@@ -14901,6 +15028,7 @@ class ResourceActionOpenAdapterService {
|
|
|
14901
15028
|
availability: action.availability,
|
|
14902
15029
|
successMessage: action.successMessage ?? null,
|
|
14903
15030
|
tags: action.tags,
|
|
15031
|
+
execution: action.execution ?? null,
|
|
14904
15032
|
},
|
|
14905
15033
|
};
|
|
14906
15034
|
payload.widget.inputs = {
|
|
@@ -14915,6 +15043,9 @@ class ResourceActionOpenAdapterService {
|
|
|
14915
15043
|
submitUrl: resolvedSubmitUrl,
|
|
14916
15044
|
responseSchemaUrl: resolvedResponseSchemaUrl,
|
|
14917
15045
|
};
|
|
15046
|
+
if (options.initialValue) {
|
|
15047
|
+
payload.widget.inputs['initialValue'] = this.clone(options.initialValue);
|
|
15048
|
+
}
|
|
14918
15049
|
if (action.scope === 'ITEM') {
|
|
14919
15050
|
if (options.resourceId != null) {
|
|
14920
15051
|
payload.widget.inputs['resourceId'] = options.resourceId;
|
|
@@ -14929,6 +15060,7 @@ class ResourceActionOpenAdapterService {
|
|
|
14929
15060
|
throw new Error(`ResourceActionOpenAdapterService requires resourceId or idBindingPath for item action "${action.id}".`);
|
|
14930
15061
|
}
|
|
14931
15062
|
}
|
|
15063
|
+
this.applyExecutionInputs(payload, action, options);
|
|
14932
15064
|
return payload;
|
|
14933
15065
|
}
|
|
14934
15066
|
resolveDynamicFormPreset() {
|
|
@@ -14941,6 +15073,49 @@ class ResourceActionOpenAdapterService {
|
|
|
14941
15073
|
buildStableInstanceId(action) {
|
|
14942
15074
|
return `${action.resourceKey}.action.${action.id}`.replace(/[^a-zA-Z0-9._-]+/g, '-');
|
|
14943
15075
|
}
|
|
15076
|
+
applyExecutionInputs(payload, action, options) {
|
|
15077
|
+
const execution = action.execution;
|
|
15078
|
+
if (!execution) {
|
|
15079
|
+
payload.widget.inputs['submitIdempotencyKey'] = this.createCommandIdentity('idempotency');
|
|
15080
|
+
return;
|
|
15081
|
+
}
|
|
15082
|
+
const inputs = payload.widget.inputs;
|
|
15083
|
+
if (execution.preconditions.idempotencyKey !== 'NONE') {
|
|
15084
|
+
inputs['submitIdempotencyKey'] = this.createCommandIdentity('idempotency');
|
|
15085
|
+
}
|
|
15086
|
+
if (execution.preconditions.correlationId !== 'NONE') {
|
|
15087
|
+
inputs['submitCorrelationId'] =
|
|
15088
|
+
String(options.correlationId ?? '').trim() || this.createCommandIdentity('correlation');
|
|
15089
|
+
}
|
|
15090
|
+
if (execution.preconditions.resourceVersionTransport !== 'IF_MATCH') {
|
|
15091
|
+
return;
|
|
15092
|
+
}
|
|
15093
|
+
if (options.resourceVersion != null && String(options.resourceVersion).trim()) {
|
|
15094
|
+
inputs['submitResourceVersion'] = options.resourceVersion;
|
|
15095
|
+
return;
|
|
15096
|
+
}
|
|
15097
|
+
if (options.resourceVersionBindingPath) {
|
|
15098
|
+
payload.bindings = [
|
|
15099
|
+
...(payload.bindings || []),
|
|
15100
|
+
{
|
|
15101
|
+
from: options.resourceVersionBindingPath,
|
|
15102
|
+
to: 'widget.inputs.submitResourceVersion',
|
|
15103
|
+
mode: 'path',
|
|
15104
|
+
},
|
|
15105
|
+
];
|
|
15106
|
+
return;
|
|
15107
|
+
}
|
|
15108
|
+
if (execution.preconditions.resourceVersion === 'REQUIRED') {
|
|
15109
|
+
throw new Error(`ResourceActionOpenAdapterService requires resourceVersion or resourceVersionBindingPath for action "${action.id}".`);
|
|
15110
|
+
}
|
|
15111
|
+
}
|
|
15112
|
+
createIdempotencyKey() {
|
|
15113
|
+
const randomUuid = globalThis.crypto?.randomUUID?.bind(globalThis.crypto);
|
|
15114
|
+
return randomUuid ? randomUuid() : `praxis-action-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
15115
|
+
}
|
|
15116
|
+
createCommandIdentity(kind) {
|
|
15117
|
+
return `${kind}-${this.createIdempotencyKey()}`;
|
|
15118
|
+
}
|
|
14944
15119
|
normalizeResourcePath(resourcePath) {
|
|
14945
15120
|
return String(resourcePath || '').trim().replace(/^\/+/, '').replace(/\/+$/, '');
|
|
14946
15121
|
}
|
|
@@ -15786,8 +15961,15 @@ class SurfaceOpenMaterializerService {
|
|
|
15786
15961
|
const previousAi = this.objectRecord(previousConfig['ai']);
|
|
15787
15962
|
const previousAssistant = this.objectRecord(previousAi['assistant']);
|
|
15788
15963
|
const previousBehavior = this.objectRecord(previousConfig['behavior']);
|
|
15964
|
+
const previousColumns = Array.isArray(previousConfig['columns'])
|
|
15965
|
+
? previousConfig['columns']
|
|
15966
|
+
: [];
|
|
15789
15967
|
const generatedConfig = {
|
|
15790
|
-
columns:
|
|
15968
|
+
columns: previousColumns.length
|
|
15969
|
+
? previousColumns
|
|
15970
|
+
: schemaColumns.length
|
|
15971
|
+
? schemaColumns
|
|
15972
|
+
: fallbackColumns,
|
|
15791
15973
|
toolbar: toolbarActions.length
|
|
15792
15974
|
? {
|
|
15793
15975
|
...previousToolbar,
|
|
@@ -18747,6 +18929,10 @@ const PRAXIS_GLOBAL_ACTION_CATALOG = [
|
|
|
18747
18929
|
type: 'object',
|
|
18748
18930
|
description: 'Ação estruturada executada quando a surface emite um resultado semântico via surface.result.',
|
|
18749
18931
|
},
|
|
18932
|
+
lifecycle: {
|
|
18933
|
+
type: 'object',
|
|
18934
|
+
description: 'Política declarativa que converte outputs públicos do widget em outcomes de notificação, conclusão, cancelamento ou falha.',
|
|
18935
|
+
},
|
|
18750
18936
|
},
|
|
18751
18937
|
required: ['presentation', 'widget'],
|
|
18752
18938
|
example: {
|
|
@@ -18795,6 +18981,22 @@ const PRAXIS_GLOBAL_ACTION_CATALOG = [
|
|
|
18795
18981
|
example: { type: 'selection', data: { id: 42 } },
|
|
18796
18982
|
},
|
|
18797
18983
|
},
|
|
18984
|
+
{
|
|
18985
|
+
id: 'surface.complete',
|
|
18986
|
+
label: 'Concluir Surface',
|
|
18987
|
+
icon: 'task_alt',
|
|
18988
|
+
description: 'Publica um resultado terminal e fecha a surface atual atomicamente, garantindo uma única conclusão.',
|
|
18989
|
+
payloadSchema: {
|
|
18990
|
+
type: 'object',
|
|
18991
|
+
properties: {
|
|
18992
|
+
kind: { type: 'string', description: 'Tipo de outcome terminal; normalmente completed.' },
|
|
18993
|
+
type: { type: 'string', description: 'Tipo semântico da conclusão.' },
|
|
18994
|
+
data: { type: 'object', description: 'Dados devolvidos ao owner da surface.' },
|
|
18995
|
+
},
|
|
18996
|
+
required: ['type'],
|
|
18997
|
+
example: { kind: 'completed', type: 'save', data: { id: 42 } },
|
|
18998
|
+
},
|
|
18999
|
+
},
|
|
18798
19000
|
{
|
|
18799
19001
|
id: 'dynamicPage.composition.dispatch',
|
|
18800
19002
|
label: 'Despachar Evento de Composição',
|
|
@@ -19068,6 +19270,14 @@ const DYNAMIC_PAGE_CONFIG_EDITOR = new InjectionToken('DYNAMIC_PAGE_CONFIG_EDITO
|
|
|
19068
19270
|
const PRAXIS_TABLE_DETAIL_INLINE_RENDERERS = new InjectionToken('PRAXIS_TABLE_DETAIL_INLINE_RENDERERS');
|
|
19069
19271
|
const PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS = new InjectionToken('PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS');
|
|
19070
19272
|
|
|
19273
|
+
/**
|
|
19274
|
+
* Canonical DI boundary for governed table expansion detail resources.
|
|
19275
|
+
*
|
|
19276
|
+
* Omit the provider when a host does not support `source.mode = 'resource'`;
|
|
19277
|
+
* PraxisTable then keeps the detail closed with its existing fail-closed state.
|
|
19278
|
+
*/
|
|
19279
|
+
const PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER = new InjectionToken('PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER');
|
|
19280
|
+
|
|
19071
19281
|
function providePraxisHttpCollectionExportProvider(options = {}) {
|
|
19072
19282
|
return [
|
|
19073
19283
|
{ provide: PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, useValue: options },
|
|
@@ -36225,7 +36435,6 @@ class DynamicWidgetPageComponent {
|
|
|
36225
36435
|
}
|
|
36226
36436
|
shouldRenderWidgetContextOverlay(widget) {
|
|
36227
36437
|
return (this.enableCustomization &&
|
|
36228
|
-
this.isWidgetSelected(widget.key) &&
|
|
36229
36438
|
!this.hasVisibleWidgetShellHeader(widget));
|
|
36230
36439
|
}
|
|
36231
36440
|
widgetShellForRender(widget) {
|
|
@@ -36269,7 +36478,6 @@ class DynamicWidgetPageComponent {
|
|
|
36269
36478
|
}
|
|
36270
36479
|
shouldProjectWidgetHeaderActions(widget) {
|
|
36271
36480
|
return (this.enableCustomization &&
|
|
36272
|
-
this.isWidgetSelected(widget.key) &&
|
|
36273
36481
|
this.hasVisibleWidgetShellHeader(widget));
|
|
36274
36482
|
}
|
|
36275
36483
|
hasVisibleWidgetShellHeader(widget) {
|
|
@@ -37343,15 +37551,10 @@ class DynamicWidgetPageComponent {
|
|
|
37343
37551
|
}
|
|
37344
37552
|
}
|
|
37345
37553
|
selectWidgetFromHostEvent(widgetKey, event) {
|
|
37346
|
-
if (this.shouldPreserveInnerWidgetInteraction(event)) {
|
|
37347
|
-
return;
|
|
37348
|
-
}
|
|
37349
37554
|
if (event.type === 'focusin') {
|
|
37350
|
-
|
|
37351
|
-
|
|
37352
|
-
|
|
37353
|
-
}
|
|
37354
|
-
}, 0);
|
|
37555
|
+
if (event.target === event.currentTarget) {
|
|
37556
|
+
this.selectWidget(widgetKey);
|
|
37557
|
+
}
|
|
37355
37558
|
return;
|
|
37356
37559
|
}
|
|
37357
37560
|
this.selectWidget(widgetKey);
|
|
@@ -37362,47 +37565,6 @@ class DynamicWidgetPageComponent {
|
|
|
37362
37565
|
isWidgetSelected(widgetKey) {
|
|
37363
37566
|
return this.selectedWidgetKeyState() === widgetKey;
|
|
37364
37567
|
}
|
|
37365
|
-
shouldPreserveInnerWidgetInteraction(event) {
|
|
37366
|
-
if (!this.enableCustomization)
|
|
37367
|
-
return false;
|
|
37368
|
-
const target = event.target;
|
|
37369
|
-
const currentTarget = event.currentTarget;
|
|
37370
|
-
if (!(target instanceof HTMLElement) || !(currentTarget instanceof HTMLElement)) {
|
|
37371
|
-
return false;
|
|
37372
|
-
}
|
|
37373
|
-
if (target === currentTarget) {
|
|
37374
|
-
return false;
|
|
37375
|
-
}
|
|
37376
|
-
if (event.type === 'focusin') {
|
|
37377
|
-
return true;
|
|
37378
|
-
}
|
|
37379
|
-
const shellHeader = target.closest('.pdx-shell-header');
|
|
37380
|
-
if (shellHeader && currentTarget.contains(shellHeader)) {
|
|
37381
|
-
return false;
|
|
37382
|
-
}
|
|
37383
|
-
return !!target.closest([
|
|
37384
|
-
'button',
|
|
37385
|
-
'a',
|
|
37386
|
-
'input',
|
|
37387
|
-
'select',
|
|
37388
|
-
'textarea',
|
|
37389
|
-
'[contenteditable="true"]',
|
|
37390
|
-
'[role="button"]',
|
|
37391
|
-
'[role="tab"]',
|
|
37392
|
-
'[role="menuitem"]',
|
|
37393
|
-
'[role="option"]',
|
|
37394
|
-
'[role="checkbox"]',
|
|
37395
|
-
'[role="radio"]',
|
|
37396
|
-
'[role="row"]',
|
|
37397
|
-
'[role="gridcell"]',
|
|
37398
|
-
'[mat-menu-trigger-for]',
|
|
37399
|
-
'.mat-mdc-row',
|
|
37400
|
-
'.mat-mdc-cell',
|
|
37401
|
-
'.mat-mdc-header-cell',
|
|
37402
|
-
'.pdx-widget-context-toolbar',
|
|
37403
|
-
'.pdx-canvas-resize',
|
|
37404
|
-
].join(','));
|
|
37405
|
-
}
|
|
37406
37568
|
selectCanvasWidget(widgetKey) {
|
|
37407
37569
|
this.selectWidget(widgetKey);
|
|
37408
37570
|
}
|
|
@@ -38352,6 +38514,7 @@ class DynamicWidgetPageComponent {
|
|
|
38352
38514
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
38353
38515
|
[style.gridRow]="widgetGridRow(w)"
|
|
38354
38516
|
[style.zIndex]="widgetZIndex(w)"
|
|
38517
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38355
38518
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38356
38519
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38357
38520
|
>
|
|
@@ -38482,6 +38645,7 @@ class DynamicWidgetPageComponent {
|
|
|
38482
38645
|
"
|
|
38483
38646
|
[class]="w.renderClassName || w.className || ''"
|
|
38484
38647
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
38648
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38485
38649
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38486
38650
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38487
38651
|
>
|
|
@@ -38548,6 +38712,7 @@ class DynamicWidgetPageComponent {
|
|
|
38548
38712
|
"
|
|
38549
38713
|
[class]="widgetClassName(w)"
|
|
38550
38714
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
38715
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38551
38716
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38552
38717
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38553
38718
|
>
|
|
@@ -38606,6 +38771,7 @@ class DynamicWidgetPageComponent {
|
|
|
38606
38771
|
"
|
|
38607
38772
|
[class]="widgetClassName(w)"
|
|
38608
38773
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
38774
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38609
38775
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38610
38776
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38611
38777
|
>
|
|
@@ -38717,6 +38883,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
38717
38883
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
38718
38884
|
[style.gridRow]="widgetGridRow(w)"
|
|
38719
38885
|
[style.zIndex]="widgetZIndex(w)"
|
|
38886
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38720
38887
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38721
38888
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38722
38889
|
>
|
|
@@ -38847,6 +39014,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
38847
39014
|
"
|
|
38848
39015
|
[class]="w.renderClassName || w.className || ''"
|
|
38849
39016
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
39017
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38850
39018
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38851
39019
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38852
39020
|
>
|
|
@@ -38913,6 +39081,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
38913
39081
|
"
|
|
38914
39082
|
[class]="widgetClassName(w)"
|
|
38915
39083
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
39084
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38916
39085
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38917
39086
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38918
39087
|
>
|
|
@@ -38971,6 +39140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
38971
39140
|
"
|
|
38972
39141
|
[class]="widgetClassName(w)"
|
|
38973
39142
|
[style.gridColumn]="widgetGridColumn(w)"
|
|
39143
|
+
(pointerdown)="selectWidget(w.key)"
|
|
38974
39144
|
(click)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38975
39145
|
(focusin)="selectWidgetFromHostEvent(w.key, $event)"
|
|
38976
39146
|
>
|
|
@@ -39126,6 +39296,7 @@ class PraxisSurfaceHostComponent {
|
|
|
39126
39296
|
widget;
|
|
39127
39297
|
afterWidget;
|
|
39128
39298
|
context = null;
|
|
39299
|
+
lifecycle;
|
|
39129
39300
|
strictValidation = true;
|
|
39130
39301
|
/**
|
|
39131
39302
|
* Keep disabled by default to avoid duplicating the title already shown by
|
|
@@ -39249,6 +39420,7 @@ class PraxisSurfaceHostComponent {
|
|
|
39249
39420
|
}
|
|
39250
39421
|
}
|
|
39251
39422
|
onSlotWidgetEvent(ownerWidgetKey, event) {
|
|
39423
|
+
this.materializeSurfaceOutcome(event);
|
|
39252
39424
|
const resourceEvent = event.resourceEvent ?? this.toResourceEvent(ownerWidgetKey, event);
|
|
39253
39425
|
if (event.output === 'rowClick') {
|
|
39254
39426
|
this.rowClick.emit(event.payload);
|
|
@@ -39265,6 +39437,51 @@ class PraxisSurfaceHostComponent {
|
|
|
39265
39437
|
ownerWidgetKey: event.ownerWidgetKey || ownerWidgetKey,
|
|
39266
39438
|
});
|
|
39267
39439
|
}
|
|
39440
|
+
materializeSurfaceOutcome(event) {
|
|
39441
|
+
const binding = this.lifecycle?.outcomes.find((candidate) => candidate.output === event.output && this.matchesLifecycleConditions(candidate, event.payload));
|
|
39442
|
+
if (!binding)
|
|
39443
|
+
return;
|
|
39444
|
+
const runtime = this.context?.['surfaceRuntime'];
|
|
39445
|
+
if (!runtime)
|
|
39446
|
+
return;
|
|
39447
|
+
const outcome = this.buildSurfaceOutcome(binding, event);
|
|
39448
|
+
if (outcome.kind === 'completed') {
|
|
39449
|
+
runtime.complete?.(outcome);
|
|
39450
|
+
return;
|
|
39451
|
+
}
|
|
39452
|
+
if (outcome.kind === 'dismissed') {
|
|
39453
|
+
runtime.close?.(outcome);
|
|
39454
|
+
return;
|
|
39455
|
+
}
|
|
39456
|
+
runtime.emitResult?.(outcome);
|
|
39457
|
+
}
|
|
39458
|
+
matchesLifecycleConditions(binding, payload) {
|
|
39459
|
+
return (binding.when || []).every((condition) => Object.is(this.readPath(payload, condition.path), condition.equals));
|
|
39460
|
+
}
|
|
39461
|
+
buildSurfaceOutcome(binding, event) {
|
|
39462
|
+
const data = binding.outcome.dataPath
|
|
39463
|
+
? this.readPath(event.payload, binding.outcome.dataPath)
|
|
39464
|
+
: event.payload;
|
|
39465
|
+
const error = binding.outcome.errorPath
|
|
39466
|
+
? this.readPath(event.payload, binding.outcome.errorPath)
|
|
39467
|
+
: undefined;
|
|
39468
|
+
return {
|
|
39469
|
+
kind: binding.outcome.kind,
|
|
39470
|
+
type: binding.outcome.type,
|
|
39471
|
+
...(data !== undefined ? { data } : {}),
|
|
39472
|
+
...(error !== undefined ? { error } : {}),
|
|
39473
|
+
output: event.output,
|
|
39474
|
+
payload: event.payload,
|
|
39475
|
+
};
|
|
39476
|
+
}
|
|
39477
|
+
readPath(value, path) {
|
|
39478
|
+
return String(path || '')
|
|
39479
|
+
.split('.')
|
|
39480
|
+
.filter(Boolean)
|
|
39481
|
+
.reduce((current, key) => current && typeof current === 'object'
|
|
39482
|
+
? current[key]
|
|
39483
|
+
: undefined, value);
|
|
39484
|
+
}
|
|
39268
39485
|
toResourceEvent(ownerWidgetKey, event) {
|
|
39269
39486
|
const sourceOutput = String(event.output || '').trim();
|
|
39270
39487
|
if (!sourceOutput) {
|
|
@@ -39345,7 +39562,7 @@ class PraxisSurfaceHostComponent {
|
|
|
39345
39562
|
};
|
|
39346
39563
|
}
|
|
39347
39564
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisSurfaceHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39348
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisSurfaceHostComponent, isStandalone: true, selector: "praxis-surface-host", inputs: { title: "title", subtitle: "subtitle", icon: "icon", beforeWidget: "beforeWidget", widget: "widget", afterWidget: "afterWidget", context: "context", strictValidation: "strictValidation", renderTitleInsideBody: "renderTitleInsideBody" }, outputs: { widgetEvent: "widgetEvent", rowClick: "rowClick", selectionChange: "selectionChange", resourceEvent: "resourceEvent" }, viewQueries: [{ propertyName: "beforeWidgetLoader", first: true, predicate: ["beforeWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "mainWidgetLoader", first: true, predicate: ["mainWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "afterWidgetLoader", first: true, predicate: ["afterWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }], usesOnChanges: true, ngImport: i0, template: `
|
|
39565
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisSurfaceHostComponent, isStandalone: true, selector: "praxis-surface-host", inputs: { title: "title", subtitle: "subtitle", icon: "icon", beforeWidget: "beforeWidget", widget: "widget", afterWidget: "afterWidget", context: "context", lifecycle: "lifecycle", strictValidation: "strictValidation", renderTitleInsideBody: "renderTitleInsideBody" }, outputs: { widgetEvent: "widgetEvent", rowClick: "rowClick", selectionChange: "selectionChange", resourceEvent: "resourceEvent" }, viewQueries: [{ propertyName: "beforeWidgetLoader", first: true, predicate: ["beforeWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "mainWidgetLoader", first: true, predicate: ["mainWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "afterWidgetLoader", first: true, predicate: ["afterWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }], usesOnChanges: true, ngImport: i0, template: `
|
|
39349
39566
|
<div class="pdx-surface-host">
|
|
39350
39567
|
@if (subtitle || (title && renderTitleInsideBody)) {
|
|
39351
39568
|
<header class="pdx-surface-host__header">
|
|
@@ -39484,6 +39701,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39484
39701
|
type: Input
|
|
39485
39702
|
}], context: [{
|
|
39486
39703
|
type: Input
|
|
39704
|
+
}], lifecycle: [{
|
|
39705
|
+
type: Input
|
|
39487
39706
|
}], strictValidation: [{
|
|
39488
39707
|
type: Input
|
|
39489
39708
|
}], renderTitleInsideBody: [{
|
|
@@ -39910,6 +40129,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39910
40129
|
`, styles: [":host{display:block;min-width:0}.pdx-related-outlet{display:block;min-width:0;color:var(--md-sys-color-on-surface, currentColor)}.pdx-related-outlet__state{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--pdx-related-outlet-gap, 12px);min-height:var(--pdx-related-outlet-min-height, 64px);padding:var(--pdx-related-outlet-padding, 12px);border:1px solid var(--md-sys-color-outline-variant, rgba(0, 0, 0, .16));border-radius:var(--pdx-related-outlet-radius, 8px);background:var(--md-sys-color-surface-container-low, var(--md-sys-color-surface, transparent))}.pdx-related-outlet--compact .pdx-related-outlet__state{min-height:var(--pdx-related-outlet-compact-min-height, 48px);padding:var(--pdx-related-outlet-compact-padding, 8px 10px)}.pdx-related-outlet__state--ready{border-color:var(--md-sys-color-primary, currentColor)}.pdx-related-outlet__icon{display:inline-grid;place-items:center;width:32px;height:32px;color:var(--md-sys-color-primary, currentColor)}.pdx-related-outlet__state--busy .pdx-related-outlet__icon{color:var(--md-sys-color-secondary, currentColor)}.pdx-related-outlet__copy{display:grid;gap:2px;min-width:0}.pdx-related-outlet__copy h3,.pdx-related-outlet__copy p{margin:0}.pdx-related-outlet__copy h3{font:var(--md-sys-typescale-title-small, 600 .95rem/1.25rem system-ui);color:var(--md-sys-color-on-surface, currentColor)}.pdx-related-outlet__copy p{font:var(--md-sys-typescale-body-small, 400 .82rem/1.15rem system-ui);color:var(--md-sys-color-on-surface-variant, currentColor)}@media(max-width:600px){.pdx-related-outlet__state{grid-template-columns:auto minmax(0,1fr)}.pdx-related-outlet__state button{grid-column:1 / -1;justify-self:start}}\n"] }]
|
|
39911
40130
|
}], ctorParameters: () => [], propDecorators: { surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }], surfaceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceId", required: false }] }], surfaceCatalog: [{ type: i0.Input, args: [{ isSignal: true, alias: "surfaceCatalog", required: false }] }], discoverySource: [{ type: i0.Input, args: [{ isSignal: true, alias: "discoverySource", required: false }] }], parentLinks: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentLinks", required: false }] }], apiEndpointKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "apiEndpointKey", required: false }] }], apiUrlEntry: [{ type: i0.Input, args: [{ isSignal: true, alias: "apiUrlEntry", required: false }] }], parentRecord: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentRecord", required: false }] }], parentResourceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentResourceId", required: false }] }], parentResourcePath: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentResourcePath", required: false }] }], presentation: [{ type: i0.Input, args: [{ isSignal: true, alias: "presentation", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], tableId: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableId", required: false }] }], tableConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableConfig", required: false }] }], enableCustomization: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableCustomization", required: false }] }], authoringCapability: [{ type: i0.Input, args: [{ isSignal: true, alias: "authoringCapability", required: false }] }], emptyState: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyState", required: false }] }], queryContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryContext", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], stateReason: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateReason", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], strictValidation: [{ type: i0.Input, args: [{ isSignal: true, alias: "strictValidation", required: false }] }], ownerWidgetKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "ownerWidgetKey", required: false }] }], surfaceOpen: [{ type: i0.Output, args: ["surfaceOpen"] }], widgetEvent: [{ type: i0.Output, args: ["widgetEvent"] }], resourceEvent: [{ type: i0.Output, args: ["resourceEvent"] }] } });
|
|
39912
40131
|
|
|
40132
|
+
const PRAXIS_RELATED_RESOURCE_OUTLET_PORTS = [
|
|
40133
|
+
{
|
|
40134
|
+
id: 'parentResourceId',
|
|
40135
|
+
label: 'Identificador do recurso pai',
|
|
40136
|
+
direction: 'input',
|
|
40137
|
+
semanticKind: 'value',
|
|
40138
|
+
schema: {
|
|
40139
|
+
id: 'string | number | null',
|
|
40140
|
+
kind: 'ts-type',
|
|
40141
|
+
ref: 'string | number | null',
|
|
40142
|
+
},
|
|
40143
|
+
description: 'Seleção canônica que governa a resolução da coleção filha.',
|
|
40144
|
+
exposure: { public: true, group: 'context' },
|
|
40145
|
+
},
|
|
40146
|
+
{
|
|
40147
|
+
id: 'queryContext',
|
|
40148
|
+
label: 'Contexto de consulta',
|
|
40149
|
+
direction: 'input',
|
|
40150
|
+
semanticKind: 'query-context',
|
|
40151
|
+
schema: {
|
|
40152
|
+
id: 'RelatedResourceQueryContext',
|
|
40153
|
+
kind: 'ts-type',
|
|
40154
|
+
ref: 'RelatedResourceQueryContext',
|
|
40155
|
+
},
|
|
40156
|
+
description: 'Contexto adicional mesclado ao filtro pai-filho publicado pela surface.',
|
|
40157
|
+
exposure: { public: true, advanced: true, group: 'context' },
|
|
40158
|
+
},
|
|
40159
|
+
{
|
|
40160
|
+
id: 'surfaceOpen',
|
|
40161
|
+
label: 'Abertura da superfície relacionada',
|
|
40162
|
+
direction: 'output',
|
|
40163
|
+
semanticKind: 'event',
|
|
40164
|
+
schema: {
|
|
40165
|
+
id: 'SurfaceOpenPayload',
|
|
40166
|
+
kind: 'ts-type',
|
|
40167
|
+
ref: 'SurfaceOpenPayload',
|
|
40168
|
+
},
|
|
40169
|
+
cardinality: 'stream',
|
|
40170
|
+
description: 'Solicita ao host a abertura mediada da superfície no modo open-action.',
|
|
40171
|
+
exposure: { public: true, group: 'events' },
|
|
40172
|
+
},
|
|
40173
|
+
{
|
|
40174
|
+
id: 'widgetEvent',
|
|
40175
|
+
label: 'Evento do widget relacionado',
|
|
40176
|
+
direction: 'output',
|
|
40177
|
+
semanticKind: 'event',
|
|
40178
|
+
schema: {
|
|
40179
|
+
id: 'WidgetEventEnvelope',
|
|
40180
|
+
kind: 'ts-type',
|
|
40181
|
+
ref: 'WidgetEventEnvelope',
|
|
40182
|
+
},
|
|
40183
|
+
cardinality: 'stream',
|
|
40184
|
+
description: 'Reemite eventos do widget filho com identidade de ownership.',
|
|
40185
|
+
exposure: { public: true, advanced: true, group: 'events' },
|
|
40186
|
+
},
|
|
40187
|
+
{
|
|
40188
|
+
id: 'resourceEvent',
|
|
40189
|
+
label: 'Evento canônico do recurso relacionado',
|
|
40190
|
+
direction: 'output',
|
|
40191
|
+
semanticKind: 'event',
|
|
40192
|
+
schema: {
|
|
40193
|
+
id: 'PraxisResourceEvent',
|
|
40194
|
+
kind: 'ts-type',
|
|
40195
|
+
ref: 'PraxisResourceEvent',
|
|
40196
|
+
},
|
|
40197
|
+
cardinality: 'stream',
|
|
40198
|
+
description: 'Promove seleção, mutação e lifecycle do recurso filho para a composição.',
|
|
40199
|
+
exposure: { public: true, group: 'events' },
|
|
40200
|
+
},
|
|
40201
|
+
];
|
|
39913
40202
|
const PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA = {
|
|
39914
40203
|
id: 'praxis-related-resource-outlet',
|
|
39915
40204
|
selector: 'praxis-related-resource-outlet',
|
|
@@ -39928,21 +40217,29 @@ const PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA = {
|
|
|
39928
40217
|
{ name: 'parentRecord', type: 'Record<string, unknown> | null', description: 'Registro pai usado para resolver parentIdPathVariable.' },
|
|
39929
40218
|
{ name: 'parentResourceId', type: 'string | number | null', description: 'Identificador explícito do registro pai quando não vem do record.' },
|
|
39930
40219
|
{ name: 'parentResourcePath', type: 'string | null', description: 'ResourcePath do recurso pai para contexto da surface.' },
|
|
40220
|
+
{ name: 'presentation', type: 'SurfacePresentation', description: 'Apresentação usada no payload de abertura host-mediated.', default: 'drawer' },
|
|
40221
|
+
{ name: 'title', type: 'string | null', description: 'Título opcional que substitui o título publicado pela surface.' },
|
|
40222
|
+
{ name: 'subtitle', type: 'string | null', description: 'Subtítulo opcional que substitui a descrição publicada pela surface.' },
|
|
40223
|
+
{ name: 'icon', type: 'string | null', description: 'Ícone opcional da superfície relacionada.' },
|
|
39931
40224
|
{ name: 'queryContext', type: 'RelatedResourceQueryContext | null', description: 'QueryContext base mesclado com o filtro canônico da relação filha.' },
|
|
40225
|
+
{ name: 'tableId', type: 'string | null', description: 'Identidade estável da tabela filha para persistência, observabilidade e testes.' },
|
|
39932
40226
|
{ name: 'tableConfig', type: 'Record<string, unknown> | null', description: 'Configuracao parcial da tabela filha materializada, mesclada ao preset canonico.' },
|
|
39933
40227
|
{ name: 'emptyState', type: 'Record<string, unknown> | null', description: 'Override opcional para behavior.emptyState da tabela filha. Quando omitido, o outlet deriva texto, icone, layout e ação create a partir de surface.relatedResource e dos metadados da surface.' },
|
|
39934
40228
|
{ name: 'enableCustomization', type: 'boolean', description: 'Opt-in explicito para authoring governado da tabela filha.', default: false },
|
|
39935
40229
|
{ name: 'authoringCapability', type: 'string | null', description: 'Capability publica do EnterpriseRuntimeContext exigida quando o authoring da tabela filha estiver habilitado.' },
|
|
39936
40230
|
{ name: 'mode', type: "'inline' | 'open-action'", description: 'Renderiza a tabela filha inline ou emite payload para abertura host-mediated.', default: 'inline' },
|
|
39937
40231
|
{ name: 'state', type: 'RelatedResourceResolutionState | null', description: 'Override de estado para hosts/outlets que estejam carregando discovery remoto.' },
|
|
40232
|
+
{ name: 'stateReason', type: 'string | null', description: 'Motivo governado associado ao override de estado.' },
|
|
39938
40233
|
{ name: 'compact', type: 'boolean', description: 'Reduz densidade visual dos estados não materializados.', default: false },
|
|
39939
40234
|
{ name: 'strictValidation', type: 'boolean', description: 'Validação estrita do widget materializado pelo DynamicWidgetLoader.', default: false },
|
|
40235
|
+
{ name: 'ownerWidgetKey', type: 'string', description: 'Identidade do owner usada para correlacionar eventos do widget filho.', default: 'related-resource.outlet' },
|
|
39940
40236
|
],
|
|
39941
40237
|
outputs: [
|
|
39942
40238
|
{ name: 'surfaceOpen', type: 'SurfaceOpenPayload', description: 'Emitido em modo open-action com o payload pronto de surface.open.' },
|
|
39943
40239
|
{ name: 'widgetEvent', type: 'WidgetEventEnvelope', description: 'Reemite eventos do widget filho materializado.' },
|
|
39944
40240
|
{ name: 'resourceEvent', type: 'PraxisResourceEvent', description: 'Promove eventos canonicos emitidos pelo widget filho materializado.' },
|
|
39945
40241
|
],
|
|
40242
|
+
ports: PRAXIS_RELATED_RESOURCE_OUTLET_PORTS,
|
|
39946
40243
|
tags: ['resource', 'surface', 'related-resource', 'runtime', 'metadata-driven'],
|
|
39947
40244
|
lib: '@praxisui/core',
|
|
39948
40245
|
};
|
|
@@ -41453,4 +41750,4 @@ function provideHookWhitelist(allowed) {
|
|
|
41453
41750
|
* Generated bundle index. Do not edit.
|
|
41454
41751
|
*/
|
|
41455
41752
|
|
|
41456
|
-
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, AnalyticsPresentationResolver, AnalyticsSchemaContractService, AnalyticsStatsRequestBuilderService, ApiConfigStorage, ApiEndpoint, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, BUILTIN_SHELL_PRESETS, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, CompositionRuntimeFacade, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_TABLE_CONFIG, DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK, DOMAIN_CATALOG_CONTEXT_HINT_SCHEMA_VERSION, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DomainCatalogService, DomainKnowledgeService, DomainRuleService, DynamicFormService, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, EnterpriseRuntimeContextService, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_SURFACE_SERVICE, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NestedPortCatalogService, NestedWidgetConfigAccessor, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_EXPORT_SECURITY_POLICY, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_OPTIONS, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_READY, PRAXIS_EXPORT_FORMULA_PREFIXES, PRAXIS_EXPORT_SECURITY_POLICY, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_JSON_LOGIC_OPERATORS, PRAXIS_LAYER_SCALE_DEFAULTS, PRAXIS_LAYER_SCALE_VARS, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_QUERY_FILTER_EXPRESSION_SCHEMA_VERSION, PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_THEME_SURFACE_DEFAULTS, PRAXIS_THEME_SURFACE_VARS, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SURFACE_DRAWER_BRIDGE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, assertPraxisCollectionExportArtifact, assertPraxisRuntimeComponentObservationSerializable, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildPraxisEffectDistinctKey, buildPraxisLayerScaleCss, buildPraxisThemeSurfaceCss, buildSchemaId, buildSchemaIdStorageKeySegment, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, materializeFormLayoutFromMetadata, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldAccessMetadata, normalizeFieldConstraints, normalizeFieldPresentation, normalizeFormConfig, normalizeFormLayoutItems, normalizeFormMetadata, normalizeGlobalActionRef$1 as normalizeGlobalActionRef, normalizeLayoutPolicy, normalizeLookupFilterRequest, normalizePath, normalizePraxisDataQueryContext, normalizePraxisEffectPolicy, normalizePraxisPresentationVisualization, normalizePraxisQueryFilterExpression, normalizePraxisQueryFilterNode, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisCollectionExportProvider, providePraxisDynamicPageMetadata, providePraxisEnterpriseRuntimeContext, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpCollectionExportProvider, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisIconDefaults, providePraxisJsonLogicOperator, providePraxisJsonLogicOperatorOverride, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRelatedResourceOutletMetadata, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsImplicitValuePresentation, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
41753
|
+
export { API_CONFIG_STORAGE_OPTIONS, API_URL, ASYNC_CONFIG_STORAGE, AllowedFileTypes, AnalyticsPresentationResolver, AnalyticsSchemaContractService, AnalyticsStatsRequestBuilderService, ApiConfigStorage, ApiEndpoint, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, BUILTIN_SHELL_PRESETS, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentKeyService, ComponentMetadataRegistry, CompositionRuntimeFacade, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_TABLE_CONFIG, DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK, DOMAIN_CATALOG_CONTEXT_HINT_SCHEMA_VERSION, DYNAMIC_PAGE_AI_CAPABILITIES, DYNAMIC_PAGE_COMPONENT_CONTEXT_PACK, DYNAMIC_PAGE_CONFIG_EDITOR, DYNAMIC_PAGE_SHELL_EDITOR, DefaultLoadingRenderer, DeferredAsyncConfigStorage, DomainCatalogService, DomainKnowledgeService, DomainRuleService, DynamicFormService, DynamicWidgetLoaderDirective, DynamicWidgetPageComponent, EDITORIAL_ALLOWED_CONTENT_FORMATS, EDITORIAL_COMPLIANCE_PRESETS, EDITORIAL_EXTERNAL_LINK_REL, EDITORIAL_FORM_TEMPLATE_CATALOG, EDITORIAL_HTML_ENABLED, EDITORIAL_MARKDOWN_IMAGES_ENABLED, EDITORIAL_SOLUTION_CATALOG, EDITORIAL_SOLUTION_PRESETS, EDITORIAL_THEME_PRESETS, EDITORIAL_WIDGET_CONVENTION_INPUTS, EDITORIAL_WIDGET_TAG, EMPLOYEE_ONBOARDING_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_EDITORIAL_TEMPLATE, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_SOLUTION, EMPLOYEE_ONBOARDING_GUIDED_EDITORIAL_TEMPLATE, EVENT_REGISTRATION_EDITORIAL_SOLUTION, EVENT_REGISTRATION_EDITORIAL_TEMPLATE, EmptyStateCardComponent, EnterpriseRuntimeContextService, ErrorMessageService, FIELD_METADATA_CAPABILITIES, FIELD_SELECTOR_REGISTRY_BASE, FIELD_SELECTOR_REGISTRY_DISABLE_DEFAULTS, FIELD_SELECTOR_REGISTRY_OVERRIDES, FORM_HOOKS, FORM_HOOKS_PRESETS, FORM_HOOKS_WHITELIST, FORM_HOOK_RESOLVERS, FieldControlType, FieldDataType, FieldSelectorRegistry, FormHooksRegistry, GLOBAL_ACTION_CATALOG, GLOBAL_ACTION_HANDLERS, GLOBAL_ACTION_UI_SCHEMAS, GLOBAL_ANALYTICS_SERVICE, GLOBAL_API_CLIENT, GLOBAL_CONFIG, GLOBAL_DIALOG_SERVICE, GLOBAL_ROUTE_GUARD_RESOLVER, GLOBAL_SURFACE_SERVICE, GLOBAL_TOAST_SERVICE, GenericCrudService, GlobalActionService, GlobalConfigService, INLINE_FILTER_ALIAS_TOKENS, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_SET, INLINE_FILTER_CONTROL_TYPE_VALUES, INLINE_FILTER_TOKEN_TO_BASE_CONTROL_TYPE, INLINE_FILTER_TOKEN_TO_CONTROL_TYPE, IconPickerService, IconPosition, IconSize, LOGGER_LEVEL_BY_ENV, LOGGER_LEVEL_PRIORITY, LoadingOrchestrator, LocalConnectionStorage, LocalStorageAsyncAdapter, LocalStorageCacheAdapter, LocalStorageConfigService, LoggerService, LoggerThrottleTracker, LoggerWarnOnceTracker, MemoryCacheAdapter, NestedPortCatalogService, NestedWidgetConfigAccessor, NumericFormat, OVERLAY_DECIDER_DEBUG, OVERLAY_DECISION_MATRIX, ObservabilityDashboardService, OverlayDeciderService, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_CORPORATE_SENSITIVE_KEYS, PRAXIS_DEFAULT_EXPORT_SECURITY_POLICY, PRAXIS_DEFAULT_OBSERVABILITY_ALERT_RULES, PRAXIS_DYNAMIC_PAGE_COMPONENT_METADATA, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_OPTIONS, PRAXIS_ENTERPRISE_RUNTIME_CONTEXT_READY, PRAXIS_EXPORT_FORMULA_PREFIXES, PRAXIS_EXPORT_SECURITY_POLICY, PRAXIS_FOOTER_LINKS_METADATA, PRAXIS_GLOBAL_ACTION_CATALOG, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_OPTIONS, PRAXIS_GLOBAL_CONFIG_BOOTSTRAP_READY, PRAXIS_GLOBAL_CONFIG_TENANT_RESOLVER, PRAXIS_HERO_BANNER_METADATA, PRAXIS_I18N_CONFIG, PRAXIS_I18N_TRANSLATOR, PRAXIS_JSON_LOGIC_OPERATORS, PRAXIS_LAYER_SCALE_DEFAULTS, PRAXIS_LAYER_SCALE_VARS, PRAXIS_LEGAL_NOTICE_METADATA, PRAXIS_LOADING_CTX, PRAXIS_LOADING_RENDERER, PRAXIS_LOGGER_CONFIG, PRAXIS_LOGGER_SINKS, PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS, PRAXIS_QUERY_FILTER_EXPRESSION_SCHEMA_VERSION, PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA, PRAXIS_RELATED_RESOURCE_OUTLET_PORTS, PRAXIS_RICH_TEXT_BLOCK_METADATA, PRAXIS_TABLE_DETAIL_INLINE_NODE_RESOLVERS, PRAXIS_TABLE_DETAIL_INLINE_RENDERERS, PRAXIS_TABLE_DETAIL_RESOURCE_RESOLVER, PRAXIS_TELEMETRY_TRANSPORT, PRAXIS_THEME_SURFACE_DEFAULTS, PRAXIS_THEME_SURFACE_VARS, PRAXIS_USER_CONTEXT_SUMMARY_METADATA, PRIVACY_CONSENT_EDITORIAL_SOLUTION, PRIVACY_CONSENT_EDITORIAL_TEMPLATE, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_VIEWER_CONTEXT, SETTINGS_PANEL_BRIDGE, SETTINGS_PANEL_DATA, STEPPER_CONFIG_EDITOR, SURFACE_DRAWER_BRIDGE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, ValidationPattern, WidgetPageStateRuntimeService, WidgetShellComponent, applyLocalCustomizations$2 as applyLocalCustomizations, applyLocalCustomizations$1 as applyLocalFormCustomizations, assertPraxisCollectionExportArtifact, assertPraxisRuntimeComponentObservationSerializable, buildAngularValidators, buildApiUrl, buildBaseColumnFromDef, buildBaseFormField, buildFormConfigFromEditorialTemplate, buildHeaders, buildPageKey, buildPraxisEffectDistinctKey, buildPraxisLayerScaleCss, buildPraxisThemeSurfaceCss, buildSchemaId, buildSchemaIdStorageKeySegment, buildValidatorsFromValidatorOptions, cancelIfCpfInvalidHook, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, fetchWithETag, fileTypeValidator, fillUndefined, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isCssTextTransform, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, matchFieldValidator, materializeFormLayoutFromMetadata, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, normalizeControlTypeKey, normalizeControlTypeToken, normalizeEditorialLink, normalizeEnd, normalizeFieldAccessMetadata, normalizeFieldConstraints, normalizeFieldPresentation, normalizeFormConfig, normalizeFormLayoutItems, normalizeFormMetadata, normalizeGlobalActionRef$1 as normalizeGlobalActionRef, normalizeLayoutPolicy, normalizeLookupFilterRequest, normalizePath, normalizePraxisDataQueryContext, normalizePraxisEffectPolicy, normalizePraxisPresentationVisualization, normalizePraxisQueryFilterExpression, normalizePraxisQueryFilterNode, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, provideDefaultFormHooks, provideFieldSelectorRegistryBase, provideFieldSelectorRegistryOverride, provideFieldSelectorRegistryRuntime, provideFormHookPresets, provideFormHooks, provideGlobalActionCatalog, provideGlobalActionHandler, provideGlobalConfig, provideGlobalConfigReady, provideGlobalConfigSeed, provideGlobalConfigTenant, provideHookResolvers, provideHookWhitelist, provideOverlayDecisionMatrix, providePraxisAnalyticsGlobalActions, providePraxisCollectionExportProvider, providePraxisDynamicPageMetadata, providePraxisEnterpriseRuntimeContext, providePraxisFooterLinksMetadata, providePraxisGlobalActionCatalog, providePraxisGlobalActions, providePraxisGlobalConfigBootstrap, providePraxisHeroBannerMetadata, providePraxisHttpCollectionExportProvider, providePraxisHttpLoading, providePraxisI18n, providePraxisI18nConfig, providePraxisI18nTranslator, providePraxisIconDefaults, providePraxisJsonLogicOperator, providePraxisJsonLogicOperatorOverride, providePraxisLegalNoticeMetadata, providePraxisLoadingDefaults, providePraxisLogging, providePraxisRelatedResourceOutletMetadata, providePraxisRichTextBlockMetadata, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsImplicitValuePresentation, syncWithServerMetadata, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|