@praxisui/core 10.0.0-rc.12 → 10.0.0-rc.13
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.
|
@@ -3551,6 +3551,20 @@ class SchemaNormalizationKernel {
|
|
|
3551
3551
|
}
|
|
3552
3552
|
fields.push(field);
|
|
3553
3553
|
}
|
|
3554
|
+
if (fields.length === 0 &&
|
|
3555
|
+
properties['parameters'] &&
|
|
3556
|
+
typeof properties['parameters'] === 'object' &&
|
|
3557
|
+
!Array.isArray(properties['parameters'])) {
|
|
3558
|
+
const parametersProp = properties['parameters'];
|
|
3559
|
+
const resolvedParametersSchema = this.resolveSchemaRef(parametersProp.$ref, rootSchema) ?? parametersProp;
|
|
3560
|
+
if (resolvedParametersSchema &&
|
|
3561
|
+
typeof resolvedParametersSchema === 'object' &&
|
|
3562
|
+
resolvedParametersSchema !== schema &&
|
|
3563
|
+
resolvedParametersSchema.properties &&
|
|
3564
|
+
typeof resolvedParametersSchema.properties === 'object') {
|
|
3565
|
+
return this.normalizeObjectSchema(resolvedParametersSchema, rootSchema);
|
|
3566
|
+
}
|
|
3567
|
+
}
|
|
3554
3568
|
// Order by the optional 'order' property when present
|
|
3555
3569
|
fields.sort((a, b) => {
|
|
3556
3570
|
const orderA = a.order ?? Number.MAX_SAFE_INTEGER;
|
|
@@ -10966,15 +10980,26 @@ const DEFAULT_JSON_LOGIC_OPERATORS = [
|
|
|
10966
10980
|
operator: 'round',
|
|
10967
10981
|
namespace: 'praxis',
|
|
10968
10982
|
minArgs: 1,
|
|
10969
|
-
maxArgs:
|
|
10983
|
+
maxArgs: 2,
|
|
10970
10984
|
returnType: 'number',
|
|
10971
10985
|
purity: 'pure',
|
|
10972
10986
|
evaluate: (args, _context, helpers) => {
|
|
10973
|
-
const [value] = helpers.requireArgs('round', args, 1,
|
|
10987
|
+
const [value, precisionArg] = helpers.requireArgs('round', args, 1, 2);
|
|
10974
10988
|
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
10975
10989
|
throw new PraxisJsonLogicError('RULE_ARGUMENT_TYPE_INVALID', '`round` requires a finite numeric argument.');
|
|
10976
10990
|
}
|
|
10977
|
-
|
|
10991
|
+
if (precisionArg === undefined || precisionArg === null) {
|
|
10992
|
+
return Math.round(value);
|
|
10993
|
+
}
|
|
10994
|
+
if (typeof precisionArg !== 'number' || !Number.isFinite(precisionArg)) {
|
|
10995
|
+
throw new PraxisJsonLogicError('RULE_ARGUMENT_TYPE_INVALID', '`round` precision must be a finite numeric argument.');
|
|
10996
|
+
}
|
|
10997
|
+
const decimals = Math.max(0, Math.min(10, Math.trunc(precisionArg)));
|
|
10998
|
+
if (decimals === 0) {
|
|
10999
|
+
return Math.round(value);
|
|
11000
|
+
}
|
|
11001
|
+
const factor = Math.pow(10, decimals);
|
|
11002
|
+
return Math.round((value + Number.EPSILON) * factor) / factor;
|
|
10978
11003
|
},
|
|
10979
11004
|
},
|
|
10980
11005
|
{
|
|
@@ -11485,7 +11510,7 @@ function hasPath(target, path) {
|
|
|
11485
11510
|
return true;
|
|
11486
11511
|
}
|
|
11487
11512
|
|
|
11488
|
-
const DEFAULT_JSON_LOGIC$
|
|
11513
|
+
const DEFAULT_JSON_LOGIC$4 = new PraxisJsonLogicService(null);
|
|
11489
11514
|
const FORM_RULE_OPTIONS = {
|
|
11490
11515
|
availableRoots: ['form'],
|
|
11491
11516
|
defaultRoot: 'form',
|
|
@@ -11673,7 +11698,7 @@ function matchesConditionalValidationRule(jsonLogic, condition, model) {
|
|
|
11673
11698
|
throw error;
|
|
11674
11699
|
}
|
|
11675
11700
|
}
|
|
11676
|
-
function composeConditionalValidators(rules, jsonLogic = DEFAULT_JSON_LOGIC$
|
|
11701
|
+
function composeConditionalValidators(rules, jsonLogic = DEFAULT_JSON_LOGIC$4) {
|
|
11677
11702
|
// Build per-rule validators once
|
|
11678
11703
|
const built = rules.map((r) => buildValidatorsFromValidatorOptions(r.validators, jsonLogic));
|
|
11679
11704
|
const sync = (control) => {
|
|
@@ -11918,7 +11943,7 @@ function buildAngularValidators(field) {
|
|
|
11918
11943
|
av.push(uniqueAsyncValidator(field.uniqueValidator, field.uniqueMessage));
|
|
11919
11944
|
// Conditional (canonical declarative array)
|
|
11920
11945
|
if (Array.isArray(field.conditionalValidation)) {
|
|
11921
|
-
const composed = composeConditionalValidators(field.conditionalValidation, DEFAULT_JSON_LOGIC$
|
|
11946
|
+
const composed = composeConditionalValidators(field.conditionalValidation, DEFAULT_JSON_LOGIC$4);
|
|
11922
11947
|
if (composed.sync)
|
|
11923
11948
|
v.push(composed.sync);
|
|
11924
11949
|
if (composed.async)
|
|
@@ -11936,7 +11961,7 @@ function isBooleanRequiredField(field) {
|
|
|
11936
11961
|
const type = String(field.type ?? field.dataType ?? '').toLowerCase();
|
|
11937
11962
|
return type === 'boolean' || controlType === 'checkbox' || controlType === 'toggle';
|
|
11938
11963
|
}
|
|
11939
|
-
function buildValidatorsFromValidatorOptions(opts = {}, jsonLogic = DEFAULT_JSON_LOGIC$
|
|
11964
|
+
function buildValidatorsFromValidatorOptions(opts = {}, jsonLogic = DEFAULT_JSON_LOGIC$4) {
|
|
11940
11965
|
const v = [];
|
|
11941
11966
|
let av = [];
|
|
11942
11967
|
if (opts.required)
|
|
@@ -15591,6 +15616,70 @@ class PraxisBulkClientService {
|
|
|
15591
15616
|
})
|
|
15592
15617
|
.pipe(map((res) => this.unwrap(res)));
|
|
15593
15618
|
}
|
|
15619
|
+
/**
|
|
15620
|
+
* Consulta a pagina de resultados por item de uma proposta (cursor-based pagination).
|
|
15621
|
+
*/
|
|
15622
|
+
getProposalResults(proposalResultsOp, proposalId, size = 100, after, options) {
|
|
15623
|
+
const path = this.interpolatePath(this.extractOpPath(proposalResultsOp), { proposalId });
|
|
15624
|
+
const baseUrl = this.resolveUrl(path, options);
|
|
15625
|
+
const sep = baseUrl.includes('?') ? '&' : '?';
|
|
15626
|
+
const cursorParam = after ? `&after=${encodeURIComponent(after)}` : '';
|
|
15627
|
+
const url = `${baseUrl}${sep}size=${encodeURIComponent(String(size))}${cursorParam}`;
|
|
15628
|
+
const headers = this.buildHeaders(options);
|
|
15629
|
+
const method = this.extractOpMethod(proposalResultsOp, 'GET');
|
|
15630
|
+
return this.http
|
|
15631
|
+
.request(method, url, { headers })
|
|
15632
|
+
.pipe(map((res) => {
|
|
15633
|
+
const raw = this.unwrap(res);
|
|
15634
|
+
const items = Array.isArray(raw?.items)
|
|
15635
|
+
? raw.items
|
|
15636
|
+
: Array.isArray(raw?.content)
|
|
15637
|
+
? raw.content
|
|
15638
|
+
: [];
|
|
15639
|
+
const nextCursor = raw?.nextCursor ?? raw?.next ?? null;
|
|
15640
|
+
return {
|
|
15641
|
+
...raw,
|
|
15642
|
+
items,
|
|
15643
|
+
nextCursor,
|
|
15644
|
+
hasMore: Boolean(raw?.hasMore ?? nextCursor),
|
|
15645
|
+
};
|
|
15646
|
+
}));
|
|
15647
|
+
}
|
|
15648
|
+
/**
|
|
15649
|
+
* Consulta a pagina de resultados por item de uma execucao (cursor-based pagination).
|
|
15650
|
+
*/
|
|
15651
|
+
getExecutionResults(resultsOp, executionId, size = 100, after, options) {
|
|
15652
|
+
const path = this.interpolatePath(this.extractOpPath(resultsOp), { executionId });
|
|
15653
|
+
const baseUrl = this.resolveUrl(path, options);
|
|
15654
|
+
const sep = baseUrl.includes('?') ? '&' : '?';
|
|
15655
|
+
const cursorParam = after ? `&after=${encodeURIComponent(after)}` : '';
|
|
15656
|
+
const url = `${baseUrl}${sep}size=${encodeURIComponent(String(size))}${cursorParam}`;
|
|
15657
|
+
const headers = this.buildHeaders(options);
|
|
15658
|
+
const method = this.extractOpMethod(resultsOp, 'GET');
|
|
15659
|
+
return this.http
|
|
15660
|
+
.request(method, url, { headers })
|
|
15661
|
+
.pipe(map((res) => {
|
|
15662
|
+
const raw = this.unwrap(res);
|
|
15663
|
+
const items = Array.isArray(raw?.items)
|
|
15664
|
+
? raw.items
|
|
15665
|
+
: Array.isArray(raw?.content)
|
|
15666
|
+
? raw.content
|
|
15667
|
+
: [];
|
|
15668
|
+
const nextCursor = raw?.nextCursor ?? raw?.next ?? null;
|
|
15669
|
+
return {
|
|
15670
|
+
...raw,
|
|
15671
|
+
items,
|
|
15672
|
+
nextCursor,
|
|
15673
|
+
hasMore: Boolean(raw?.hasMore ?? nextCursor),
|
|
15674
|
+
};
|
|
15675
|
+
}));
|
|
15676
|
+
}
|
|
15677
|
+
/**
|
|
15678
|
+
* Busca o schema canonico referenciado por uma operacao ou contrato de campos editaveis.
|
|
15679
|
+
*/
|
|
15680
|
+
fetchSchema(schemaUrl, options) {
|
|
15681
|
+
return this.discovery.getSchemaByUrl(schemaUrl, options);
|
|
15682
|
+
}
|
|
15594
15683
|
/**
|
|
15595
15684
|
* Solicita cancelamento de uma execucao em andamento.
|
|
15596
15685
|
*/
|
|
@@ -15629,20 +15718,32 @@ class PraxisBulkClientService {
|
|
|
15629
15718
|
return this.discovery.resolveHref(path, options);
|
|
15630
15719
|
}
|
|
15631
15720
|
interpolatePath(path, params) {
|
|
15721
|
+
const hadProposalPlaceholder = path.includes('{proposalId}');
|
|
15722
|
+
const hadExecutionPlaceholder = path.includes('{executionId}');
|
|
15632
15723
|
let result = path;
|
|
15633
15724
|
for (const [key, val] of Object.entries(params)) {
|
|
15634
15725
|
const placeholder = `{${key}}`;
|
|
15635
15726
|
if (result.includes(placeholder)) {
|
|
15636
|
-
result = result.
|
|
15727
|
+
result = result.split(placeholder).join(encodeURIComponent(String(val)));
|
|
15637
15728
|
}
|
|
15638
15729
|
}
|
|
15639
15730
|
const [basePath, query] = result.split('?');
|
|
15640
15731
|
let updatedBase = basePath;
|
|
15641
|
-
|
|
15642
|
-
|
|
15732
|
+
const hasPathSegment = (targetPath, encodedSegment) => {
|
|
15733
|
+
const escaped = encodedSegment.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
15734
|
+
return new RegExp(`(^|/)${escaped}(/|$)`).test(targetPath);
|
|
15735
|
+
};
|
|
15736
|
+
if (params['proposalId'] != null && !hadProposalPlaceholder) {
|
|
15737
|
+
const encodedProposalId = encodeURIComponent(String(params['proposalId']));
|
|
15738
|
+
if (!hasPathSegment(updatedBase, encodedProposalId)) {
|
|
15739
|
+
updatedBase = `${updatedBase.replace(/\/+$/, '')}/${encodedProposalId}`;
|
|
15740
|
+
}
|
|
15643
15741
|
}
|
|
15644
|
-
else if (params['executionId']
|
|
15645
|
-
|
|
15742
|
+
else if (params['executionId'] != null && !hadExecutionPlaceholder) {
|
|
15743
|
+
const encodedExecutionId = encodeURIComponent(String(params['executionId']));
|
|
15744
|
+
if (!hasPathSegment(updatedBase, encodedExecutionId)) {
|
|
15745
|
+
updatedBase = `${updatedBase.replace(/\/+$/, '')}/${encodedExecutionId}`;
|
|
15746
|
+
}
|
|
15646
15747
|
}
|
|
15647
15748
|
return query != null ? `${updatedBase}?${query}` : updatedBase;
|
|
15648
15749
|
}
|
|
@@ -39358,7 +39459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39358
39459
|
args: [{ providedIn: 'root' }]
|
|
39359
39460
|
}] });
|
|
39360
39461
|
|
|
39361
|
-
const DEFAULT_JSON_LOGIC$
|
|
39462
|
+
const DEFAULT_JSON_LOGIC$3 = new PraxisJsonLogicService(null);
|
|
39362
39463
|
class WidgetPageStateRuntimeService {
|
|
39363
39464
|
jsonLogic;
|
|
39364
39465
|
connections = new ConnectionManagerService();
|
|
@@ -39372,7 +39473,7 @@ class WidgetPageStateRuntimeService {
|
|
|
39372
39473
|
defaultRoot: 'state',
|
|
39373
39474
|
allowImplicitRoot: true,
|
|
39374
39475
|
};
|
|
39375
|
-
constructor(jsonLogic = DEFAULT_JSON_LOGIC$
|
|
39476
|
+
constructor(jsonLogic = DEFAULT_JSON_LOGIC$3) {
|
|
39376
39477
|
this.jsonLogic = jsonLogic;
|
|
39377
39478
|
}
|
|
39378
39479
|
normalizeState(state) {
|
|
@@ -39870,6 +39971,282 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
39870
39971
|
args: [{ providedIn: 'root' }]
|
|
39871
39972
|
}], ctorParameters: () => [{ type: PraxisJsonLogicService }] });
|
|
39872
39973
|
|
|
39974
|
+
const DEFAULT_JSON_LOGIC$2 = new PraxisJsonLogicService(null);
|
|
39975
|
+
class WidgetPageDataSourceRuntimeService {
|
|
39976
|
+
http = inject(HttpClient, { optional: true });
|
|
39977
|
+
apiUrlConfig = inject(API_URL, { optional: true });
|
|
39978
|
+
jsonLogic = inject(PraxisJsonLogicService, { optional: true }) || DEFAULT_JSON_LOGIC$2;
|
|
39979
|
+
connections = inject(ConnectionManagerService);
|
|
39980
|
+
/**
|
|
39981
|
+
* Constrói a URL canônica completa para o resourcePath declarado no dataSource.
|
|
39982
|
+
*/
|
|
39983
|
+
resolveUrl(resourcePath) {
|
|
39984
|
+
const trimmed = (resourcePath || '').trim();
|
|
39985
|
+
if (!trimmed)
|
|
39986
|
+
return '';
|
|
39987
|
+
if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
|
|
39988
|
+
return trimmed;
|
|
39989
|
+
}
|
|
39990
|
+
let base = '';
|
|
39991
|
+
if (this.apiUrlConfig) {
|
|
39992
|
+
const entry = this.apiUrlConfig['default'] || Object.values(this.apiUrlConfig)[0];
|
|
39993
|
+
if (entry) {
|
|
39994
|
+
base = buildApiUrl(entry);
|
|
39995
|
+
}
|
|
39996
|
+
}
|
|
39997
|
+
if (!base) {
|
|
39998
|
+
return trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
|
|
39999
|
+
}
|
|
40000
|
+
const cleanBase = base.replace(/\/+$/, '');
|
|
40001
|
+
const cleanPath = trimmed.replace(/^\/+/, '');
|
|
40002
|
+
return `${cleanBase}/${cleanPath}`;
|
|
40003
|
+
}
|
|
40004
|
+
/**
|
|
40005
|
+
* Executa uma única consulta para um DataSource e retorna o resultado transformado.
|
|
40006
|
+
*/
|
|
40007
|
+
fetchDataSource(dataSource) {
|
|
40008
|
+
if (!this.http) {
|
|
40009
|
+
return of(dataSource.fallbackValue ?? null);
|
|
40010
|
+
}
|
|
40011
|
+
const url = this.resolveUrl(dataSource.resourcePath);
|
|
40012
|
+
if (!url) {
|
|
40013
|
+
return of(dataSource.fallbackValue ?? null);
|
|
40014
|
+
}
|
|
40015
|
+
return this.executeRawRequest(dataSource, url).pipe(catchError((error) => {
|
|
40016
|
+
if (dataSource.errorPolicy === 'fallback' && dataSource.fallbackValue !== undefined) {
|
|
40017
|
+
return of(this.clone(dataSource.fallbackValue));
|
|
40018
|
+
}
|
|
40019
|
+
if (dataSource.errorPolicy === 'silent') {
|
|
40020
|
+
return EMPTY;
|
|
40021
|
+
}
|
|
40022
|
+
if (dataSource.errorPolicy === 'propagate') {
|
|
40023
|
+
return throwError(() => error);
|
|
40024
|
+
}
|
|
40025
|
+
if (dataSource.fallbackValue !== undefined) {
|
|
40026
|
+
return of(this.clone(dataSource.fallbackValue));
|
|
40027
|
+
}
|
|
40028
|
+
return throwError(() => error);
|
|
40029
|
+
}));
|
|
40030
|
+
}
|
|
40031
|
+
executeRawRequest(dataSource, resolvedUrl) {
|
|
40032
|
+
if (!this.http) {
|
|
40033
|
+
return of(dataSource.fallbackValue ?? null);
|
|
40034
|
+
}
|
|
40035
|
+
const url = resolvedUrl ?? this.resolveUrl(dataSource.resourcePath);
|
|
40036
|
+
if (!url) {
|
|
40037
|
+
return of(dataSource.fallbackValue ?? null);
|
|
40038
|
+
}
|
|
40039
|
+
const method = dataSource.method ??
|
|
40040
|
+
(dataSource.kind === 'stats-query' || dataSource.resourcePath.includes('/stats/')
|
|
40041
|
+
? 'POST'
|
|
40042
|
+
: 'GET');
|
|
40043
|
+
let request$;
|
|
40044
|
+
if (method === 'POST') {
|
|
40045
|
+
request$ = this.http.post(url, dataSource.query || {});
|
|
40046
|
+
}
|
|
40047
|
+
else {
|
|
40048
|
+
let params = new HttpParams();
|
|
40049
|
+
if (dataSource.query && typeof dataSource.query === 'object') {
|
|
40050
|
+
for (const [key, val] of Object.entries(dataSource.query)) {
|
|
40051
|
+
if (Array.isArray(val)) {
|
|
40052
|
+
for (const item of val) {
|
|
40053
|
+
if (item !== undefined && item !== null) {
|
|
40054
|
+
params = params.append(key, String(item));
|
|
40055
|
+
}
|
|
40056
|
+
}
|
|
40057
|
+
}
|
|
40058
|
+
else if (val !== undefined && val !== null) {
|
|
40059
|
+
params = params.set(key, String(val));
|
|
40060
|
+
}
|
|
40061
|
+
}
|
|
40062
|
+
}
|
|
40063
|
+
request$ = this.http.get(url, { params });
|
|
40064
|
+
}
|
|
40065
|
+
return request$.pipe(map((res) => this.transformPayload(res, dataSource)));
|
|
40066
|
+
}
|
|
40067
|
+
/**
|
|
40068
|
+
* Inicia a orquestração reativa de todos os DataSources declarados em uma página dinâmica.
|
|
40069
|
+
* Retorna uma função de teardown que cancela todas as requisições em voo e timers de polling.
|
|
40070
|
+
*/
|
|
40071
|
+
startDataSources(dataSources, onUpdate, onDiagnostic) {
|
|
40072
|
+
if (!dataSources || !dataSources.length) {
|
|
40073
|
+
return () => { };
|
|
40074
|
+
}
|
|
40075
|
+
const destroy$ = new Subject();
|
|
40076
|
+
for (const ds of dataSources) {
|
|
40077
|
+
if (ds.autoFetch === false) {
|
|
40078
|
+
continue;
|
|
40079
|
+
}
|
|
40080
|
+
const targetPath = ds.targetStatePath || ds.id;
|
|
40081
|
+
const intervalMs = ds.refreshIntervalMs ?? 0;
|
|
40082
|
+
let hasSucceededOnce = false;
|
|
40083
|
+
onDiagnostic?.({
|
|
40084
|
+
dataSourceId: ds.id,
|
|
40085
|
+
status: 'loading',
|
|
40086
|
+
});
|
|
40087
|
+
const runSingleFetch$ = () => this.executeRawRequest(ds).pipe(map((value) => {
|
|
40088
|
+
hasSucceededOnce = true;
|
|
40089
|
+
const now = new Date().toISOString();
|
|
40090
|
+
onDiagnostic?.({
|
|
40091
|
+
dataSourceId: ds.id,
|
|
40092
|
+
status: 'success',
|
|
40093
|
+
lastUpdated: now,
|
|
40094
|
+
});
|
|
40095
|
+
onUpdate({
|
|
40096
|
+
dataSourceId: ds.id,
|
|
40097
|
+
targetStatePath: targetPath,
|
|
40098
|
+
value,
|
|
40099
|
+
fetchedAt: now,
|
|
40100
|
+
});
|
|
40101
|
+
return value;
|
|
40102
|
+
}), catchError((err) => {
|
|
40103
|
+
onDiagnostic?.({
|
|
40104
|
+
dataSourceId: ds.id,
|
|
40105
|
+
status: 'error',
|
|
40106
|
+
error: err?.message || String(err),
|
|
40107
|
+
});
|
|
40108
|
+
if (!hasSucceededOnce &&
|
|
40109
|
+
ds.errorPolicy !== 'silent' &&
|
|
40110
|
+
ds.errorPolicy !== 'propagate' &&
|
|
40111
|
+
ds.fallbackValue !== undefined) {
|
|
40112
|
+
onUpdate({
|
|
40113
|
+
dataSourceId: ds.id,
|
|
40114
|
+
targetStatePath: targetPath,
|
|
40115
|
+
value: this.clone(ds.fallbackValue),
|
|
40116
|
+
fetchedAt: new Date().toISOString(),
|
|
40117
|
+
});
|
|
40118
|
+
}
|
|
40119
|
+
return EMPTY;
|
|
40120
|
+
}));
|
|
40121
|
+
const stream$ = intervalMs > 0
|
|
40122
|
+
? timer(0, intervalMs).pipe(takeUntil(destroy$), switchMap(() => {
|
|
40123
|
+
if (typeof document !== 'undefined' &&
|
|
40124
|
+
document.visibilityState === 'hidden') {
|
|
40125
|
+
return EMPTY;
|
|
40126
|
+
}
|
|
40127
|
+
return runSingleFetch$();
|
|
40128
|
+
}))
|
|
40129
|
+
: runSingleFetch$().pipe(takeUntil(destroy$));
|
|
40130
|
+
stream$.subscribe();
|
|
40131
|
+
}
|
|
40132
|
+
return () => {
|
|
40133
|
+
destroy$.next();
|
|
40134
|
+
destroy$.complete();
|
|
40135
|
+
};
|
|
40136
|
+
}
|
|
40137
|
+
/**
|
|
40138
|
+
* Transforma a resposta bruta do backend aplicando envelope canônico ou JsonLogic.
|
|
40139
|
+
*/
|
|
40140
|
+
transformPayload(raw, dataSource) {
|
|
40141
|
+
if (raw == null)
|
|
40142
|
+
return raw;
|
|
40143
|
+
let payload = raw;
|
|
40144
|
+
// Se a resposta vier no envelope padrão REST { data: ... } e não for um array puro
|
|
40145
|
+
if (typeof raw === 'object' &&
|
|
40146
|
+
!Array.isArray(raw) &&
|
|
40147
|
+
'data' in raw &&
|
|
40148
|
+
raw.data !== undefined) {
|
|
40149
|
+
payload = raw.data;
|
|
40150
|
+
}
|
|
40151
|
+
const transform = dataSource.transform;
|
|
40152
|
+
if (!transform) {
|
|
40153
|
+
return payload;
|
|
40154
|
+
}
|
|
40155
|
+
if (typeof transform === 'object' &&
|
|
40156
|
+
transform !== null &&
|
|
40157
|
+
'kind' in transform) {
|
|
40158
|
+
const transformObj = transform;
|
|
40159
|
+
const kind = transformObj['kind'];
|
|
40160
|
+
if (kind === 'path' && typeof transformObj['path'] === 'string') {
|
|
40161
|
+
const extracted = this.connections.extractByPath(payload, transformObj['path']);
|
|
40162
|
+
return extracted !== undefined
|
|
40163
|
+
? extracted
|
|
40164
|
+
: this.connections.extractByPath(raw, transformObj['path']);
|
|
40165
|
+
}
|
|
40166
|
+
if (kind === 'group-by-map') {
|
|
40167
|
+
const rawBuckets = raw?.buckets ??
|
|
40168
|
+
payload?.buckets ??
|
|
40169
|
+
(Array.isArray(raw) ? raw : Array.isArray(payload) ? payload : []);
|
|
40170
|
+
const buckets = Array.isArray(rawBuckets) ? rawBuckets : [];
|
|
40171
|
+
const mappings = transformObj['mappings'] || {};
|
|
40172
|
+
const totalField = transformObj['totalField'];
|
|
40173
|
+
const result = {};
|
|
40174
|
+
for (const targetField of Object.values(mappings)) {
|
|
40175
|
+
if (typeof targetField === 'string' && targetField.trim()) {
|
|
40176
|
+
result[targetField] = 0;
|
|
40177
|
+
}
|
|
40178
|
+
}
|
|
40179
|
+
let total = 0;
|
|
40180
|
+
for (const bucket of buckets) {
|
|
40181
|
+
const keyStr = String(bucket?.key ?? '');
|
|
40182
|
+
const val = Number(bucket?.value ?? bucket?.count ?? 0);
|
|
40183
|
+
const safeVal = Number.isFinite(val) ? val : 0;
|
|
40184
|
+
total += safeVal;
|
|
40185
|
+
const mappedField = mappings[keyStr];
|
|
40186
|
+
if (mappedField) {
|
|
40187
|
+
result[mappedField] = (result[mappedField] || 0) + safeVal;
|
|
40188
|
+
}
|
|
40189
|
+
}
|
|
40190
|
+
if (totalField) {
|
|
40191
|
+
result[totalField] = total;
|
|
40192
|
+
}
|
|
40193
|
+
return result;
|
|
40194
|
+
}
|
|
40195
|
+
if (kind === 'timeseries-last') {
|
|
40196
|
+
const rawPoints = raw?.points ??
|
|
40197
|
+
payload?.points ??
|
|
40198
|
+
(Array.isArray(raw) ? raw : Array.isArray(payload) ? payload : []);
|
|
40199
|
+
const points = Array.isArray(rawPoints) ? rawPoints : [];
|
|
40200
|
+
if (!points.length) {
|
|
40201
|
+
return {};
|
|
40202
|
+
}
|
|
40203
|
+
const lastPoint = points[points.length - 1];
|
|
40204
|
+
const mappings = transformObj['mappings'] || {};
|
|
40205
|
+
const result = {};
|
|
40206
|
+
for (const [sourcePath, targetKey] of Object.entries(mappings)) {
|
|
40207
|
+
let extracted = this.connections.extractByPath(lastPoint, sourcePath);
|
|
40208
|
+
if (extracted === undefined && sourcePath.startsWith('values.')) {
|
|
40209
|
+
extracted = lastPoint?.value;
|
|
40210
|
+
}
|
|
40211
|
+
if (extracted === undefined && sourcePath === 'label') {
|
|
40212
|
+
extracted = lastPoint?.period ?? lastPoint?.start ?? lastPoint?.bucket;
|
|
40213
|
+
}
|
|
40214
|
+
if (extracted !== undefined) {
|
|
40215
|
+
result[String(targetKey)] = extracted;
|
|
40216
|
+
}
|
|
40217
|
+
}
|
|
40218
|
+
return result;
|
|
40219
|
+
}
|
|
40220
|
+
}
|
|
40221
|
+
try {
|
|
40222
|
+
return this.jsonLogic.evaluate(transform, {
|
|
40223
|
+
data: payload,
|
|
40224
|
+
response: raw,
|
|
40225
|
+
result: payload,
|
|
40226
|
+
});
|
|
40227
|
+
}
|
|
40228
|
+
catch {
|
|
40229
|
+
return payload;
|
|
40230
|
+
}
|
|
40231
|
+
}
|
|
40232
|
+
clone(val) {
|
|
40233
|
+
if (val == null || typeof val !== 'object')
|
|
40234
|
+
return val;
|
|
40235
|
+
try {
|
|
40236
|
+
return JSON.parse(JSON.stringify(val));
|
|
40237
|
+
}
|
|
40238
|
+
catch {
|
|
40239
|
+
return val;
|
|
40240
|
+
}
|
|
40241
|
+
}
|
|
40242
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetPageDataSourceRuntimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40243
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetPageDataSourceRuntimeService, providedIn: 'root' });
|
|
40244
|
+
}
|
|
40245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetPageDataSourceRuntimeService, decorators: [{
|
|
40246
|
+
type: Injectable,
|
|
40247
|
+
args: [{ providedIn: 'root' }]
|
|
40248
|
+
}] });
|
|
40249
|
+
|
|
39873
40250
|
const TRANSFORM_CATALOG = [
|
|
39874
40251
|
{
|
|
39875
40252
|
kind: 'format-value', phase: 'link-propagation', label: 'Format Value',
|
|
@@ -45333,6 +45710,12 @@ class DynamicWidgetPageComponent {
|
|
|
45333
45710
|
})();
|
|
45334
45711
|
conn = inject(ConnectionManagerService);
|
|
45335
45712
|
stateRuntime = inject(WidgetPageStateRuntimeService);
|
|
45713
|
+
dataSourceRuntime = inject(WidgetPageDataSourceRuntimeService);
|
|
45714
|
+
dataSourceTeardown;
|
|
45715
|
+
currentDataSourcesSignature = null;
|
|
45716
|
+
pendingDataSourceUpdates = [];
|
|
45717
|
+
isCoalescingDataSourceUpdates = false;
|
|
45718
|
+
dataSourceRuntimeOverlay = new Map();
|
|
45336
45719
|
nestedWidgetAccessor = new NestedWidgetConfigAccessor();
|
|
45337
45720
|
settingsPanel = inject(SETTINGS_PANEL_BRIDGE, {
|
|
45338
45721
|
optional: true,
|
|
@@ -45418,6 +45801,12 @@ class DynamicWidgetPageComponent {
|
|
|
45418
45801
|
afterNextRender({ read: () => this.observeHostWidth() });
|
|
45419
45802
|
}
|
|
45420
45803
|
ngOnDestroy() {
|
|
45804
|
+
this.dataSourceTeardown?.();
|
|
45805
|
+
this.dataSourceTeardown = undefined;
|
|
45806
|
+
this.currentDataSourcesSignature = null;
|
|
45807
|
+
this.pendingDataSourceUpdates = [];
|
|
45808
|
+
this.isCoalescingDataSourceUpdates = false;
|
|
45809
|
+
this.dataSourceRuntimeOverlay.clear();
|
|
45421
45810
|
this.persistenceGeneration++;
|
|
45422
45811
|
this.persistenceLoad?.unsubscribe();
|
|
45423
45812
|
this.persistenceMutation?.unsubscribe();
|
|
@@ -45498,12 +45887,17 @@ class DynamicWidgetPageComponent {
|
|
|
45498
45887
|
state: this.stateRuntime.normalizeState(resolvedPage.state),
|
|
45499
45888
|
}
|
|
45500
45889
|
: resolvedPage;
|
|
45890
|
+
if (changes['pageIdentity'] ||
|
|
45891
|
+
this.getDataSourcesSignature(this.pageDefinition?.dataSources) !==
|
|
45892
|
+
this.currentDataSourcesSignature) {
|
|
45893
|
+
this.dataSourceRuntimeOverlay.clear();
|
|
45894
|
+
}
|
|
45501
45895
|
this.pageRuntime = this.buildStateRuntime(this.pageDefinition?.state, this.pageDefinition?.context);
|
|
45502
45896
|
this.pageState = this.pageRuntime.state;
|
|
45503
45897
|
const bootstrapSnapshot = this.bootstrapCompositionAdapter(this.pageDefinition);
|
|
45504
45898
|
const rawWidgets = this.pageDefinition?.widgets || [];
|
|
45505
45899
|
let widgets = this.applyEditShellActions(rawWidgets);
|
|
45506
|
-
widgets = this.applyBootstrapCompositionHydration(widgets, bootstrapSnapshot);
|
|
45900
|
+
widgets = this.applyBootstrapCompositionHydration(widgets, bootstrapSnapshot, this.pageRuntime);
|
|
45507
45901
|
widgets = this.applyChildCustomizationProjection(widgets);
|
|
45508
45902
|
this.pageDefinition = this.pageDefinition
|
|
45509
45903
|
? { ...this.pageDefinition, widgets }
|
|
@@ -45511,6 +45905,7 @@ class DynamicWidgetPageComponent {
|
|
|
45511
45905
|
this.page = this.pageDefinition;
|
|
45512
45906
|
this.applyResponsivePresentation(this.pageDefinition, widgets, this.pageRuntime);
|
|
45513
45907
|
this.reportStateDiagnostics(this.pageRuntime.diagnostics);
|
|
45908
|
+
this.restartDataSources(this.pageDefinition);
|
|
45514
45909
|
}
|
|
45515
45910
|
if (!changes['page'] &&
|
|
45516
45911
|
!changes['context'] &&
|
|
@@ -45790,7 +46185,38 @@ class DynamicWidgetPageComponent {
|
|
|
45790
46185
|
return projected.length ? Object.fromEntries(projected) : null;
|
|
45791
46186
|
}
|
|
45792
46187
|
buildStateRuntime(state, pageContext) {
|
|
45793
|
-
|
|
46188
|
+
const normalizedAuthoredState = this.stateRuntime.normalizeState(state);
|
|
46189
|
+
if (this.dataSourceRuntimeOverlay.size === 0) {
|
|
46190
|
+
return this.stateRuntime.buildRuntimeSnapshot(normalizedAuthoredState, this.buildStateContext(pageContext));
|
|
46191
|
+
}
|
|
46192
|
+
let mergedValues = this.cloneStateValues(normalizedAuthoredState.values || {});
|
|
46193
|
+
for (const [targetPath, rawValue] of this.dataSourceRuntimeOverlay.entries()) {
|
|
46194
|
+
const existingAtTarget = this.conn.extractByPath(mergedValues, targetPath);
|
|
46195
|
+
let incomingValue = this.cloneStateValues(rawValue);
|
|
46196
|
+
if (existingAtTarget != null &&
|
|
46197
|
+
typeof existingAtTarget === 'object' &&
|
|
46198
|
+
!Array.isArray(existingAtTarget) &&
|
|
46199
|
+
incomingValue != null &&
|
|
46200
|
+
typeof incomingValue === 'object' &&
|
|
46201
|
+
!Array.isArray(incomingValue)) {
|
|
46202
|
+
incomingValue = { ...existingAtTarget, ...incomingValue };
|
|
46203
|
+
}
|
|
46204
|
+
mergedValues = this.conn.setValueAtPath(mergedValues, targetPath, incomingValue);
|
|
46205
|
+
}
|
|
46206
|
+
const effectiveStateInput = {
|
|
46207
|
+
...normalizedAuthoredState,
|
|
46208
|
+
values: mergedValues,
|
|
46209
|
+
};
|
|
46210
|
+
const snapshot = this.stateRuntime.buildRuntimeSnapshot(effectiveStateInput, this.buildStateContext(pageContext));
|
|
46211
|
+
return {
|
|
46212
|
+
...snapshot,
|
|
46213
|
+
state: normalizedAuthoredState,
|
|
46214
|
+
};
|
|
46215
|
+
}
|
|
46216
|
+
getDataSourcesSignature(dataSources) {
|
|
46217
|
+
return dataSources && dataSources.length > 0
|
|
46218
|
+
? JSON.stringify(dataSources)
|
|
46219
|
+
: null;
|
|
45794
46220
|
}
|
|
45795
46221
|
bootstrapCompositionAdapter(page) {
|
|
45796
46222
|
if (!page) {
|
|
@@ -45840,13 +46266,20 @@ class DynamicWidgetPageComponent {
|
|
|
45840
46266
|
};
|
|
45841
46267
|
});
|
|
45842
46268
|
}
|
|
45843
|
-
applyBootstrapCompositionHydration(widgets, bootstrapSnapshot) {
|
|
46269
|
+
applyBootstrapCompositionHydration(widgets, bootstrapSnapshot, runtime) {
|
|
45844
46270
|
if (!this.compositionDefinition || !bootstrapSnapshot) {
|
|
45845
46271
|
return this.cloneWidgets(widgets);
|
|
45846
46272
|
}
|
|
46273
|
+
const effectiveState = runtime
|
|
46274
|
+
? {
|
|
46275
|
+
...bootstrapSnapshot.state,
|
|
46276
|
+
primaryValues: this.cloneStateValues(runtime.primaryValues),
|
|
46277
|
+
derivedValues: this.cloneStateValues(runtime.derivedValues),
|
|
46278
|
+
}
|
|
46279
|
+
: bootstrapSnapshot.state;
|
|
45847
46280
|
const projected = this.compositionRuntime.projectStateWidgetInputs(this.compositionDefinition, {
|
|
45848
46281
|
widgets,
|
|
45849
|
-
state:
|
|
46282
|
+
state: effectiveState,
|
|
45850
46283
|
now: bootstrapSnapshot.generatedAt,
|
|
45851
46284
|
}).widgets;
|
|
45852
46285
|
return this.applyRecordRelatedSurfaceAiContext(projected);
|
|
@@ -46732,13 +47165,19 @@ class DynamicWidgetPageComponent {
|
|
|
46732
47165
|
if (widget.definition?.id !== 'praxis-rich-content') {
|
|
46733
47166
|
return widget;
|
|
46734
47167
|
}
|
|
47168
|
+
const authoredContext = (widget.definition.inputs?.['context'] || {});
|
|
47169
|
+
const mergedRichContext = {
|
|
47170
|
+
...(runtime.effectiveValues || {}),
|
|
47171
|
+
...authoredContext,
|
|
47172
|
+
};
|
|
46735
47173
|
return {
|
|
46736
47174
|
...widget,
|
|
46737
47175
|
definition: {
|
|
46738
47176
|
...widget.definition,
|
|
46739
47177
|
inputs: {
|
|
46740
47178
|
...(widget.definition.inputs || {}),
|
|
46741
|
-
|
|
47179
|
+
context: mergedRichContext,
|
|
47180
|
+
hostCapabilities: this.buildRichContentHostCapabilities(widget.key, runtime, mergedRichContext),
|
|
46742
47181
|
},
|
|
46743
47182
|
},
|
|
46744
47183
|
};
|
|
@@ -47340,7 +47779,27 @@ class DynamicWidgetPageComponent {
|
|
|
47340
47779
|
return raw;
|
|
47341
47780
|
}
|
|
47342
47781
|
lookup(ctx, path) {
|
|
47343
|
-
|
|
47782
|
+
if (ctx == null || !path)
|
|
47783
|
+
return undefined;
|
|
47784
|
+
const direct = path.split('.').reduce((acc, key) => acc?.[key], ctx);
|
|
47785
|
+
if (direct !== undefined)
|
|
47786
|
+
return direct;
|
|
47787
|
+
if (ctx.state) {
|
|
47788
|
+
const fromState = path.split('.').reduce((acc, key) => acc?.[key], ctx.state);
|
|
47789
|
+
if (fromState !== undefined)
|
|
47790
|
+
return fromState;
|
|
47791
|
+
}
|
|
47792
|
+
if (ctx.values) {
|
|
47793
|
+
const fromValues = path.split('.').reduce((acc, key) => acc?.[key], ctx.values);
|
|
47794
|
+
if (fromValues !== undefined)
|
|
47795
|
+
return fromValues;
|
|
47796
|
+
}
|
|
47797
|
+
if (ctx.context) {
|
|
47798
|
+
const fromContext = path.split('.').reduce((acc, key) => acc?.[key], ctx.context);
|
|
47799
|
+
if (fromContext !== undefined)
|
|
47800
|
+
return fromContext;
|
|
47801
|
+
}
|
|
47802
|
+
return undefined;
|
|
47344
47803
|
}
|
|
47345
47804
|
openWidgetShellSettings(key) {
|
|
47346
47805
|
if (!this.canOpenWidgetShellSettings())
|
|
@@ -48180,7 +48639,7 @@ class DynamicWidgetPageComponent {
|
|
|
48180
48639
|
const stateBoundWidgets = skipStateWidgetProjection
|
|
48181
48640
|
? normalizedWidgets
|
|
48182
48641
|
: bootstrapSnapshot
|
|
48183
|
-
? this.applyBootstrapCompositionHydration(normalizedWidgets, bootstrapSnapshot)
|
|
48642
|
+
? this.applyBootstrapCompositionHydration(normalizedWidgets, bootstrapSnapshot, runtime)
|
|
48184
48643
|
: this.compositionDefinition
|
|
48185
48644
|
? this.compositionRuntime.projectStateWidgetInputs(this.compositionDefinition, {
|
|
48186
48645
|
widgets: normalizedWidgets,
|
|
@@ -48202,6 +48661,7 @@ class DynamicWidgetPageComponent {
|
|
|
48202
48661
|
this.pageState = runtime.state;
|
|
48203
48662
|
this.pageRuntime = runtime;
|
|
48204
48663
|
this.applyResponsivePresentation(hydrated, hydrated?.widgets || stateBoundWidgets, runtime);
|
|
48664
|
+
this.restartDataSources(hydrated);
|
|
48205
48665
|
if (this.widgetEventBus) {
|
|
48206
48666
|
this.wiringSubscription?.unsubscribe();
|
|
48207
48667
|
if (hydrated?.wiring && hydrated.wiring.length > 0) {
|
|
@@ -48224,6 +48684,84 @@ class DynamicWidgetPageComponent {
|
|
|
48224
48684
|
this.savePage(canonicalPage);
|
|
48225
48685
|
}
|
|
48226
48686
|
}
|
|
48687
|
+
handleDataSourceUpdate(update) {
|
|
48688
|
+
if (this.destroyed || !this.pageDefinition) {
|
|
48689
|
+
return;
|
|
48690
|
+
}
|
|
48691
|
+
this.pendingDataSourceUpdates.push(update);
|
|
48692
|
+
if (this.isCoalescingDataSourceUpdates) {
|
|
48693
|
+
return;
|
|
48694
|
+
}
|
|
48695
|
+
this.isCoalescingDataSourceUpdates = true;
|
|
48696
|
+
queueMicrotask(() => this.flushPendingDataSourceUpdates());
|
|
48697
|
+
}
|
|
48698
|
+
flushPendingDataSourceUpdates() {
|
|
48699
|
+
this.isCoalescingDataSourceUpdates = false;
|
|
48700
|
+
if (this.destroyed || !this.pageDefinition || this.pendingDataSourceUpdates.length === 0) {
|
|
48701
|
+
this.pendingDataSourceUpdates = [];
|
|
48702
|
+
return;
|
|
48703
|
+
}
|
|
48704
|
+
const updates = [...this.pendingDataSourceUpdates];
|
|
48705
|
+
this.pendingDataSourceUpdates = [];
|
|
48706
|
+
for (const update of updates) {
|
|
48707
|
+
const existingAtTarget = this.dataSourceRuntimeOverlay.get(update.targetStatePath);
|
|
48708
|
+
let incomingValue = this.cloneStateValues(update.value);
|
|
48709
|
+
if (existingAtTarget != null &&
|
|
48710
|
+
typeof existingAtTarget === 'object' &&
|
|
48711
|
+
!Array.isArray(existingAtTarget) &&
|
|
48712
|
+
incomingValue != null &&
|
|
48713
|
+
typeof incomingValue === 'object' &&
|
|
48714
|
+
!Array.isArray(incomingValue)) {
|
|
48715
|
+
incomingValue = { ...existingAtTarget, ...incomingValue };
|
|
48716
|
+
}
|
|
48717
|
+
this.dataSourceRuntimeOverlay.set(update.targetStatePath, incomingValue);
|
|
48718
|
+
}
|
|
48719
|
+
const previousEffective = this.cloneStateValues(this.pageRuntime.effectiveValues);
|
|
48720
|
+
const nextRuntime = this.buildStateRuntime(this.pageDefinition.state, this.pageDefinition.context);
|
|
48721
|
+
if (this.areStateValuesEqual(previousEffective, nextRuntime.effectiveValues)) {
|
|
48722
|
+
return;
|
|
48723
|
+
}
|
|
48724
|
+
this.pageRuntime = nextRuntime;
|
|
48725
|
+
this.pageState = nextRuntime.state;
|
|
48726
|
+
let widgets = this.pageDefinition.widgets || [];
|
|
48727
|
+
if (this.compositionDefinition) {
|
|
48728
|
+
const projected = this.compositionRuntime.projectStateWidgetInputs(this.compositionDefinition, {
|
|
48729
|
+
widgets: this.applyEditShellActions(widgets),
|
|
48730
|
+
state: {
|
|
48731
|
+
primaryValues: this.cloneStateValues(nextRuntime.primaryValues),
|
|
48732
|
+
derivedValues: this.cloneStateValues(nextRuntime.derivedValues),
|
|
48733
|
+
transientValues: {},
|
|
48734
|
+
changedPaths: updates.map((u) => u.targetStatePath),
|
|
48735
|
+
diagnostics: [],
|
|
48736
|
+
},
|
|
48737
|
+
}).widgets;
|
|
48738
|
+
const hydrated = this.resolvePagePresets({
|
|
48739
|
+
...this.pageDefinition,
|
|
48740
|
+
widgets: this.applyChildCustomizationProjection(this.applyRecordRelatedSurfaceAiContext(projected)),
|
|
48741
|
+
});
|
|
48742
|
+
this.pageDefinition = hydrated;
|
|
48743
|
+
this.page = hydrated;
|
|
48744
|
+
widgets = hydrated?.widgets || projected;
|
|
48745
|
+
}
|
|
48746
|
+
this.applyResponsivePresentation(this.pageDefinition, widgets, nextRuntime);
|
|
48747
|
+
this.reportStateDiagnostics(nextRuntime.diagnostics);
|
|
48748
|
+
this.changeDetector.markForCheck();
|
|
48749
|
+
}
|
|
48750
|
+
restartDataSources(page) {
|
|
48751
|
+
const dataSources = page?.dataSources;
|
|
48752
|
+
const signature = this.getDataSourcesSignature(dataSources);
|
|
48753
|
+
if (signature === this.currentDataSourcesSignature) {
|
|
48754
|
+
return;
|
|
48755
|
+
}
|
|
48756
|
+
this.currentDataSourcesSignature = signature;
|
|
48757
|
+
this.dataSourceRuntimeOverlay.clear();
|
|
48758
|
+
this.dataSourceTeardown?.();
|
|
48759
|
+
this.dataSourceTeardown = undefined;
|
|
48760
|
+
if (!dataSources || dataSources.length === 0) {
|
|
48761
|
+
return;
|
|
48762
|
+
}
|
|
48763
|
+
this.dataSourceTeardown = this.dataSourceRuntime.startDataSources(dataSources, (update) => this.handleDataSourceUpdate(update));
|
|
48764
|
+
}
|
|
48227
48765
|
applyLayout(layout, grouping, deviceLayoutColumnsSelected = false) {
|
|
48228
48766
|
this.layout = layout;
|
|
48229
48767
|
this.canvas = undefined;
|
|
@@ -48261,6 +48799,8 @@ class DynamicWidgetPageComponent {
|
|
|
48261
48799
|
const merged = {
|
|
48262
48800
|
...baseContext,
|
|
48263
48801
|
...(inputContext || {}),
|
|
48802
|
+
...this.cloneStateValues(runtime.effectiveValues),
|
|
48803
|
+
state: this.cloneStateValues(runtime.effectiveValues),
|
|
48264
48804
|
pageDeviceKind: this.resolveDeviceKind(),
|
|
48265
48805
|
pageLayoutPreset: layoutPreset || null,
|
|
48266
48806
|
pageThemePreset: themePreset || null,
|
|
@@ -51212,7 +51752,26 @@ class DynamicWidgetPageComponent {
|
|
|
51212
51752
|
if (stored !== null || defaultPage) {
|
|
51213
51753
|
this.isHydrating = true;
|
|
51214
51754
|
try {
|
|
51215
|
-
const
|
|
51755
|
+
const baseline = defaultPage ?? this.authoredPageDefinition ?? this.pageDefinition;
|
|
51756
|
+
const loaded = stored && baseline
|
|
51757
|
+
? {
|
|
51758
|
+
...baseline,
|
|
51759
|
+
...stored,
|
|
51760
|
+
state: {
|
|
51761
|
+
...(baseline.state || {}),
|
|
51762
|
+
...(stored.state || {}),
|
|
51763
|
+
values: {
|
|
51764
|
+
...(baseline.state?.values || {}),
|
|
51765
|
+
...(stored.state?.values || {}),
|
|
51766
|
+
},
|
|
51767
|
+
derived: {
|
|
51768
|
+
...(baseline.state?.derived || {}),
|
|
51769
|
+
...(stored.state?.derived || {}),
|
|
51770
|
+
},
|
|
51771
|
+
},
|
|
51772
|
+
dataSources: stored.dataSources ?? baseline.dataSources,
|
|
51773
|
+
}
|
|
51774
|
+
: (stored ?? defaultPage);
|
|
51216
51775
|
this.authoredPageDefinition = this.clonePageDefinition(loaded);
|
|
51217
51776
|
this.applyPageUpdate(loaded, false);
|
|
51218
51777
|
}
|
|
@@ -57266,4 +57825,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
57266
57825
|
* Generated bundle index. Do not edit.
|
|
57267
57826
|
*/
|
|
57268
57827
|
|
|
57269
|
-
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, BUILTIN_WIDGET_SHELL_PRESETS, BulkOperationClientService, BulkSyncSession, BulkSyncStateService, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentAuthoringManifestProjectionError, ComponentKeyService, ComponentMetadataRegistry, ComponentRuntimeProfileService, CompositionRuntimeFacade, CompositionValidatorService, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_DYNAMIC_FORM_SCHEMA_CACHE_MAX_ENTRIES, DEFAULT_DYNAMIC_FORM_SCHEMA_CACHE_TTL_MS, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_SCHEMA_REQUEST_TIMEOUT_MS, 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, EFFECTIVE_UI_LAYOUT_COMPOSITION_SCHEMA_VERSION, 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, EffectiveUiLayoutContractError, EffectiveUiLayoutHttpError, EffectiveUiLayoutService, EmptyStateCardComponent, EnterpriseRuntimeContextObsoleteError, 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, GOVERNED_COLOR_PALETTE_OPTIONS, GenericCrudService, GlobalActionService, GlobalConfigService, GovernedColorPaletteService, 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_EFFECTIVE_UI_LAYOUT_OPTIONS, 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_AUTHORING_MANIFEST, 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, PraxisAppShellComponent, PraxisBulkClientService, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisKeepAliveTabDirective, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisRelatedResourceOutletConfigEditorComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, PraxisWidgetEventBus, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_METADATA_CLIENT_OPTIONS, SCHEMA_VIEWER_CONTEXT, SETTINGS_EDITOR_SECTIONS_HOSTED, 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, SafeExpressionEvaluator, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SettingsSectionTabsComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, UiLayoutLifecycleContractError, UiLayoutLifecycleHttpError, UiLayoutLifecycleService, ValidationPattern, WidgetPageCompositionFactory, 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, canonicalJsonSha256, canonicalJsonStringify, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cloneUiLayoutJsonDocument, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createDynamicRecord, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, extractRecordId, fetchWithETag, fileTypeValidator, fillUndefined, findBuiltinWidgetShellPreset, formIdentityIssues, generateBulkIdempotencyKey, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionProviderEvidence, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, getWidgetShellActionIdError, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isBulkExecutionTerminal, isCssTextTransform, isDomainRuleSnapshotProblemResponse, isDynamicDataRecord, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionProviderOperational, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, markGlobalActionProviderOperational, matchFieldValidator, materializeFormLayoutFromMetadata, materializeGovernedPaletteColors, materializeGovernedPaletteEntries, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, nestedPortPathIdentity, normalizeCardMediaAspectRatio, 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, prepareCanvasArrangement, projectComponentAuthoringManifest, 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, providePraxisTelemetry, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveBuiltinWidgetShellAppearance, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDataField, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, resolvePraxisMicroVisualizationTone, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, resolveWidgetPageLayoutPreset, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsConfigDocuments, supportsImplicitValuePresentation, syncWithServerMetadata, textSha256, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateSurfaceOpenFailed, translateUnavailableWorkflowMessage, trim, uiLayoutJsonIdentity, uniqueAsyncValidator, urlValidator, validateCanvasArrangement, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
57828
|
+
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, BUILTIN_WIDGET_SHELL_PRESETS, BulkOperationClientService, BulkSyncSession, BulkSyncStateService, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentAuthoringManifestProjectionError, ComponentKeyService, ComponentMetadataRegistry, ComponentRuntimeProfileService, CompositionRuntimeFacade, CompositionValidatorService, ConsoleLoggerSink, CrudOperationResolutionService, DEFAULT_DYNAMIC_FORM_SCHEMA_CACHE_MAX_ENTRIES, DEFAULT_DYNAMIC_FORM_SCHEMA_CACHE_TTL_MS, DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP, DEFAULT_JSON_LOGIC_OPERATORS, DEFAULT_SCHEMA_REQUEST_TIMEOUT_MS, 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, EFFECTIVE_UI_LAYOUT_COMPOSITION_SCHEMA_VERSION, 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, EffectiveUiLayoutContractError, EffectiveUiLayoutHttpError, EffectiveUiLayoutService, EmptyStateCardComponent, EnterpriseRuntimeContextObsoleteError, 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, GOVERNED_COLOR_PALETTE_OPTIONS, GenericCrudService, GlobalActionService, GlobalConfigService, GovernedColorPaletteService, 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_EFFECTIVE_UI_LAYOUT_OPTIONS, 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_AUTHORING_MANIFEST, 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, PraxisAppShellComponent, PraxisBulkClientService, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisKeepAliveTabDirective, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisRelatedResourceOutletConfigEditorComponent, PraxisResourceIdentityComponent, PraxisRichTextBlockComponent, PraxisRuntimeComponentObservationRegistryService, PraxisSurfaceHostComponent, PraxisUserContextSummaryComponent, PraxisWidgetEventBus, RESOURCE_DISCOVERY_I18N_CONFIG, RESOURCE_DISCOVERY_I18N_NAMESPACE, RULE_PROPERTY_SCHEMA, RelatedResourceSurfaceResolverService, RemoteConfigStorage, ResourceActionOpenAdapterService, ResourceDiscoveryService, ResourceQuickConnectComponent, ResourceRecordOpenError, ResourceRecordOpenService, ResourceSurfaceOpenAdapterService, SCHEMA_METADATA_CLIENT_OPTIONS, SCHEMA_VIEWER_CONTEXT, SETTINGS_EDITOR_SECTIONS_HOSTED, 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, SafeExpressionEvaluator, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SettingsSectionTabsComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, UiLayoutLifecycleContractError, UiLayoutLifecycleHttpError, UiLayoutLifecycleService, ValidationPattern, WidgetPageCompositionFactory, WidgetPageDataSourceRuntimeService, 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, canonicalJsonSha256, canonicalJsonStringify, clampRange, classifyEntityLookupResult, clonePraxisRuntimeComponentObservation, cloneTableConfig, cloneUiLayoutJsonDocument, cnpjAlphaValidator, collapseWhitespace, composeHeadersWithVersion, conditionalAsyncValidator, convertFormLayoutToConfig, createCorporateLoggerConfig, createCorporateObservabilityOptions, createCpfCnpjValidator, createDefaultFormConfig, createDefaultTableConfig, createDynamicRecord, createEmptyFormConfig, createEmptyRichContentDocument, createFieldLayoutItem, createPersistedPage, customAsyncValidatorFn, customValidatorFn, debounceAsyncValidator, deepMerge, domainKnowledgeTimelineToRichContentDocument, domainRuleTimelineToRichContentDocument, ensureIds, ensureNoConflictsHookFactory, ensurePageIds, escapePraxisExportCell, evaluateFieldAccess, extractNormalizedError, extractRecordId, fetchWithETag, fileTypeValidator, fillUndefined, findBuiltinWidgetShellPreset, formIdentityIssues, generateBulkIdempotencyKey, generateId, getDefaultFormHints, getEditorialCompliancePresetById, getEditorialFormTemplateById, getEditorialFormTemplateCatalog, getEditorialSolutionById, getEditorialSolutionCatalog, getEditorialSolutionPresetById, getEditorialThemePresetById, getEssentialConfig, getFieldMetadataCapabilities, getFormColumnFieldNames, getFormLayoutFieldNames, getGlobalActionCatalog, getGlobalActionPayloadActualType, getGlobalActionPayloadTypeIssue, getGlobalActionProviderEvidence, getGlobalActionUiSchema, getMissingGlobalActionPayloadKeys, getPraxisTableCellVisualizationConstraint, getPraxisTableCellVisualizationGuidance, getReferencedFieldMetadata, getRequiredGlobalActionPayloadKeys, getTextTransformer, getWidgetShellActionIdError, hasMeaningfulGlobalActionPayloadValue, hasPraxisCollectionExportArtifact, interpolatePraxisTranslation, isAllowedEditorialContentFormat, isAllowedEditorialHref, isBulkExecutionTerminal, isCssTextTransform, isDomainRuleSnapshotProblemResponse, isDynamicDataRecord, isEditorialComponentMeta, isEntityLookupMultiplePayloadMode, isEntityLookupPayloadMode, isEntityLookupPayloadModeCompatible, isEntityLookupResultSelectable, isEntityLookupSinglePayloadMode, isFormLayoutItem, isGlobalActionProviderOperational, isGlobalActionRef, isInlineFilterControlType, isLookupDialogSize, isLookupFilterFieldType, isLookupFilterOperator, isPraxisI18nMessageDescriptor, isPraxisPresentationVisualizationTableSafe, isPraxisRuntimeGlobalActionEffect, isProgrammaticDateRangePreset, isRangeValidForFilter, isRequiredGlobalActionParamPayloadMissing, isRequiredGlobalActionPayloadMissing, isStaticDateRangePreset, isSurfaceNavigationError, isTableConfigV2, isValidFormConfig, isValidTableConfig, legacyCnpjValidator, legacyCpfValidator, logOnErrorHook, mapFieldDefinitionToMetadata, mapFieldDefinitionsToMetadata, markGlobalActionProviderOperational, matchFieldValidator, materializeFormLayoutFromMetadata, materializeGovernedPaletteColors, materializeGovernedPaletteEntries, materializeResourceIdentity, maxFileSizeValidator, mergeFieldMetadata, mergePraxisI18nConfigs, mergeTableConfigs, migrateFormLayoutRule, migrateLegacyCompositionLink, migrateLegacyCompositionLinks, minWordsValidator, nestedPortPathIdentity, normalizeCardMediaAspectRatio, 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, prepareCanvasArrangement, projectComponentAuthoringManifest, 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, providePraxisTelemetry, providePraxisToastGlobalActions, providePraxisUserContextSummaryMetadata, provideRemoteGlobalConfig, readPraxisExportValue, reconcileFilterConfig, reconcileFormConfig, reconcileTableConfig, registerPraxisRuntimeComponentObservation, removeDiacritics, renderPraxisPresentationVisualizationHtml, reportTelemetryHookFactory, requiredCheckedValidator, requiredPresenceValidator, resolveBuiltinPresets, resolveBuiltinWidgetShellAppearance, resolveColumnTypeFromFieldDefinition, resolveControlTypeAlias, resolveDataField, resolveDateRangeShortcutPreset, resolveDateRangeShortcutPresets, resolveDefaultValuePresentationFormat, resolveEntityLookupPayloadMode, resolveFieldPresentation, resolveGroupedCommandPartialRowSpans, resolveHidden, resolveInlineFilterControlType, resolveInlineFilterControlTypeToBaseControlType, resolveLoggerConfig, resolveObservabilityOptions, resolveOffset, resolveOrder, resolvePraxisCollectionExportItems, resolvePraxisExportFields, resolvePraxisExportScope, resolvePraxisFilterCriteria, resolvePraxisI18nDocument, resolvePraxisMicroVisualizationTone, resolveResourceAvailabilityReasonKey, resolveResourceIdentityContract, resolveSpan, resolveTextMaskFormat, resolveTextMaskFormatFromFieldDefinition, resolveValuePresentation, resolveValuePresentationLocale, resolveWidgetPageLayoutPreset, serializeEntityLookupValueForPayload, serializeOptionSourceFilterRequest, serializePraxisCollectionToCsv, serializePraxisCollectionToExcel, serializePraxisCollectionToJson, slugify, staticDateRangePresetToPreset, stripMasksHook, supportsConfigDocuments, supportsImplicitValuePresentation, syncWithServerMetadata, textSha256, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateSurfaceOpenFailed, translateUnavailableWorkflowMessage, trim, uiLayoutJsonIdentity, uniqueAsyncValidator, urlValidator, validateCanvasArrangement, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|