@praxisui/core 9.0.5-rc.3 → 9.0.5-rc.31
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 +6 -4
- package/ai/component-registry.json +284 -114
- package/fesm2022/praxisui-core.mjs +620 -69
- package/package.json +1 -1
- package/types/praxisui-core.d.ts +569 -3
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Component, InjectionToken, Injectable, inject, Inject, Optional, makeEnvironmentProviders, APP_INITIALIZER, signal, computed, DestroyRef, ENVIRONMENT_INITIALIZER, ErrorHandler, Input, Directive, input, booleanAttribute, ChangeDetectionStrategy, EventEmitter, Output, SecurityContext, ViewContainerRef, SimpleChange, ContentChild, HostBinding, HostListener, ViewChildren, ViewChild, Injector, output, effect } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common/http';
|
|
4
4
|
import { HttpHeaders, HttpClient, HttpParams, HttpResponse, HttpContextToken, HTTP_INTERCEPTORS, withInterceptors } from '@angular/common/http';
|
|
5
|
-
import { of, defer, throwError, from, EMPTY, BehaviorSubject, firstValueFrom, Subject, map as map$1, switchMap as switchMap$1, catchError as catchError$1 } from 'rxjs';
|
|
5
|
+
import { of, defer, throwError, from, EMPTY, BehaviorSubject, firstValueFrom, Subject, finalize as finalize$1, shareReplay as shareReplay$1, map as map$1, switchMap as switchMap$1, catchError as catchError$1, forkJoin } from 'rxjs';
|
|
6
6
|
import { switchMap, take, map, catchError, concatMap, tap, shareReplay, takeUntil, toArray, finalize } from 'rxjs/operators';
|
|
7
7
|
import * as i1$3 from '@angular/common';
|
|
8
8
|
import { Location, DOCUMENT, CommonModule } from '@angular/common';
|
|
@@ -807,7 +807,7 @@ function resolveControlTypeAlias(value, fallback = FieldControlType.INPUT) {
|
|
|
807
807
|
}
|
|
808
808
|
|
|
809
809
|
function normalizeResourceIdentityContract(value) {
|
|
810
|
-
if (!isRecord$
|
|
810
|
+
if (!isRecord$5(value))
|
|
811
811
|
return null;
|
|
812
812
|
const keyField = normalizeText$3(value['keyField']);
|
|
813
813
|
const titleField = normalizeText$3(value['titleField']);
|
|
@@ -835,7 +835,7 @@ function normalizeResourceIdentityContract(value) {
|
|
|
835
835
|
function resolveResourceIdentityContract(options) {
|
|
836
836
|
const diagnostics = [];
|
|
837
837
|
const explicit = normalizeResourceIdentityContract(options.explicitIdentity);
|
|
838
|
-
const hasExplicitDeclaration = isRecord$
|
|
838
|
+
const hasExplicitDeclaration = isRecord$5(options.explicitIdentity);
|
|
839
839
|
if (explicit && explicit.valid !== false) {
|
|
840
840
|
return {
|
|
841
841
|
contract: { ...explicit, source: 'explicit' },
|
|
@@ -963,7 +963,7 @@ function normalizeResourceIdentityDiagnostics(value) {
|
|
|
963
963
|
if (!Array.isArray(value))
|
|
964
964
|
return [];
|
|
965
965
|
return value.filter((item) => {
|
|
966
|
-
return isRecord$
|
|
966
|
+
return isRecord$5(item)
|
|
967
967
|
&& isResourceIdentityDiagnosticCode(item['code'])
|
|
968
968
|
&& (item['severity'] === 'info' || item['severity'] === 'warning')
|
|
969
969
|
&& typeof item['message'] === 'string';
|
|
@@ -992,7 +992,7 @@ function normalizeStringList(value) {
|
|
|
992
992
|
return [];
|
|
993
993
|
return [...new Set(value.map(normalizeText$3).filter((item) => !!item))];
|
|
994
994
|
}
|
|
995
|
-
function isRecord$
|
|
995
|
+
function isRecord$5(value) {
|
|
996
996
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
997
997
|
}
|
|
998
998
|
|
|
@@ -2556,15 +2556,22 @@ class SchemaNormalizerService {
|
|
|
2556
2556
|
const key = String(raw.key ?? '').trim();
|
|
2557
2557
|
const kind = String(raw.kind ?? '').trim();
|
|
2558
2558
|
const minSearchChars = Number(raw.minSearchChars);
|
|
2559
|
+
const inputFormat = String(raw.inputFormat ?? 'text').trim();
|
|
2559
2560
|
if (!key ||
|
|
2560
2561
|
seenKeys.has(key) ||
|
|
2561
2562
|
!LOOKUP_SEARCH_STRATEGY_KINDS.has(kind) ||
|
|
2563
|
+
!['text', 'digits'].includes(inputFormat) ||
|
|
2562
2564
|
!Number.isInteger(minSearchChars) ||
|
|
2563
2565
|
minSearchChars < 1) {
|
|
2564
2566
|
return undefined;
|
|
2565
2567
|
}
|
|
2566
2568
|
seenKeys.add(key);
|
|
2567
|
-
return {
|
|
2569
|
+
return {
|
|
2570
|
+
key,
|
|
2571
|
+
kind,
|
|
2572
|
+
minSearchChars,
|
|
2573
|
+
...(inputFormat === 'digits' ? { inputFormat } : {}),
|
|
2574
|
+
};
|
|
2568
2575
|
})
|
|
2569
2576
|
.filter((item) => !!item);
|
|
2570
2577
|
if (searchStrategies.length) {
|
|
@@ -12224,8 +12231,14 @@ class ErrorMessageService {
|
|
|
12224
12231
|
}
|
|
12225
12232
|
normalizeSubmitError(error) {
|
|
12226
12233
|
const status = this.numberValue(error?.status);
|
|
12227
|
-
const
|
|
12228
|
-
const
|
|
12234
|
+
const errorObject = this.objectValue(error);
|
|
12235
|
+
const responsePayload = this.objectValue(errorObject?.['error']);
|
|
12236
|
+
const payload = responsePayload
|
|
12237
|
+
?? (Array.isArray(errorObject?.['errors']) ? errorObject : undefined);
|
|
12238
|
+
const isPublicClientError = status !== undefined && status >= 400 && status < 500;
|
|
12239
|
+
const details = isPublicClientError
|
|
12240
|
+
? this.normalizeDetails(payload?.['errors'])
|
|
12241
|
+
: [];
|
|
12229
12242
|
if (details.length) {
|
|
12230
12243
|
return {
|
|
12231
12244
|
message: this.textValue(payload?.['message']) ?? details[0].message,
|
|
@@ -12233,10 +12246,10 @@ class ErrorMessageService {
|
|
|
12233
12246
|
};
|
|
12234
12247
|
}
|
|
12235
12248
|
const publicMessage = this.textValue(payload?.['message']);
|
|
12236
|
-
if (publicMessage &&
|
|
12249
|
+
if (publicMessage && isPublicClientError) {
|
|
12237
12250
|
return { message: publicMessage, details: [] };
|
|
12238
12251
|
}
|
|
12239
|
-
return { message: this.fallbackMessage(
|
|
12252
|
+
return { message: this.fallbackMessage(status), details: [] };
|
|
12240
12253
|
}
|
|
12241
12254
|
/**
|
|
12242
12255
|
* Returns a generic message for an error returned during a form submit.
|
|
@@ -12245,7 +12258,7 @@ class ErrorMessageService {
|
|
|
12245
12258
|
getSubmitErrorMessage(error) {
|
|
12246
12259
|
return this.normalizeSubmitError(error).message;
|
|
12247
12260
|
}
|
|
12248
|
-
fallbackMessage(
|
|
12261
|
+
fallbackMessage(status) {
|
|
12249
12262
|
if (status === 0) {
|
|
12250
12263
|
return this.tx('global.submitError.network', 'Não foi possível conectar ao servidor. Verifique sua conexão ou se o servidor está disponível.');
|
|
12251
12264
|
}
|
|
@@ -12255,9 +12268,7 @@ class ErrorMessageService {
|
|
|
12255
12268
|
if (status === 400 || status === 422) {
|
|
12256
12269
|
return this.tx('global.submitError.invalidData', 'Dados inválidos ou inconsistentes. Verifique os campos e tente novamente.');
|
|
12257
12270
|
}
|
|
12258
|
-
return
|
|
12259
|
-
? this.textValue(error?.message) ?? this.genericSubmitError()
|
|
12260
|
-
: this.genericSubmitError();
|
|
12271
|
+
return this.genericSubmitError();
|
|
12261
12272
|
}
|
|
12262
12273
|
normalizeDetails(value) {
|
|
12263
12274
|
if (!Array.isArray(value))
|
|
@@ -13805,6 +13816,7 @@ class ResourceDiscoveryService {
|
|
|
13805
13816
|
http = inject(HttpClient);
|
|
13806
13817
|
schemaNormalizer = inject(SchemaNormalizerService);
|
|
13807
13818
|
apiUrlConfig = inject(API_URL);
|
|
13819
|
+
surfaceCatalogInFlightByHref = new Map();
|
|
13808
13820
|
getLinks(source, rel) {
|
|
13809
13821
|
const candidate = this.extractLinks(source)?.[rel];
|
|
13810
13822
|
if (!candidate) {
|
|
@@ -13826,11 +13838,30 @@ class ResourceDiscoveryService {
|
|
|
13826
13838
|
return this.fetchJson(this.requireLinkHref(source, rel, options), options);
|
|
13827
13839
|
}
|
|
13828
13840
|
getSurfaces(source, options) {
|
|
13829
|
-
|
|
13841
|
+
const href = this.requireLinkHref(source, 'surfaces', options);
|
|
13842
|
+
const existing = this.surfaceCatalogInFlightByHref.get(href);
|
|
13843
|
+
if (existing) {
|
|
13844
|
+
return existing;
|
|
13845
|
+
}
|
|
13846
|
+
let request;
|
|
13847
|
+
request = this.fetchJson(href, options).pipe(finalize$1(() => {
|
|
13848
|
+
if (this.surfaceCatalogInFlightByHref.get(href) === request) {
|
|
13849
|
+
this.surfaceCatalogInFlightByHref.delete(href);
|
|
13850
|
+
}
|
|
13851
|
+
}), shareReplay$1({ bufferSize: 1, refCount: true }));
|
|
13852
|
+
this.surfaceCatalogInFlightByHref.set(href, request);
|
|
13853
|
+
return request;
|
|
13830
13854
|
}
|
|
13831
13855
|
getActions(source, options) {
|
|
13832
13856
|
return this.followLink(source, 'actions', options);
|
|
13833
13857
|
}
|
|
13858
|
+
getActionsByResourceKey(resourceKey, options) {
|
|
13859
|
+
const normalizedResourceKey = resourceKey.trim();
|
|
13860
|
+
if (!normalizedResourceKey) {
|
|
13861
|
+
throw new Error('ResourceDiscoveryService requires a resource key for action discovery.');
|
|
13862
|
+
}
|
|
13863
|
+
return this.http.get(this.resolveHref('/schemas/actions', options), { params: new HttpParams().set('resource', normalizedResourceKey) });
|
|
13864
|
+
}
|
|
13834
13865
|
getCapabilities(source, options) {
|
|
13835
13866
|
return this.followLink(source, 'capabilities', options);
|
|
13836
13867
|
}
|
|
@@ -14149,7 +14180,7 @@ const SURFACE_OPEN_PRESETS = [
|
|
|
14149
14180
|
* Invalid roles are omitted and a completely empty context resolves to `null`.
|
|
14150
14181
|
*/
|
|
14151
14182
|
function normalizeSurfaceOperationContext(value) {
|
|
14152
|
-
if (!isRecord$
|
|
14183
|
+
if (!isRecord$4(value))
|
|
14153
14184
|
return null;
|
|
14154
14185
|
const taskScope = normalizeResourceRef(value['taskScope']);
|
|
14155
14186
|
const subject = normalizeResourceRef(value['subject']);
|
|
@@ -14163,7 +14194,7 @@ function normalizeSurfaceOperationContext(value) {
|
|
|
14163
14194
|
};
|
|
14164
14195
|
}
|
|
14165
14196
|
function normalizeResourceRef(value) {
|
|
14166
|
-
if (!isRecord$
|
|
14197
|
+
if (!isRecord$4(value))
|
|
14167
14198
|
return undefined;
|
|
14168
14199
|
const resourceKey = normalizeText(value['resourceKey']);
|
|
14169
14200
|
const resourceId = normalizeResourceId(value['resourceId']);
|
|
@@ -14177,7 +14208,7 @@ function normalizeResourceRef(value) {
|
|
|
14177
14208
|
};
|
|
14178
14209
|
}
|
|
14179
14210
|
function normalizeRelationship(value) {
|
|
14180
|
-
if (!isRecord$
|
|
14211
|
+
if (!isRecord$4(value))
|
|
14181
14212
|
return undefined;
|
|
14182
14213
|
const surfaceId = normalizeText(value['surfaceId']);
|
|
14183
14214
|
const childResourceKey = normalizeText(value['childResourceKey']);
|
|
@@ -14191,7 +14222,7 @@ function normalizeRelationship(value) {
|
|
|
14191
14222
|
};
|
|
14192
14223
|
}
|
|
14193
14224
|
function normalizeIdentity(value) {
|
|
14194
|
-
if (!isRecord$
|
|
14225
|
+
if (!isRecord$4(value) || !Array.isArray(value['metadata']))
|
|
14195
14226
|
return undefined;
|
|
14196
14227
|
const key = normalizeIdentityPart(value['key']);
|
|
14197
14228
|
const title = normalizeIdentityPart(value['title']);
|
|
@@ -14214,7 +14245,7 @@ function normalizeIdentity(value) {
|
|
|
14214
14245
|
};
|
|
14215
14246
|
}
|
|
14216
14247
|
function normalizeIdentityPart(value) {
|
|
14217
|
-
if (!isRecord$
|
|
14248
|
+
if (!isRecord$4(value))
|
|
14218
14249
|
return undefined;
|
|
14219
14250
|
const field = normalizeText(value['field']);
|
|
14220
14251
|
const partValue = normalizeDisplayValue(value['value']);
|
|
@@ -14237,11 +14268,11 @@ function normalizeDisplayValue(value) {
|
|
|
14237
14268
|
return typeof value === 'boolean' ? value : undefined;
|
|
14238
14269
|
}
|
|
14239
14270
|
function cloneJsonRecord(value) {
|
|
14240
|
-
if (!isRecord$
|
|
14271
|
+
if (!isRecord$4(value))
|
|
14241
14272
|
return undefined;
|
|
14242
14273
|
try {
|
|
14243
14274
|
const cloned = JSON.parse(JSON.stringify(value));
|
|
14244
|
-
return isRecord$
|
|
14275
|
+
return isRecord$4(cloned) ? cloned : undefined;
|
|
14245
14276
|
}
|
|
14246
14277
|
catch {
|
|
14247
14278
|
return undefined;
|
|
@@ -14261,7 +14292,7 @@ function normalizeText(value) {
|
|
|
14261
14292
|
const normalized = value.trim();
|
|
14262
14293
|
return normalized || undefined;
|
|
14263
14294
|
}
|
|
14264
|
-
function isRecord$
|
|
14295
|
+
function isRecord$4(value) {
|
|
14265
14296
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
14266
14297
|
}
|
|
14267
14298
|
|
|
@@ -14286,9 +14317,13 @@ const RELATED_RESOURCE_OUTLET_I18N_CONFIG = {
|
|
|
14286
14317
|
'state.error.description': 'Ocorreu um erro ao preparar a superfície relacionada.',
|
|
14287
14318
|
'emptyState.related.title': 'Sem registros em {label}',
|
|
14288
14319
|
'emptyState.related.description': 'Esta coleção relacionada não possui registros para o contexto selecionado.',
|
|
14289
|
-
'emptyState.related.descriptionWithAction': 'Use a ação principal para adicionar um registro relacionado quando houver informações para registrar.',
|
|
14290
|
-
'emptyState.related.action.create': 'Adicionar registro',
|
|
14291
14320
|
'action.open': 'Abrir relacionado',
|
|
14321
|
+
'action.create.label': 'Adicionar {{noun}}',
|
|
14322
|
+
'action.create.tooltip': 'Adicione {{noun}} ao contexto selecionado.',
|
|
14323
|
+
'action.edit.label': 'Editar {{noun}}',
|
|
14324
|
+
'action.edit.tooltip': 'Atualize os dados de {{noun}} no contexto selecionado.',
|
|
14325
|
+
'action.delete.label': 'Remover {{noun}}',
|
|
14326
|
+
'action.delete.tooltip': 'Remova {{noun}} do contexto selecionado.',
|
|
14292
14327
|
'status.ready': 'Recurso relacionado pronto',
|
|
14293
14328
|
},
|
|
14294
14329
|
'en-US': {
|
|
@@ -14308,9 +14343,13 @@ const RELATED_RESOURCE_OUTLET_I18N_CONFIG = {
|
|
|
14308
14343
|
'state.error.description': 'An error occurred while preparing the related surface.',
|
|
14309
14344
|
'emptyState.related.title': 'No records in {label}',
|
|
14310
14345
|
'emptyState.related.description': 'This related collection has no records for the selected context.',
|
|
14311
|
-
'emptyState.related.descriptionWithAction': 'Use the primary action to add a related record when there is information to capture.',
|
|
14312
|
-
'emptyState.related.action.create': 'Add record',
|
|
14313
14346
|
'action.open': 'Open related',
|
|
14347
|
+
'action.create.label': 'Add {{noun}}',
|
|
14348
|
+
'action.create.tooltip': 'Add {{noun}} to the selected context.',
|
|
14349
|
+
'action.edit.label': 'Edit {{noun}}',
|
|
14350
|
+
'action.edit.tooltip': 'Update {{noun}} data in the selected context.',
|
|
14351
|
+
'action.delete.label': 'Remove {{noun}}',
|
|
14352
|
+
'action.delete.tooltip': 'Remove {{noun}} from the selected context.',
|
|
14314
14353
|
'status.ready': 'Related resource ready',
|
|
14315
14354
|
},
|
|
14316
14355
|
},
|
|
@@ -14485,32 +14524,15 @@ class RelatedResourceSurfaceResolverService {
|
|
|
14485
14524
|
const label = this.trim(request.title)
|
|
14486
14525
|
|| this.trim(surface.title)
|
|
14487
14526
|
|| this.humanizeResourceKey(relatedResource.childResourceKey);
|
|
14488
|
-
const canCreate = relatedResource.childOperations.includes('CREATE');
|
|
14489
|
-
const descriptionKey = canCreate
|
|
14490
|
-
? 'emptyState.related.descriptionWithAction'
|
|
14491
|
-
: 'emptyState.related.description';
|
|
14492
|
-
const actions = canCreate
|
|
14493
|
-
? [
|
|
14494
|
-
{
|
|
14495
|
-
label: this.t('emptyState.related.action.create', 'Adicionar registro'),
|
|
14496
|
-
action: 'create',
|
|
14497
|
-
icon: 'add',
|
|
14498
|
-
primary: true,
|
|
14499
|
-
},
|
|
14500
|
-
]
|
|
14501
|
-
: [];
|
|
14502
14527
|
return {
|
|
14503
14528
|
title: this.t('emptyState.related.title', 'Sem registros em {label}', { label }),
|
|
14504
|
-
message: this.t(
|
|
14505
|
-
? 'Use a ação principal para adicionar um registro relacionado quando houver informações para registrar.'
|
|
14506
|
-
: 'Esta coleção relacionada não possui registros para o contexto selecionado.', { label }),
|
|
14529
|
+
message: this.t('emptyState.related.description', 'Esta coleção relacionada não possui registros para o contexto selecionado.', { label }),
|
|
14507
14530
|
icon: this.trim(request.icon) || 'hub',
|
|
14508
14531
|
tone: 'neutral',
|
|
14509
14532
|
variant: 'inline',
|
|
14510
14533
|
density: 'compact',
|
|
14511
14534
|
alignment: 'center',
|
|
14512
14535
|
iconContainer: 'soft',
|
|
14513
|
-
actions,
|
|
14514
14536
|
};
|
|
14515
14537
|
}
|
|
14516
14538
|
objectValue(value) {
|
|
@@ -15218,10 +15240,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
15218
15240
|
}] });
|
|
15219
15241
|
|
|
15220
15242
|
const DEFINITIONS_HREF = '/api/praxis/config/domain-rules/definitions';
|
|
15243
|
+
const DEFINITION_CATALOG_HREF = `${DEFINITIONS_HREF}/catalog`;
|
|
15221
15244
|
const INTAKE_HREF = '/api/praxis/config/domain-rules/intake';
|
|
15222
15245
|
const SIMULATIONS_HREF = '/api/praxis/config/domain-rules/simulations';
|
|
15223
15246
|
const PUBLICATIONS_HREF = '/api/praxis/config/domain-rules/publications';
|
|
15224
15247
|
const MATERIALIZATIONS_HREF = '/api/praxis/config/domain-rules/materializations';
|
|
15248
|
+
const SNAPSHOTS_HREF = '/api/praxis/config/domain-rules/snapshots';
|
|
15249
|
+
const ROLLOUT_POLICIES_HREF = `${SNAPSHOTS_HREF}/rollout-policies`;
|
|
15250
|
+
const ROLLOUTS_HREF = `${SNAPSHOTS_HREF}/rollouts`;
|
|
15251
|
+
const WORKSPACES_HREF = '/api/praxis/config/domain-rules/workspaces';
|
|
15225
15252
|
class DomainRuleService {
|
|
15226
15253
|
http = inject(HttpClient);
|
|
15227
15254
|
discovery = inject(ResourceDiscoveryService);
|
|
@@ -15237,12 +15264,92 @@ class DomainRuleService {
|
|
|
15237
15264
|
headers: this.resolveHeaders(options),
|
|
15238
15265
|
});
|
|
15239
15266
|
}
|
|
15267
|
+
browseDefinitionCatalog(filters = {}, options = {}) {
|
|
15268
|
+
return this.http.get(this.discovery.resolveHref(DEFINITION_CATALOG_HREF, options), {
|
|
15269
|
+
params: this.buildParams(filters),
|
|
15270
|
+
headers: this.resolveHeaders(options),
|
|
15271
|
+
});
|
|
15272
|
+
}
|
|
15273
|
+
getDefinitionCapabilities(options = {}) {
|
|
15274
|
+
return this.http.get(this.discovery.resolveHref(`${DEFINITIONS_HREF}/capabilities`, options), { headers: this.resolveHeaders(options) });
|
|
15275
|
+
}
|
|
15240
15276
|
transitionDefinitionStatus(definitionId, request, options = {}) {
|
|
15241
15277
|
return this.http.patch(this.discovery.resolveHref(`${DEFINITIONS_HREF}/${encodeURIComponent(definitionId)}/status`, options), request, { headers: this.resolveHeaders(options) });
|
|
15242
15278
|
}
|
|
15243
15279
|
getDefinitionTimeline(definitionId, options = {}) {
|
|
15244
15280
|
return this.http.get(this.discovery.resolveHref(`${DEFINITIONS_HREF}/${encodeURIComponent(definitionId)}/timeline`, options), { headers: this.resolveHeaders(options) });
|
|
15245
15281
|
}
|
|
15282
|
+
createChangeWorkspace(request, options = {}) {
|
|
15283
|
+
return this.http.post(this.discovery.resolveHref(WORKSPACES_HREF, options), request, { headers: this.resolveHeaders(options) });
|
|
15284
|
+
}
|
|
15285
|
+
listChangeWorkspaces(options = {}) {
|
|
15286
|
+
return this.http.get(this.discovery.resolveHref(WORKSPACES_HREF, options), { headers: this.resolveHeaders(options) });
|
|
15287
|
+
}
|
|
15288
|
+
getChangeWorkspace(workspaceId, options = {}) {
|
|
15289
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}`, options), { headers: this.resolveHeaders(options) });
|
|
15290
|
+
}
|
|
15291
|
+
getChangeWorkspaceCapabilities(workspaceId, options = {}) {
|
|
15292
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/capabilities`, options), { headers: this.resolveHeaders(options) });
|
|
15293
|
+
}
|
|
15294
|
+
getDefinition(definitionId, options = {}) {
|
|
15295
|
+
return this.http.get(this.discovery.resolveHref(`${DEFINITIONS_HREF}/${encodeURIComponent(definitionId)}`, options), { headers: this.resolveHeaders(options) });
|
|
15296
|
+
}
|
|
15297
|
+
updateChangeWorkspaceDraft(workspaceId, request, etag, options = {}) {
|
|
15298
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15299
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15300
|
+
return this.http.put(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/draft`, options), request, { headers });
|
|
15301
|
+
}
|
|
15302
|
+
createTestScenario(workspaceId, request, options = {}) {
|
|
15303
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/scenarios`, options), request, { headers: this.resolveHeaders(options) });
|
|
15304
|
+
}
|
|
15305
|
+
listTestScenarios(workspaceId, options = {}) {
|
|
15306
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/scenarios`, options), { headers: this.resolveHeaders(options) });
|
|
15307
|
+
}
|
|
15308
|
+
listTestRuns(workspaceId, options = {}) {
|
|
15309
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/test-runs`, options), { headers: this.resolveHeaders(options) });
|
|
15310
|
+
}
|
|
15311
|
+
submitChangeWorkspace(workspaceId, etag, options = {}) {
|
|
15312
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15313
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15314
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/submit`, options), null, { headers });
|
|
15315
|
+
}
|
|
15316
|
+
reviewChangeWorkspace(workspaceId, request, etag, options = {}) {
|
|
15317
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15318
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15319
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/reviews`, options), request, { headers });
|
|
15320
|
+
}
|
|
15321
|
+
listChangeWorkspaceReviews(workspaceId, options = {}) {
|
|
15322
|
+
return this.http.get(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/reviews`, options), { headers: this.resolveHeaders(options) });
|
|
15323
|
+
}
|
|
15324
|
+
promoteChangeWorkspace(workspaceId, etag, options = {}) {
|
|
15325
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15326
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15327
|
+
return this.http.post(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/promote`, options), null, { headers });
|
|
15328
|
+
}
|
|
15329
|
+
inspectChangeWorkspaceLifecycle(workspaceId, ruleSetKey = null, options = {}) {
|
|
15330
|
+
return this.getChangeWorkspace(workspaceId, options).pipe(switchMap$1((workspace) => forkJoin({
|
|
15331
|
+
workspace: of(workspace),
|
|
15332
|
+
promotedDefinition: workspace.promotedDefinitionId
|
|
15333
|
+
? this.getDefinition(workspace.promotedDefinitionId, options)
|
|
15334
|
+
: of(null),
|
|
15335
|
+
testRuns: this.listTestRuns(workspaceId, options),
|
|
15336
|
+
reviews: this.listChangeWorkspaceReviews(workspaceId, options),
|
|
15337
|
+
materializations: workspace.promotedDefinitionId
|
|
15338
|
+
? this.listMaterializations({ ruleDefinitionId: workspace.promotedDefinitionId }, options)
|
|
15339
|
+
: of([]),
|
|
15340
|
+
snapshotHeadStatus: ruleSetKey
|
|
15341
|
+
? this.getSnapshotHeadStatus(ruleSetKey, options)
|
|
15342
|
+
: of(null),
|
|
15343
|
+
snapshotVersions: ruleSetKey
|
|
15344
|
+
? this.listSnapshotVersions(ruleSetKey, 50, options)
|
|
15345
|
+
: of([]),
|
|
15346
|
+
})));
|
|
15347
|
+
}
|
|
15348
|
+
updateTestScenario(workspaceId, scenarioId, request, etag, options = {}) {
|
|
15349
|
+
const headers = (this.resolveHeaders(options) ?? new HttpHeaders())
|
|
15350
|
+
.set('If-Match', this.strongEntityTag(etag));
|
|
15351
|
+
return this.http.put(this.discovery.resolveHref(`${WORKSPACES_HREF}/${encodeURIComponent(workspaceId)}/scenarios/${encodeURIComponent(scenarioId)}`, options), request, { headers });
|
|
15352
|
+
}
|
|
15246
15353
|
simulate(request, options = {}) {
|
|
15247
15354
|
return this.http.post(this.discovery.resolveHref(SIMULATIONS_HREF, options), request, { headers: this.resolveHeaders(options) });
|
|
15248
15355
|
}
|
|
@@ -15261,6 +15368,100 @@ class DomainRuleService {
|
|
|
15261
15368
|
transitionMaterializationStatus(materializationId, request, options = {}) {
|
|
15262
15369
|
return this.http.patch(this.discovery.resolveHref(`${MATERIALIZATIONS_HREF}/${encodeURIComponent(materializationId)}/status`, options), request, { headers: this.resolveHeaders(options) });
|
|
15263
15370
|
}
|
|
15371
|
+
listSnapshotVersions(ruleSetKey, limit = 50, options = {}) {
|
|
15372
|
+
return this.http.get(this.discovery.resolveHref(SNAPSHOTS_HREF, options), {
|
|
15373
|
+
params: new HttpParams()
|
|
15374
|
+
.set('ruleSetKey', ruleSetKey)
|
|
15375
|
+
.set('limit', String(limit)),
|
|
15376
|
+
headers: this.resolveHeaders(options),
|
|
15377
|
+
});
|
|
15378
|
+
}
|
|
15379
|
+
getSnapshotHeadStatus(ruleSetKey, options = {}) {
|
|
15380
|
+
return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/head/status`, options), {
|
|
15381
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15382
|
+
headers: this.resolveHeaders(options),
|
|
15383
|
+
});
|
|
15384
|
+
}
|
|
15385
|
+
getSnapshotHead(ruleSetKey, options = {}) {
|
|
15386
|
+
return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/head`, options), {
|
|
15387
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15388
|
+
headers: this.resolveHeaders(options),
|
|
15389
|
+
});
|
|
15390
|
+
}
|
|
15391
|
+
getSnapshotExecutionSummary(snapshotKey, options = {}) {
|
|
15392
|
+
return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/execution-summary`, options), { headers: this.resolveHeaders(options) });
|
|
15393
|
+
}
|
|
15394
|
+
getSnapshotHostStatusSummary(ruleSetKey, options = {}) {
|
|
15395
|
+
return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/head/host-status-summary`, options), {
|
|
15396
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15397
|
+
headers: this.resolveHeaders(options),
|
|
15398
|
+
});
|
|
15399
|
+
}
|
|
15400
|
+
getRolloutPolicyCatalog(ruleSetKey, options = {}) {
|
|
15401
|
+
return this.http.get(this.discovery.resolveHref(ROLLOUT_POLICIES_HREF, options), {
|
|
15402
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15403
|
+
headers: this.resolveHeaders(options),
|
|
15404
|
+
});
|
|
15405
|
+
}
|
|
15406
|
+
getRolloutPolicyTimeline(ruleSetKey, options = {}) {
|
|
15407
|
+
return this.http.get(this.discovery.resolveHref(`${ROLLOUT_POLICIES_HREF}/timeline`, options), {
|
|
15408
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15409
|
+
headers: this.resolveHeaders(options),
|
|
15410
|
+
});
|
|
15411
|
+
}
|
|
15412
|
+
createRolloutPolicy(request, options = {}) {
|
|
15413
|
+
return this.http.post(this.discovery.resolveHref(ROLLOUT_POLICIES_HREF, options), request, { headers: this.resolveHeaders(options) });
|
|
15414
|
+
}
|
|
15415
|
+
approveRolloutPolicy(policyId, options = {}) {
|
|
15416
|
+
return this.http.post(this.discovery.resolveHref(`${ROLLOUT_POLICIES_HREF}/${encodeURIComponent(policyId)}/approve`, options), null, { headers: this.resolveHeaders(options) });
|
|
15417
|
+
}
|
|
15418
|
+
activateRolloutPolicy(policyId, policyHeadEtag, options = {}) {
|
|
15419
|
+
const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15420
|
+
return this.http.post(this.discovery.resolveHref(`${ROLLOUT_POLICIES_HREF}/${encodeURIComponent(policyId)}/activate`, options), null, { headers: resolved.set('If-Match', this.strongEntityTag(policyHeadEtag)) });
|
|
15421
|
+
}
|
|
15422
|
+
getRolloutCatalog(ruleSetKey, options = {}) {
|
|
15423
|
+
return this.http.get(this.discovery.resolveHref(ROLLOUTS_HREF, options), {
|
|
15424
|
+
params: new HttpParams().set('ruleSetKey', ruleSetKey),
|
|
15425
|
+
headers: this.resolveHeaders(options),
|
|
15426
|
+
});
|
|
15427
|
+
}
|
|
15428
|
+
getRolloutReadiness(rolloutId, options = {}) {
|
|
15429
|
+
return this.http.get(this.discovery.resolveHref(`${ROLLOUTS_HREF}/${encodeURIComponent(rolloutId)}/readiness`, options), { headers: this.resolveHeaders(options) });
|
|
15430
|
+
}
|
|
15431
|
+
createRollout(request, headEtag, options = {}) {
|
|
15432
|
+
const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15433
|
+
return this.http.post(this.discovery.resolveHref(ROLLOUTS_HREF, options), request, { headers: resolved.set('If-Match', this.strongEntityTag(headEtag)) });
|
|
15434
|
+
}
|
|
15435
|
+
cancelRollout(rolloutId, options = {}) {
|
|
15436
|
+
return this.http.post(this.discovery.resolveHref(`${ROLLOUTS_HREF}/${encodeURIComponent(rolloutId)}/cancel`, options), null, { headers: this.resolveHeaders(options) });
|
|
15437
|
+
}
|
|
15438
|
+
activateSnapshotCandidate(snapshotKey, headEtag, rolloutId, options = {}) {
|
|
15439
|
+
let resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15440
|
+
resolved = resolved.set('If-Match', this.strongEntityTag(headEtag));
|
|
15441
|
+
resolved = resolved.set('X-Rule-Rollout-ID', rolloutId);
|
|
15442
|
+
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/activate`, options), null, { headers: resolved });
|
|
15443
|
+
}
|
|
15444
|
+
prepareSnapshotComposition(request, options = {}) {
|
|
15445
|
+
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/composition-manifest`, options), request, { headers: this.resolveHeaders(options) });
|
|
15446
|
+
}
|
|
15447
|
+
approveSnapshotComposition(request, options = {}) {
|
|
15448
|
+
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/composition-approvals`, options), request, { headers: this.resolveHeaders(options) });
|
|
15449
|
+
}
|
|
15450
|
+
publishSnapshot(request, currentHeadEtag, options = {}) {
|
|
15451
|
+
let headers = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15452
|
+
headers = currentHeadEtag
|
|
15453
|
+
? headers.set('If-Match', this.strongEntityTag(currentHeadEtag))
|
|
15454
|
+
: headers.set('If-None-Match', '*');
|
|
15455
|
+
return this.http.post(this.discovery.resolveHref(SNAPSHOTS_HREF, options), request, { headers });
|
|
15456
|
+
}
|
|
15457
|
+
activateSnapshot(snapshotKey, headEtag, options = {}) {
|
|
15458
|
+
const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15459
|
+
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/activate`, options), null, { headers: resolved.set('If-Match', this.strongEntityTag(headEtag)) });
|
|
15460
|
+
}
|
|
15461
|
+
rollbackSnapshot(snapshotKey, headEtag, options = {}) {
|
|
15462
|
+
const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
|
|
15463
|
+
return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/rollback`, options), null, { headers: resolved.set('If-Match', this.strongEntityTag(headEtag)) });
|
|
15464
|
+
}
|
|
15264
15465
|
buildParams(filters) {
|
|
15265
15466
|
let params = new HttpParams();
|
|
15266
15467
|
Object.entries(filters).forEach(([key, value]) => {
|
|
@@ -15270,6 +15471,15 @@ class DomainRuleService {
|
|
|
15270
15471
|
});
|
|
15271
15472
|
return params;
|
|
15272
15473
|
}
|
|
15474
|
+
strongEntityTag(value) {
|
|
15475
|
+
const trimmed = value.trim();
|
|
15476
|
+
if (/^"[^"\r\n]*"$/.test(trimmed))
|
|
15477
|
+
return trimmed;
|
|
15478
|
+
if (!trimmed || /["\r\n,]/.test(trimmed) || /^W\//i.test(trimmed)) {
|
|
15479
|
+
throw new Error('The mutable-head ETag is not a valid strong entity tag.');
|
|
15480
|
+
}
|
|
15481
|
+
return `"${trimmed}"`;
|
|
15482
|
+
}
|
|
15273
15483
|
resolveHeaders(options) {
|
|
15274
15484
|
if (options.headers instanceof HttpHeaders) {
|
|
15275
15485
|
return options.headers;
|
|
@@ -15739,6 +15949,16 @@ class ResourceActionOpenAdapterService {
|
|
|
15739
15949
|
];
|
|
15740
15950
|
return;
|
|
15741
15951
|
}
|
|
15952
|
+
const targetResourceKey = String(execution.preconditions.resourceVersionTargetResourceKey ?? '').trim();
|
|
15953
|
+
const targetIdField = String(execution.preconditions.resourceVersionTargetIdField ?? '').trim();
|
|
15954
|
+
if (targetResourceKey || targetIdField) {
|
|
15955
|
+
if (!targetResourceKey || !targetIdField) {
|
|
15956
|
+
throw new Error(`ResourceActionOpenAdapterService requires both resourceVersionTargetResourceKey and resourceVersionTargetIdField for action "${action.id}".`);
|
|
15957
|
+
}
|
|
15958
|
+
inputs['submitResourceVersionTargetResourceKey'] = targetResourceKey;
|
|
15959
|
+
inputs['submitResourceVersionTargetIdField'] = targetIdField;
|
|
15960
|
+
return;
|
|
15961
|
+
}
|
|
15742
15962
|
if (execution.preconditions.resourceVersion === 'REQUIRED') {
|
|
15743
15963
|
throw new Error(`ResourceActionOpenAdapterService requires resourceVersion or resourceVersionBindingPath for action "${action.id}".`);
|
|
15744
15964
|
}
|
|
@@ -15806,6 +16026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
15806
16026
|
|
|
15807
16027
|
class SurfaceOpenMaterializerService {
|
|
15808
16028
|
discovery = inject(ResourceDiscoveryService);
|
|
16029
|
+
i18n = inject(PraxisI18nService);
|
|
15809
16030
|
async materialize(payload, context) {
|
|
15810
16031
|
if (this.shouldPreserveRelatedRemoteTable(payload)) {
|
|
15811
16032
|
return payload;
|
|
@@ -16267,11 +16488,13 @@ class SurfaceOpenMaterializerService {
|
|
|
16267
16488
|
return !relatedActionIds.has(String(record['id'] || record['action'] || ''));
|
|
16268
16489
|
})
|
|
16269
16490
|
: [];
|
|
16491
|
+
const previousRelatedActionPresentation = new Map((Array.isArray(previousToolbar['actions']) ? previousToolbar['actions'] : [])
|
|
16492
|
+
.map((action) => this.objectRecord(action))
|
|
16493
|
+
.filter((action) => relatedActionIds.has(String(action['id'] || '')))
|
|
16494
|
+
.map((action) => [String(action['id']), action]));
|
|
16270
16495
|
const toolbarActions = [
|
|
16271
16496
|
...previousToolbarActions,
|
|
16272
|
-
...relatedActions.map((action) => action['
|
|
16273
|
-
? { ...action, appearance: 'filled' }
|
|
16274
|
-
: action),
|
|
16497
|
+
...relatedActions.map((action) => this.mergeRelatedActionPresentation(action, previousRelatedActionPresentation.get(String(action['id'])))),
|
|
16275
16498
|
];
|
|
16276
16499
|
const previousAi = this.objectRecord(previousConfig['ai']);
|
|
16277
16500
|
const previousAssistant = this.objectRecord(previousAi['assistant']);
|
|
@@ -16332,6 +16555,31 @@ class SurfaceOpenMaterializerService {
|
|
|
16332
16555
|
? value
|
|
16333
16556
|
: {};
|
|
16334
16557
|
}
|
|
16558
|
+
mergeRelatedActionPresentation(canonical, authored) {
|
|
16559
|
+
if (!authored)
|
|
16560
|
+
return canonical;
|
|
16561
|
+
const presentation = {};
|
|
16562
|
+
for (const key of ['label', 'tooltip', 'icon']) {
|
|
16563
|
+
if (typeof authored[key] === 'string')
|
|
16564
|
+
presentation[key] = authored[key];
|
|
16565
|
+
}
|
|
16566
|
+
if (['primary', 'accent', 'warn'].includes(String(authored['color']))) {
|
|
16567
|
+
presentation['color'] = authored['color'];
|
|
16568
|
+
}
|
|
16569
|
+
if (['filled', 'outlined', 'elevated', 'text', 'tonal'].includes(String(authored['appearance']))) {
|
|
16570
|
+
presentation['appearance'] = authored['appearance'];
|
|
16571
|
+
}
|
|
16572
|
+
if (['button', 'icon', 'fab'].includes(String(authored['type']))) {
|
|
16573
|
+
presentation['type'] = authored['type'];
|
|
16574
|
+
}
|
|
16575
|
+
if (['start', 'end'].includes(String(authored['position']))) {
|
|
16576
|
+
presentation['position'] = authored['position'];
|
|
16577
|
+
}
|
|
16578
|
+
if (typeof authored['order'] === 'number' && Number.isFinite(authored['order'])) {
|
|
16579
|
+
presentation['order'] = authored['order'];
|
|
16580
|
+
}
|
|
16581
|
+
return { ...canonical, ...presentation };
|
|
16582
|
+
}
|
|
16335
16583
|
buildRelatedCrudActions(payload, operations, paths) {
|
|
16336
16584
|
const noun = this.resolveRelatedActionNoun(payload);
|
|
16337
16585
|
const formIdPrefix = this.stableSurfaceId(payload);
|
|
@@ -16341,7 +16589,7 @@ class SurfaceOpenMaterializerService {
|
|
|
16341
16589
|
actions.push({
|
|
16342
16590
|
id: 'create',
|
|
16343
16591
|
action: 'create',
|
|
16344
|
-
label:
|
|
16592
|
+
label: this.relatedActionText('create', noun),
|
|
16345
16593
|
tooltip: this.resolveRelatedActionDescription(payload, 'create', noun),
|
|
16346
16594
|
formId: `${formIdPrefix}.create`,
|
|
16347
16595
|
icon: 'add',
|
|
@@ -16358,7 +16606,7 @@ class SurfaceOpenMaterializerService {
|
|
|
16358
16606
|
actions.push({
|
|
16359
16607
|
id: 'edit',
|
|
16360
16608
|
action: 'edit',
|
|
16361
|
-
label:
|
|
16609
|
+
label: this.relatedActionText('edit', noun),
|
|
16362
16610
|
tooltip: this.resolveRelatedActionDescription(payload, 'edit', noun),
|
|
16363
16611
|
formId: `${formIdPrefix}.edit`,
|
|
16364
16612
|
icon: 'edit',
|
|
@@ -16378,7 +16626,7 @@ class SurfaceOpenMaterializerService {
|
|
|
16378
16626
|
actions.push({
|
|
16379
16627
|
id: 'delete',
|
|
16380
16628
|
action: 'delete',
|
|
16381
|
-
label:
|
|
16629
|
+
label: this.relatedActionText('delete', noun),
|
|
16382
16630
|
tooltip: this.resolveRelatedActionDescription(payload, 'delete', noun),
|
|
16383
16631
|
formId: `${formIdPrefix}.delete`,
|
|
16384
16632
|
icon: 'delete',
|
|
@@ -16397,6 +16645,13 @@ class SurfaceOpenMaterializerService {
|
|
|
16397
16645
|
}
|
|
16398
16646
|
return actions;
|
|
16399
16647
|
}
|
|
16648
|
+
relatedActionText(operation, noun) {
|
|
16649
|
+
const english = this.i18n.getLocale().toLowerCase().startsWith('en');
|
|
16650
|
+
const fallback = english
|
|
16651
|
+
? `${operation === 'create' ? 'Add' : operation === 'edit' ? 'Edit' : 'Remove'} ${noun}`
|
|
16652
|
+
: `${operation === 'create' ? 'Adicionar' : operation === 'edit' ? 'Editar' : 'Remover'} ${noun}`;
|
|
16653
|
+
return this.i18n.t(`action.${operation}.label`, { noun }, fallback, RELATED_RESOURCE_OUTLET_I18N_NAMESPACE);
|
|
16654
|
+
}
|
|
16400
16655
|
buildRelatedCommandFormConfig() {
|
|
16401
16656
|
return {
|
|
16402
16657
|
metadata: {
|
|
@@ -16579,11 +16834,19 @@ class SurfaceOpenMaterializerService {
|
|
|
16579
16834
|
|| '').trim();
|
|
16580
16835
|
if (surfaceDescription)
|
|
16581
16836
|
return surfaceDescription;
|
|
16582
|
-
|
|
16583
|
-
|
|
16584
|
-
|
|
16585
|
-
|
|
16586
|
-
|
|
16837
|
+
const english = this.i18n.getLocale().toLowerCase().startsWith('en');
|
|
16838
|
+
const fallback = english
|
|
16839
|
+
? action === 'create'
|
|
16840
|
+
? `Add ${noun} to the selected context.`
|
|
16841
|
+
: action === 'edit'
|
|
16842
|
+
? `Update ${noun} data in the selected context.`
|
|
16843
|
+
: `Remove ${noun} from the selected context.`
|
|
16844
|
+
: action === 'create'
|
|
16845
|
+
? `Adicione ${noun} ao contexto selecionado.`
|
|
16846
|
+
: action === 'edit'
|
|
16847
|
+
? `Atualize os dados de ${noun} no contexto selecionado.`
|
|
16848
|
+
: `Remova ${noun} do contexto selecionado.`;
|
|
16849
|
+
return this.i18n.t(`action.${action}.tooltip`, { noun }, fallback, RELATED_RESOURCE_OUTLET_I18N_NAMESPACE);
|
|
16587
16850
|
}
|
|
16588
16851
|
inferColumnsFromData(data) {
|
|
16589
16852
|
const first = data.find((item) => item && typeof item === 'object' && !Array.isArray(item));
|
|
@@ -17840,7 +18103,7 @@ function normalizeUnknownError(rawError) {
|
|
|
17840
18103
|
if (typeof candidate === 'string') {
|
|
17841
18104
|
return normalizeFromParts('Error', candidate);
|
|
17842
18105
|
}
|
|
17843
|
-
if (isRecord$
|
|
18106
|
+
if (isRecord$3(candidate)) {
|
|
17844
18107
|
const name = toText(candidate['name'], 'Error');
|
|
17845
18108
|
const message = toText(candidate['message'], safeStringify(candidate));
|
|
17846
18109
|
const stack = toStack(candidate['stack']);
|
|
@@ -17859,7 +18122,7 @@ function extractErrorCandidate(data) {
|
|
|
17859
18122
|
if (data instanceof Error || typeof data === 'string') {
|
|
17860
18123
|
return data;
|
|
17861
18124
|
}
|
|
17862
|
-
if (!isRecord$
|
|
18125
|
+
if (!isRecord$3(data)) {
|
|
17863
18126
|
return undefined;
|
|
17864
18127
|
}
|
|
17865
18128
|
if ('error' in data) {
|
|
@@ -17877,7 +18140,7 @@ function extractErrorCandidate(data) {
|
|
|
17877
18140
|
return undefined;
|
|
17878
18141
|
}
|
|
17879
18142
|
function unwrapRejection(error) {
|
|
17880
|
-
if (!isRecord$
|
|
18143
|
+
if (!isRecord$3(error)) {
|
|
17881
18144
|
return error;
|
|
17882
18145
|
}
|
|
17883
18146
|
if ('rejection' in error) {
|
|
@@ -17937,7 +18200,7 @@ function safeStringify(value) {
|
|
|
17937
18200
|
return UNKNOWN_ERROR_MESSAGE;
|
|
17938
18201
|
}
|
|
17939
18202
|
}
|
|
17940
|
-
function isRecord$
|
|
18203
|
+
function isRecord$3(value) {
|
|
17941
18204
|
return !!value && typeof value === 'object';
|
|
17942
18205
|
}
|
|
17943
18206
|
|
|
@@ -18897,6 +19160,54 @@ function buildPraxisCollectionSearchCss(tokens = {}) {
|
|
|
18897
19160
|
`;
|
|
18898
19161
|
}
|
|
18899
19162
|
|
|
19163
|
+
const PRAXIS_ACTION_CONTROL_DEFAULTS = {
|
|
19164
|
+
height: '40px',
|
|
19165
|
+
compactHeight: '36px',
|
|
19166
|
+
spaciousHeight: '44px',
|
|
19167
|
+
radius: '8px',
|
|
19168
|
+
paddingInline: '12px',
|
|
19169
|
+
gap: '8px',
|
|
19170
|
+
iconSize: '18px',
|
|
19171
|
+
fontSize: 'var(--md-sys-typescale-label-large-size, 0.875rem)',
|
|
19172
|
+
lineHeight: 'var(--md-sys-typescale-label-large-line-height, 1.25rem)',
|
|
19173
|
+
fontWeight: 'var(--md-sys-typescale-label-large-weight, 500)',
|
|
19174
|
+
focusRing: 'color-mix(in srgb, var(--md-sys-color-primary) 52%, transparent)',
|
|
19175
|
+
disabledOpacity: '0.62',
|
|
19176
|
+
};
|
|
19177
|
+
const PRAXIS_ACTION_CONTROL_VARS = {
|
|
19178
|
+
height: '--praxis-action-control-height',
|
|
19179
|
+
compactHeight: '--praxis-action-control-compact-height',
|
|
19180
|
+
spaciousHeight: '--praxis-action-control-spacious-height',
|
|
19181
|
+
radius: '--praxis-action-control-radius',
|
|
19182
|
+
paddingInline: '--praxis-action-control-padding-inline',
|
|
19183
|
+
gap: '--praxis-action-control-gap',
|
|
19184
|
+
iconSize: '--praxis-action-control-icon-size',
|
|
19185
|
+
fontSize: '--praxis-action-control-font-size',
|
|
19186
|
+
lineHeight: '--praxis-action-control-line-height',
|
|
19187
|
+
fontWeight: '--praxis-action-control-font-weight',
|
|
19188
|
+
focusRing: '--praxis-action-control-focus-ring',
|
|
19189
|
+
disabledOpacity: '--praxis-action-control-disabled-opacity',
|
|
19190
|
+
};
|
|
19191
|
+
function buildPraxisActionControlCss(tokens = {}) {
|
|
19192
|
+
const resolved = { ...PRAXIS_ACTION_CONTROL_DEFAULTS, ...tokens };
|
|
19193
|
+
return `
|
|
19194
|
+
:root {
|
|
19195
|
+
${PRAXIS_ACTION_CONTROL_VARS.height}: ${resolved.height};
|
|
19196
|
+
${PRAXIS_ACTION_CONTROL_VARS.compactHeight}: ${resolved.compactHeight};
|
|
19197
|
+
${PRAXIS_ACTION_CONTROL_VARS.spaciousHeight}: ${resolved.spaciousHeight};
|
|
19198
|
+
${PRAXIS_ACTION_CONTROL_VARS.radius}: ${resolved.radius};
|
|
19199
|
+
${PRAXIS_ACTION_CONTROL_VARS.paddingInline}: ${resolved.paddingInline};
|
|
19200
|
+
${PRAXIS_ACTION_CONTROL_VARS.gap}: ${resolved.gap};
|
|
19201
|
+
${PRAXIS_ACTION_CONTROL_VARS.iconSize}: ${resolved.iconSize};
|
|
19202
|
+
${PRAXIS_ACTION_CONTROL_VARS.fontSize}: ${resolved.fontSize};
|
|
19203
|
+
${PRAXIS_ACTION_CONTROL_VARS.lineHeight}: ${resolved.lineHeight};
|
|
19204
|
+
${PRAXIS_ACTION_CONTROL_VARS.fontWeight}: ${resolved.fontWeight};
|
|
19205
|
+
${PRAXIS_ACTION_CONTROL_VARS.focusRing}: ${resolved.focusRing};
|
|
19206
|
+
${PRAXIS_ACTION_CONTROL_VARS.disabledOpacity}: ${resolved.disabledOpacity};
|
|
19207
|
+
}
|
|
19208
|
+
`;
|
|
19209
|
+
}
|
|
19210
|
+
|
|
18900
19211
|
/** Set the current tenant for GlobalConfigService at app boot. */
|
|
18901
19212
|
function provideGlobalConfigTenant(tenantId) {
|
|
18902
19213
|
return {
|
|
@@ -20864,6 +21175,227 @@ function convertFormLayoutToConfig(formLayout) {
|
|
|
20864
21175
|
return ensureIds({ sections });
|
|
20865
21176
|
}
|
|
20866
21177
|
|
|
21178
|
+
const MAX_REACTIVE_DETERMINATION_BINDINGS = 64;
|
|
21179
|
+
/** Strictly normalizes the closed x-ui.reactiveDeterminations projection. */
|
|
21180
|
+
function normalizeReactiveDeterminations(value) {
|
|
21181
|
+
if (!Array.isArray(value))
|
|
21182
|
+
return [];
|
|
21183
|
+
const normalized = value
|
|
21184
|
+
.map((candidate) => normalizeReactiveDetermination(candidate))
|
|
21185
|
+
.filter((candidate) => candidate !== null);
|
|
21186
|
+
const idCounts = new Map();
|
|
21187
|
+
normalized.forEach((candidate) => idCounts.set(candidate.id, (idCounts.get(candidate.id) ?? 0) + 1));
|
|
21188
|
+
if (normalized.some((candidate) => idCounts.get(candidate.id) !== 1))
|
|
21189
|
+
return [];
|
|
21190
|
+
if (hasCrossDefinitionOutputOverlap(normalized) || hasDependencyCycle(normalized))
|
|
21191
|
+
return [];
|
|
21192
|
+
return normalized;
|
|
21193
|
+
}
|
|
21194
|
+
function normalizeReactiveDetermination(value) {
|
|
21195
|
+
if (!isRecord$2(value) ||
|
|
21196
|
+
!hasOnlyKeys(value, ['id', 'trigger', 'scope', 'capability', 'inputs', 'outputs', 'provenance'])) {
|
|
21197
|
+
return null;
|
|
21198
|
+
}
|
|
21199
|
+
const id = stableId(value['id']);
|
|
21200
|
+
const trigger = normalizeTrigger(value['trigger']);
|
|
21201
|
+
const scope = normalizeScope(value['scope']);
|
|
21202
|
+
const capability = normalizeCapability(value['capability']);
|
|
21203
|
+
const inputs = normalizeInputs(value['inputs']);
|
|
21204
|
+
const outputs = normalizeOutputs(value['outputs']);
|
|
21205
|
+
const provenance = normalizeProvenance(value['provenance']);
|
|
21206
|
+
const inputFieldPaths = new Set(inputs.map((binding) => binding.fieldPath));
|
|
21207
|
+
const outputFieldPaths = new Set(outputs.map((binding) => binding.fieldPath));
|
|
21208
|
+
if (!id ||
|
|
21209
|
+
!trigger ||
|
|
21210
|
+
!scope ||
|
|
21211
|
+
!capability ||
|
|
21212
|
+
!inputs.length ||
|
|
21213
|
+
!outputs.length ||
|
|
21214
|
+
!provenance ||
|
|
21215
|
+
inputs.length + outputs.length > MAX_REACTIVE_DETERMINATION_BINDINGS ||
|
|
21216
|
+
trigger.sourcePaths.length > inputs.length ||
|
|
21217
|
+
trigger.sourcePaths.some((sourcePath) => !inputFieldPaths.has(sourcePath)) ||
|
|
21218
|
+
[...outputFieldPaths].some((outputPath) => [...inputFieldPaths].some((inputPath) => jsonPointersOverlap(inputPath, outputPath)))) {
|
|
21219
|
+
return null;
|
|
21220
|
+
}
|
|
21221
|
+
return { id, trigger, scope, capability, inputs, outputs, provenance };
|
|
21222
|
+
}
|
|
21223
|
+
function hasCrossDefinitionOutputOverlap(definitions) {
|
|
21224
|
+
for (let leftIndex = 0; leftIndex < definitions.length; leftIndex += 1) {
|
|
21225
|
+
for (let rightIndex = leftIndex + 1; rightIndex < definitions.length; rightIndex += 1) {
|
|
21226
|
+
if (definitions[leftIndex].outputs.some((left) => definitions[rightIndex].outputs.some((right) => jsonPointersOverlap(left.fieldPath, right.fieldPath))))
|
|
21227
|
+
return true;
|
|
21228
|
+
}
|
|
21229
|
+
}
|
|
21230
|
+
return false;
|
|
21231
|
+
}
|
|
21232
|
+
function hasDependencyCycle(definitions) {
|
|
21233
|
+
const dependencies = definitions.map((consumer) => definitions
|
|
21234
|
+
.map((producer, producerIndex) => ({ producer, producerIndex }))
|
|
21235
|
+
.filter(({ producer }) => producer !== consumer && producer.outputs.some((output) => consumer.inputs.some((input) => jsonPointersOverlap(output.fieldPath, input.fieldPath))))
|
|
21236
|
+
.map(({ producerIndex }) => producerIndex));
|
|
21237
|
+
const state = new Array(definitions.length).fill(0);
|
|
21238
|
+
const visit = (index) => {
|
|
21239
|
+
if (state[index] === 1)
|
|
21240
|
+
return true;
|
|
21241
|
+
if (state[index] === 2)
|
|
21242
|
+
return false;
|
|
21243
|
+
state[index] = 1;
|
|
21244
|
+
if (dependencies[index].some(visit))
|
|
21245
|
+
return true;
|
|
21246
|
+
state[index] = 2;
|
|
21247
|
+
return false;
|
|
21248
|
+
};
|
|
21249
|
+
return definitions.some((_definition, index) => visit(index));
|
|
21250
|
+
}
|
|
21251
|
+
function normalizeTrigger(value) {
|
|
21252
|
+
if (!isRecord$2(value) || !hasOnlyKeys(value, ['mode', 'sourcePaths']))
|
|
21253
|
+
return null;
|
|
21254
|
+
const sourcePaths = pointerArray(value['sourcePaths'], MAX_REACTIVE_DETERMINATION_BINDINGS);
|
|
21255
|
+
if (value['mode'] !== 'on-change' || !sourcePaths.length)
|
|
21256
|
+
return null;
|
|
21257
|
+
return { mode: 'on-change', sourcePaths };
|
|
21258
|
+
}
|
|
21259
|
+
function normalizeScope(value) {
|
|
21260
|
+
if (!isRecord$2(value) || !hasOnlyKeys(value, ['schemaOperationId', 'formMode']))
|
|
21261
|
+
return null;
|
|
21262
|
+
const schemaOperationId = stableId(value['schemaOperationId']);
|
|
21263
|
+
const formMode = value['formMode'];
|
|
21264
|
+
if (!schemaOperationId || (formMode !== 'create' && formMode !== 'edit'))
|
|
21265
|
+
return null;
|
|
21266
|
+
return { schemaOperationId, formMode };
|
|
21267
|
+
}
|
|
21268
|
+
function normalizeCapability(value) {
|
|
21269
|
+
if (!isRecord$2(value) ||
|
|
21270
|
+
!hasOnlyKeys(value, ['operationId', 'method', 'href', 'requestSchemaUrl', 'responseSchemaUrl'])) {
|
|
21271
|
+
return null;
|
|
21272
|
+
}
|
|
21273
|
+
const operationId = stableId(value['operationId']);
|
|
21274
|
+
const href = nonBlank(value['href']);
|
|
21275
|
+
const requestSchemaUrl = nonBlank(value['requestSchemaUrl']);
|
|
21276
|
+
const responseSchemaUrl = nonBlank(value['responseSchemaUrl']);
|
|
21277
|
+
if (!operationId ||
|
|
21278
|
+
value['method'] !== 'POST' ||
|
|
21279
|
+
!href ||
|
|
21280
|
+
!isSafeRelativeOperationPath(href) ||
|
|
21281
|
+
!requestSchemaUrl?.startsWith('/schemas/filtered?') ||
|
|
21282
|
+
!responseSchemaUrl?.startsWith('/schemas/filtered?')) {
|
|
21283
|
+
return null;
|
|
21284
|
+
}
|
|
21285
|
+
return { operationId, method: 'POST', href, requestSchemaUrl, responseSchemaUrl };
|
|
21286
|
+
}
|
|
21287
|
+
function normalizeInputs(value) {
|
|
21288
|
+
if (!Array.isArray(value) || value.length > MAX_REACTIVE_DETERMINATION_BINDINGS)
|
|
21289
|
+
return [];
|
|
21290
|
+
const result = [];
|
|
21291
|
+
const fieldPaths = new Set();
|
|
21292
|
+
const requestPaths = new Set();
|
|
21293
|
+
for (const candidate of value) {
|
|
21294
|
+
if (!isRecord$2(candidate) || !hasOnlyKeys(candidate, ['fieldPath', 'requestPath']))
|
|
21295
|
+
return [];
|
|
21296
|
+
const fieldPath = jsonPointer(candidate['fieldPath']);
|
|
21297
|
+
const requestPath = jsonPointer(candidate['requestPath']);
|
|
21298
|
+
if (!fieldPath ||
|
|
21299
|
+
!requestPath ||
|
|
21300
|
+
[...fieldPaths].some((current) => jsonPointersOverlap(current, fieldPath)) ||
|
|
21301
|
+
[...requestPaths].some((current) => jsonPointersOverlap(current, requestPath)))
|
|
21302
|
+
return [];
|
|
21303
|
+
fieldPaths.add(fieldPath);
|
|
21304
|
+
requestPaths.add(requestPath);
|
|
21305
|
+
result.push({ fieldPath, requestPath });
|
|
21306
|
+
}
|
|
21307
|
+
return result;
|
|
21308
|
+
}
|
|
21309
|
+
function normalizeOutputs(value) {
|
|
21310
|
+
if (!Array.isArray(value) || value.length > MAX_REACTIVE_DETERMINATION_BINDINGS)
|
|
21311
|
+
return [];
|
|
21312
|
+
const result = [];
|
|
21313
|
+
const responsePaths = new Set();
|
|
21314
|
+
const fieldPaths = new Set();
|
|
21315
|
+
for (const candidate of value) {
|
|
21316
|
+
if (!isRecord$2(candidate) || !hasOnlyKeys(candidate, ['responsePath', 'fieldPath']))
|
|
21317
|
+
return [];
|
|
21318
|
+
const responsePath = jsonPointer(candidate['responsePath']);
|
|
21319
|
+
const fieldPath = jsonPointer(candidate['fieldPath']);
|
|
21320
|
+
if (!responsePath ||
|
|
21321
|
+
!fieldPath ||
|
|
21322
|
+
[...responsePaths].some((current) => jsonPointersOverlap(current, responsePath)) ||
|
|
21323
|
+
[...fieldPaths].some((current) => jsonPointersOverlap(current, fieldPath)))
|
|
21324
|
+
return [];
|
|
21325
|
+
responsePaths.add(responsePath);
|
|
21326
|
+
fieldPaths.add(fieldPath);
|
|
21327
|
+
result.push({ responsePath, fieldPath });
|
|
21328
|
+
}
|
|
21329
|
+
return result;
|
|
21330
|
+
}
|
|
21331
|
+
function normalizeProvenance(value) {
|
|
21332
|
+
if (!isRecord$2(value) || !hasOnlyKeys(value, ['kind', 'source', 'version']))
|
|
21333
|
+
return null;
|
|
21334
|
+
const kind = value['kind'];
|
|
21335
|
+
const source = stableId(value['source']);
|
|
21336
|
+
const version = value['version'] === undefined ? undefined : nonBlank(value['version']);
|
|
21337
|
+
if ((kind !== 'platform' && kind !== 'host') || !source || (value['version'] !== undefined && !version)) {
|
|
21338
|
+
return null;
|
|
21339
|
+
}
|
|
21340
|
+
if (version && version.length > 64)
|
|
21341
|
+
return null;
|
|
21342
|
+
return { kind, source, ...(version ? { version } : {}) };
|
|
21343
|
+
}
|
|
21344
|
+
function pointerArray(value, maxItems) {
|
|
21345
|
+
if (!Array.isArray(value) || value.length > maxItems)
|
|
21346
|
+
return [];
|
|
21347
|
+
const pointers = value.map(jsonPointer);
|
|
21348
|
+
if (pointers.some((pointer) => !pointer))
|
|
21349
|
+
return [];
|
|
21350
|
+
const uniquePointers = new Set(pointers);
|
|
21351
|
+
return uniquePointers.size === pointers.length ? [...uniquePointers] : [];
|
|
21352
|
+
}
|
|
21353
|
+
function jsonPointer(value) {
|
|
21354
|
+
const pointer = nonBlank(value);
|
|
21355
|
+
return pointer && /^\/(?!\/)(?:[^/~]|~[01])+(?:\/(?:[^/~]|~[01])+)*$/.test(pointer)
|
|
21356
|
+
? pointer
|
|
21357
|
+
: null;
|
|
21358
|
+
}
|
|
21359
|
+
function jsonPointersOverlap(left, right) {
|
|
21360
|
+
const leftSegments = decodeJsonPointerSegments(left);
|
|
21361
|
+
const rightSegments = decodeJsonPointerSegments(right);
|
|
21362
|
+
const prefixLength = Math.min(leftSegments.length, rightSegments.length);
|
|
21363
|
+
for (let index = 0; index < prefixLength; index += 1) {
|
|
21364
|
+
if (leftSegments[index] !== rightSegments[index])
|
|
21365
|
+
return false;
|
|
21366
|
+
}
|
|
21367
|
+
return true;
|
|
21368
|
+
}
|
|
21369
|
+
function decodeJsonPointerSegments(pointer) {
|
|
21370
|
+
return pointer.slice(1).split('/').map((segment) => segment.replace(/~1/g, '/').replace(/~0/g, '~'));
|
|
21371
|
+
}
|
|
21372
|
+
function stableId(value) {
|
|
21373
|
+
const id = nonBlank(value);
|
|
21374
|
+
return id && /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(id) ? id : null;
|
|
21375
|
+
}
|
|
21376
|
+
function isSafeRelativeOperationPath(path) {
|
|
21377
|
+
if (!path.startsWith('/') || path.startsWith('//') || path.includes('\\') || path.includes('?') ||
|
|
21378
|
+
path.includes('#') || path.includes('{') || path.includes('}') ||
|
|
21379
|
+
/[\u0000-\u001f\u007f]/.test(path) || /%(?:2f|5c)/i.test(path))
|
|
21380
|
+
return false;
|
|
21381
|
+
try {
|
|
21382
|
+
return new URL(path, 'https://praxis.invalid').origin === 'https://praxis.invalid';
|
|
21383
|
+
}
|
|
21384
|
+
catch {
|
|
21385
|
+
return false;
|
|
21386
|
+
}
|
|
21387
|
+
}
|
|
21388
|
+
function nonBlank(value) {
|
|
21389
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
21390
|
+
}
|
|
21391
|
+
function isRecord$2(value) {
|
|
21392
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
21393
|
+
}
|
|
21394
|
+
function hasOnlyKeys(value, allowed) {
|
|
21395
|
+
const allowedSet = new Set(allowed);
|
|
21396
|
+
return Object.keys(value).every((key) => allowedSet.has(key));
|
|
21397
|
+
}
|
|
21398
|
+
|
|
20867
21399
|
/**
|
|
20868
21400
|
* Materializes a concrete FormConfig from a reusable editorial template.
|
|
20869
21401
|
*
|
|
@@ -23685,6 +24217,25 @@ function markerColorForEvent$1(eventType) {
|
|
|
23685
24217
|
return 'neutral';
|
|
23686
24218
|
}
|
|
23687
24219
|
|
|
24220
|
+
/** Narrows an unknown HTTP error body without relying on human-readable message parsing. */
|
|
24221
|
+
function isDomainRuleSnapshotProblemResponse(value) {
|
|
24222
|
+
if (!isRecord$1(value) || typeof value['code'] !== 'string' || typeof value['message'] !== 'string') {
|
|
24223
|
+
return false;
|
|
24224
|
+
}
|
|
24225
|
+
const blockers = value['blockers'];
|
|
24226
|
+
return Array.isArray(blockers) && blockers.every(isDomainRuleSnapshotBlocker);
|
|
24227
|
+
}
|
|
24228
|
+
function isDomainRuleSnapshotBlocker(value) {
|
|
24229
|
+
return isRecord$1(value)
|
|
24230
|
+
&& typeof value['code'] === 'string'
|
|
24231
|
+
&& typeof value['stage'] === 'string'
|
|
24232
|
+
&& (value['definitionId'] === null || typeof value['definitionId'] === 'string')
|
|
24233
|
+
&& typeof value['message'] === 'string';
|
|
24234
|
+
}
|
|
24235
|
+
function isRecord$1(value) {
|
|
24236
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24237
|
+
}
|
|
24238
|
+
|
|
23688
24239
|
const DEFAULT_TITLE = 'Governed decision timeline';
|
|
23689
24240
|
const DEFAULT_EMPTY_TEXT = 'No safe timeline events published for this decision.';
|
|
23690
24241
|
function domainRuleTimelineToRichContentDocument(timeline, options = {}) {
|
|
@@ -41724,7 +42275,7 @@ class PraxisRelatedResourceOutletComponent {
|
|
|
41724
42275
|
const discovery = this.injector.get(ResourceDiscoveryService);
|
|
41725
42276
|
const catalog$ = discoverySource
|
|
41726
42277
|
? discovery.getSurfaces(discoverySource, options)
|
|
41727
|
-
: discovery.
|
|
42278
|
+
: discovery.getSurfaces({ surfaces: { href: href } }, options);
|
|
41728
42279
|
this.discoverySubscription = catalog$.subscribe({
|
|
41729
42280
|
next: (response) => {
|
|
41730
42281
|
if (this.discoveryRequestKey !== requestKey) {
|
|
@@ -42109,7 +42660,7 @@ const PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA = {
|
|
|
42109
42660
|
{ name: 'icon', type: 'string | null', description: 'Ícone opcional da superfície relacionada.' },
|
|
42110
42661
|
{ name: 'queryContext', type: 'RelatedResourceQueryContext | null', description: 'QueryContext base mesclado com o filtro canônico da relação filha.' },
|
|
42111
42662
|
{ name: 'tableId', type: 'string | null', description: 'Identidade estável da tabela filha para persistência, observabilidade e testes.' },
|
|
42112
|
-
{ name: 'tableConfig', type: 'Record<string, unknown> | null', description: '
|
|
42663
|
+
{ name: 'tableConfig', type: 'Record<string, unknown> | null', description: 'Configuração parcial mesclada ao preset canônico. Ações CRUD com ids create, edit e delete aceitam somente overrides visuais (label, tooltip, icon, color, appearance, type, position e order); semântica, alvo, formulários, confirmação e disponibilidade permanecem governados pelo materializador.' },
|
|
42113
42664
|
{ 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.' },
|
|
42114
42665
|
{ name: 'enableCustomization', type: 'boolean', description: 'Opt-in explicito para authoring governado da tabela filha.', default: false },
|
|
42115
42666
|
{ name: 'authoringCapability', type: 'string | null', description: 'Capability publica do EnterpriseRuntimeContext exigida quando o authoring da tabela filha estiver habilitado.' },
|
|
@@ -42185,7 +42736,7 @@ class EmptyStateCardComponent {
|
|
|
42185
42736
|
</div>
|
|
42186
42737
|
<div class="actions">
|
|
42187
42738
|
@if (primaryAction) {
|
|
42188
|
-
<button mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42739
|
+
<button type="button" mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42189
42740
|
@if (primaryAction.icon) {
|
|
42190
42741
|
<mat-icon [fontIcon]="primaryAction.icon"></mat-icon>
|
|
42191
42742
|
}
|
|
@@ -42193,7 +42744,7 @@ class EmptyStateCardComponent {
|
|
|
42193
42744
|
</button>
|
|
42194
42745
|
}
|
|
42195
42746
|
@for (a of secondaryActions; track a) {
|
|
42196
|
-
<button mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42747
|
+
<button type="button" mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42197
42748
|
@if (a.icon) {
|
|
42198
42749
|
<mat-icon [fontIcon]="a.icon"></mat-icon>
|
|
42199
42750
|
}
|
|
@@ -42203,7 +42754,7 @@ class EmptyStateCardComponent {
|
|
|
42203
42754
|
</div>
|
|
42204
42755
|
</mat-card-content>
|
|
42205
42756
|
</mat-card>
|
|
42206
|
-
`, isInline: true, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height,
|
|
42757
|
+
`, isInline: true, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{width:fit-content;max-width:100%;height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));padding-inline:var(--pdx-empty-state-action-padding-inline, var(--praxis-action-control-padding-inline, 12px));border-radius:var(--pdx-empty-state-action-radius, var(--praxis-action-control-radius, 8px));gap:var(--pdx-empty-state-action-gap, var(--praxis-action-control-gap, 8px));font-size:var(--pdx-empty-state-action-font-size, var(--praxis-action-control-font-size, .875rem));font-weight:var(--pdx-empty-state-action-font-weight, var(--praxis-action-control-font-weight, 500));line-height:var(--pdx-empty-state-action-line-height, var(--praxis-action-control-line-height, 1.25rem));white-space:nowrap}.actions .mat-mdc-button-base mat-icon{width:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));margin:0;font-size:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));line-height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px))}.actions .mat-mdc-button-base:focus-visible{outline:2px solid var(--pdx-empty-state-action-focus-ring, var(--praxis-action-control-focus-ring, var(--md-sys-color-primary)));outline-offset:2px}.actions .mat-mdc-button-base:disabled{opacity:var(--pdx-empty-state-action-disabled-opacity, var(--praxis-action-control-disabled-opacity, .62))}.align-center .actions{justify-content:var(--pdx-empty-state-actions-justify, center)}.density-compact .content{gap:var(--pdx-empty-state-compact-gap, 8px)}.density-compact .actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px))}.density-compact .icon{font-size:var(--pdx-empty-state-compact-icon-size, 24px);width:var(--pdx-empty-state-compact-icon-box-size, 24px);height:var(--pdx-empty-state-compact-icon-box-size, 24px)}.density-compact.icon-circle .icon,.density-compact.icon-soft .icon{width:var(--pdx-empty-state-compact-icon-container-size, 36px);height:var(--pdx-empty-state-compact-icon-container-size, 36px);font-size:var(--pdx-empty-state-compact-icon-container-icon-size, 20px)}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
42207
42758
|
}
|
|
42208
42759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EmptyStateCardComponent, decorators: [{
|
|
42209
42760
|
type: Component,
|
|
@@ -42236,7 +42787,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
42236
42787
|
</div>
|
|
42237
42788
|
<div class="actions">
|
|
42238
42789
|
@if (primaryAction) {
|
|
42239
|
-
<button mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42790
|
+
<button type="button" mat-flat-button color="primary" (click)="primaryAction.action()">
|
|
42240
42791
|
@if (primaryAction.icon) {
|
|
42241
42792
|
<mat-icon [fontIcon]="primaryAction.icon"></mat-icon>
|
|
42242
42793
|
}
|
|
@@ -42244,7 +42795,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
42244
42795
|
</button>
|
|
42245
42796
|
}
|
|
42246
42797
|
@for (a of secondaryActions; track a) {
|
|
42247
|
-
<button mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42798
|
+
<button type="button" mat-stroked-button [color]="a.color" (click)="a.action()">
|
|
42248
42799
|
@if (a.icon) {
|
|
42249
42800
|
<mat-icon [fontIcon]="a.icon"></mat-icon>
|
|
42250
42801
|
}
|
|
@@ -42254,7 +42805,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
42254
42805
|
</div>
|
|
42255
42806
|
</mat-card-content>
|
|
42256
42807
|
</mat-card>
|
|
42257
|
-
`, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height,
|
|
42808
|
+
`, styles: [".empty-card{display:block;margin:var(--pdx-empty-state-margin, 12px);border-color:var(--pdx-empty-state-border-color, var(--md-sys-color-outline-variant));border-radius:var(--pdx-empty-state-radius, 8px);background:var(--pdx-empty-state-bg, var(--md-sys-color-surface));color:var(--pdx-empty-state-fg, var(--md-sys-color-on-surface));--empty-icon-color: var(--pdx-empty-state-icon-color, var(--md-sys-color-on-surface-variant))}.empty-card.empty-inline,.empty-card.variant-inline{margin:var(--pdx-empty-state-inline-margin, 8px 0)}.empty-card.variant-panel{margin:var(--pdx-empty-state-panel-margin, 0)}.empty-card.variant-transparent{margin:var(--pdx-empty-state-transparent-margin, 0);border-color:transparent;background:transparent;box-shadow:none}.content{display:flex;align-items:center;gap:var(--pdx-empty-state-gap, 12px)}.align-center .content{flex-direction:column;justify-content:center;text-align:center}.icon{display:inline-grid;place-items:center;flex:0 0 auto;font-size:var(--pdx-empty-state-icon-size, 32px);width:var(--pdx-empty-state-icon-box-size, 32px);height:var(--pdx-empty-state-icon-box-size, 32px);color:var(--empty-icon-color)}.icon-circle .icon,.icon-soft .icon{width:var(--pdx-empty-state-icon-container-size, 44px);height:var(--pdx-empty-state-icon-container-size, 44px);border-radius:var(--pdx-empty-state-icon-container-radius, 999px);font-size:var(--pdx-empty-state-icon-container-icon-size, 22px)}.icon-circle .icon{border:1px solid var(--pdx-empty-state-icon-container-border-color, color-mix(in srgb, var(--empty-icon-color) 24%, transparent));background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.icon-soft .icon{background:var(--pdx-empty-state-icon-container-bg, color-mix(in srgb, var(--empty-icon-color) 10%, transparent))}.texts{display:grid;gap:var(--pdx-empty-state-text-gap, 4px)}.align-center .texts{justify-items:center}.title{margin:0;font-family:var(--pdx-empty-state-title-font-family, var(--md-sys-typescale-title-small-font-family, inherit));font-size:var(--pdx-empty-state-title-font-size, 16px);font-weight:var(--pdx-empty-state-title-font-weight, 600);line-height:var(--pdx-empty-state-title-line-height, 1.3);color:var(--pdx-empty-state-title-color, var(--md-sys-color-on-surface))}.desc{margin:0;max-width:var(--pdx-empty-state-description-max-width, none);font-family:var(--pdx-empty-state-description-font-family, var(--md-sys-typescale-body-medium-font-family, inherit));font-size:var(--pdx-empty-state-description-font-size, inherit);line-height:var(--pdx-empty-state-description-line-height, 1.4);color:var(--pdx-empty-state-description-color, var(--md-sys-color-on-surface-variant))}.actions{display:flex;justify-content:var(--pdx-empty-state-actions-justify, flex-start);gap:var(--pdx-empty-state-actions-gap, 8px);margin-top:var(--pdx-empty-state-actions-margin-top, 12px);flex-wrap:wrap}.actions .mat-mdc-button-base{width:fit-content;max-width:100%;height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-height, 40px));padding-inline:var(--pdx-empty-state-action-padding-inline, var(--praxis-action-control-padding-inline, 12px));border-radius:var(--pdx-empty-state-action-radius, var(--praxis-action-control-radius, 8px));gap:var(--pdx-empty-state-action-gap, var(--praxis-action-control-gap, 8px));font-size:var(--pdx-empty-state-action-font-size, var(--praxis-action-control-font-size, .875rem));font-weight:var(--pdx-empty-state-action-font-weight, var(--praxis-action-control-font-weight, 500));line-height:var(--pdx-empty-state-action-line-height, var(--praxis-action-control-line-height, 1.25rem));white-space:nowrap}.actions .mat-mdc-button-base mat-icon{width:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));margin:0;font-size:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px));line-height:var(--pdx-empty-state-action-icon-size, var(--praxis-action-control-icon-size, 18px))}.actions .mat-mdc-button-base:focus-visible{outline:2px solid var(--pdx-empty-state-action-focus-ring, var(--praxis-action-control-focus-ring, var(--md-sys-color-primary)));outline-offset:2px}.actions .mat-mdc-button-base:disabled{opacity:var(--pdx-empty-state-action-disabled-opacity, var(--praxis-action-control-disabled-opacity, .62))}.align-center .actions{justify-content:var(--pdx-empty-state-actions-justify, center)}.density-compact .content{gap:var(--pdx-empty-state-compact-gap, 8px)}.density-compact .actions .mat-mdc-button-base{height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px));min-height:var(--pdx-empty-state-action-height, var(--praxis-action-control-compact-height, 36px))}.density-compact .icon{font-size:var(--pdx-empty-state-compact-icon-size, 24px);width:var(--pdx-empty-state-compact-icon-box-size, 24px);height:var(--pdx-empty-state-compact-icon-box-size, 24px)}.density-compact.icon-circle .icon,.density-compact.icon-soft .icon{width:var(--pdx-empty-state-compact-icon-container-size, 36px);height:var(--pdx-empty-state-compact-icon-container-size, 36px);font-size:var(--pdx-empty-state-compact-icon-container-icon-size, 20px)}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"] }]
|
|
42258
42809
|
}], propDecorators: { icon: [{
|
|
42259
42810
|
type: Input
|
|
42260
42811
|
}], title: [{
|
|
@@ -43636,4 +44187,4 @@ function provideHookWhitelist(allowed) {
|
|
|
43636
44187
|
* Generated bundle index. Do not edit.
|
|
43637
44188
|
*/
|
|
43638
44189
|
|
|
43639
|
-
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_COLLECTION_SEARCH_DEFAULTS, PRAXIS_COLLECTION_SEARCH_VARS, 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_DRAWER_CONTENT_DATA, SURFACE_DRAWER_REF, SURFACE_NAVIGATION_I18N_CONFIG, SURFACE_NAVIGATION_I18N_NAMESPACE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, 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, buildPraxisCollectionSearchCss, 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, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, 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, normalizeSurfaceOperationContext, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, projectGroupedCommandPartialRows, 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, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, 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, translateSurfaceNavigationRejected, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
44190
|
+
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_ACTION_CONTROL_DEFAULTS, PRAXIS_ACTION_CONTROL_VARS, PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, PRAXIS_COLLECTION_EXPORT_PROVIDER, PRAXIS_COLLECTION_SEARCH_DEFAULTS, PRAXIS_COLLECTION_SEARCH_VARS, 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_DRAWER_CONTENT_DATA, SURFACE_DRAWER_REF, SURFACE_NAVIGATION_I18N_CONFIG, SURFACE_NAVIGATION_I18N_NAMESPACE, SURFACE_OPEN_I18N_CONFIG, SURFACE_OPEN_I18N_NAMESPACE, SURFACE_OPEN_PRESETS, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, 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, buildPraxisActionControlCss, buildPraxisCollectionSearchCss, 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, isDomainRuleSnapshotProblemResponse, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, 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, normalizeReactiveDeterminations, normalizeResourceAvailabilityReasonCode, normalizeResourceIdentityContract, normalizeStart, normalizeSurfaceOperationContext, normalizeUnknownError, normalizeWidgetEventPath, notifySuccessHook, parseJsonResponseOrEmpty, praxisLoadingInterceptorFn, prefillFromContextHook, projectGroupedCommandPartialRows, 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, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, 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, translateSurfaceNavigationRejected, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|