@praxisui/core 9.0.4 → 9.0.5-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 } 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$3(value))
810
+ if (!isRecord$4(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$3(options.explicitIdentity);
838
+ const hasExplicitDeclaration = isRecord$4(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$3(item)
966
+ return isRecord$4(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$3(value) {
995
+ function isRecord$4(value) {
996
996
  return !!value && typeof value === 'object' && !Array.isArray(value);
997
997
  }
998
998
 
@@ -13805,6 +13805,7 @@ class ResourceDiscoveryService {
13805
13805
  http = inject(HttpClient);
13806
13806
  schemaNormalizer = inject(SchemaNormalizerService);
13807
13807
  apiUrlConfig = inject(API_URL);
13808
+ surfaceCatalogInFlightByHref = new Map();
13808
13809
  getLinks(source, rel) {
13809
13810
  const candidate = this.extractLinks(source)?.[rel];
13810
13811
  if (!candidate) {
@@ -13826,7 +13827,19 @@ class ResourceDiscoveryService {
13826
13827
  return this.fetchJson(this.requireLinkHref(source, rel, options), options);
13827
13828
  }
13828
13829
  getSurfaces(source, options) {
13829
- return this.followLink(source, 'surfaces', options);
13830
+ const href = this.requireLinkHref(source, 'surfaces', options);
13831
+ const existing = this.surfaceCatalogInFlightByHref.get(href);
13832
+ if (existing) {
13833
+ return existing;
13834
+ }
13835
+ let request;
13836
+ request = this.fetchJson(href, options).pipe(finalize$1(() => {
13837
+ if (this.surfaceCatalogInFlightByHref.get(href) === request) {
13838
+ this.surfaceCatalogInFlightByHref.delete(href);
13839
+ }
13840
+ }), shareReplay$1({ bufferSize: 1, refCount: true }));
13841
+ this.surfaceCatalogInFlightByHref.set(href, request);
13842
+ return request;
13830
13843
  }
13831
13844
  getActions(source, options) {
13832
13845
  return this.followLink(source, 'actions', options);
@@ -14149,7 +14162,7 @@ const SURFACE_OPEN_PRESETS = [
14149
14162
  * Invalid roles are omitted and a completely empty context resolves to `null`.
14150
14163
  */
14151
14164
  function normalizeSurfaceOperationContext(value) {
14152
- if (!isRecord$2(value))
14165
+ if (!isRecord$3(value))
14153
14166
  return null;
14154
14167
  const taskScope = normalizeResourceRef(value['taskScope']);
14155
14168
  const subject = normalizeResourceRef(value['subject']);
@@ -14163,7 +14176,7 @@ function normalizeSurfaceOperationContext(value) {
14163
14176
  };
14164
14177
  }
14165
14178
  function normalizeResourceRef(value) {
14166
- if (!isRecord$2(value))
14179
+ if (!isRecord$3(value))
14167
14180
  return undefined;
14168
14181
  const resourceKey = normalizeText(value['resourceKey']);
14169
14182
  const resourceId = normalizeResourceId(value['resourceId']);
@@ -14177,7 +14190,7 @@ function normalizeResourceRef(value) {
14177
14190
  };
14178
14191
  }
14179
14192
  function normalizeRelationship(value) {
14180
- if (!isRecord$2(value))
14193
+ if (!isRecord$3(value))
14181
14194
  return undefined;
14182
14195
  const surfaceId = normalizeText(value['surfaceId']);
14183
14196
  const childResourceKey = normalizeText(value['childResourceKey']);
@@ -14191,7 +14204,7 @@ function normalizeRelationship(value) {
14191
14204
  };
14192
14205
  }
14193
14206
  function normalizeIdentity(value) {
14194
- if (!isRecord$2(value) || !Array.isArray(value['metadata']))
14207
+ if (!isRecord$3(value) || !Array.isArray(value['metadata']))
14195
14208
  return undefined;
14196
14209
  const key = normalizeIdentityPart(value['key']);
14197
14210
  const title = normalizeIdentityPart(value['title']);
@@ -14214,7 +14227,7 @@ function normalizeIdentity(value) {
14214
14227
  };
14215
14228
  }
14216
14229
  function normalizeIdentityPart(value) {
14217
- if (!isRecord$2(value))
14230
+ if (!isRecord$3(value))
14218
14231
  return undefined;
14219
14232
  const field = normalizeText(value['field']);
14220
14233
  const partValue = normalizeDisplayValue(value['value']);
@@ -14237,11 +14250,11 @@ function normalizeDisplayValue(value) {
14237
14250
  return typeof value === 'boolean' ? value : undefined;
14238
14251
  }
14239
14252
  function cloneJsonRecord(value) {
14240
- if (!isRecord$2(value))
14253
+ if (!isRecord$3(value))
14241
14254
  return undefined;
14242
14255
  try {
14243
14256
  const cloned = JSON.parse(JSON.stringify(value));
14244
- return isRecord$2(cloned) ? cloned : undefined;
14257
+ return isRecord$3(cloned) ? cloned : undefined;
14245
14258
  }
14246
14259
  catch {
14247
14260
  return undefined;
@@ -14261,7 +14274,7 @@ function normalizeText(value) {
14261
14274
  const normalized = value.trim();
14262
14275
  return normalized || undefined;
14263
14276
  }
14264
- function isRecord$2(value) {
14277
+ function isRecord$3(value) {
14265
14278
  return !!value && typeof value === 'object' && !Array.isArray(value);
14266
14279
  }
14267
14280
 
@@ -15222,6 +15235,7 @@ const INTAKE_HREF = '/api/praxis/config/domain-rules/intake';
15222
15235
  const SIMULATIONS_HREF = '/api/praxis/config/domain-rules/simulations';
15223
15236
  const PUBLICATIONS_HREF = '/api/praxis/config/domain-rules/publications';
15224
15237
  const MATERIALIZATIONS_HREF = '/api/praxis/config/domain-rules/materializations';
15238
+ const SNAPSHOTS_HREF = '/api/praxis/config/domain-rules/snapshots';
15225
15239
  class DomainRuleService {
15226
15240
  http = inject(HttpClient);
15227
15241
  discovery = inject(ResourceDiscoveryService);
@@ -15261,6 +15275,47 @@ class DomainRuleService {
15261
15275
  transitionMaterializationStatus(materializationId, request, options = {}) {
15262
15276
  return this.http.patch(this.discovery.resolveHref(`${MATERIALIZATIONS_HREF}/${encodeURIComponent(materializationId)}/status`, options), request, { headers: this.resolveHeaders(options) });
15263
15277
  }
15278
+ listSnapshotVersions(ruleSetKey, limit = 50, options = {}) {
15279
+ return this.http.get(this.discovery.resolveHref(SNAPSHOTS_HREF, options), {
15280
+ params: new HttpParams()
15281
+ .set('ruleSetKey', ruleSetKey)
15282
+ .set('limit', String(limit)),
15283
+ headers: this.resolveHeaders(options),
15284
+ });
15285
+ }
15286
+ getSnapshotHeadStatus(ruleSetKey, options = {}) {
15287
+ return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/head/status`, options), {
15288
+ params: new HttpParams().set('ruleSetKey', ruleSetKey),
15289
+ headers: this.resolveHeaders(options),
15290
+ });
15291
+ }
15292
+ getSnapshotHead(ruleSetKey, options = {}) {
15293
+ return this.http.get(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/head`, options), {
15294
+ params: new HttpParams().set('ruleSetKey', ruleSetKey),
15295
+ headers: this.resolveHeaders(options),
15296
+ });
15297
+ }
15298
+ prepareSnapshotComposition(request, options = {}) {
15299
+ return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/composition-manifest`, options), request, { headers: this.resolveHeaders(options) });
15300
+ }
15301
+ approveSnapshotComposition(request, options = {}) {
15302
+ return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/composition-approvals`, options), request, { headers: this.resolveHeaders(options) });
15303
+ }
15304
+ publishSnapshot(request, currentHeadEtag, options = {}) {
15305
+ let headers = this.resolveHeaders(options) ?? new HttpHeaders();
15306
+ headers = currentHeadEtag
15307
+ ? headers.set('If-Match', this.strongEntityTag(currentHeadEtag))
15308
+ : headers.set('If-None-Match', '*');
15309
+ return this.http.post(this.discovery.resolveHref(SNAPSHOTS_HREF, options), request, { headers });
15310
+ }
15311
+ activateSnapshot(snapshotKey, headEtag, options = {}) {
15312
+ const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
15313
+ return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/activate`, options), null, { headers: resolved.set('If-Match', this.strongEntityTag(headEtag)) });
15314
+ }
15315
+ rollbackSnapshot(snapshotKey, headEtag, options = {}) {
15316
+ const resolved = this.resolveHeaders(options) ?? new HttpHeaders();
15317
+ return this.http.post(this.discovery.resolveHref(`${SNAPSHOTS_HREF}/${encodeURIComponent(snapshotKey)}/rollback`, options), null, { headers: resolved.set('If-Match', this.strongEntityTag(headEtag)) });
15318
+ }
15264
15319
  buildParams(filters) {
15265
15320
  let params = new HttpParams();
15266
15321
  Object.entries(filters).forEach(([key, value]) => {
@@ -15270,6 +15325,15 @@ class DomainRuleService {
15270
15325
  });
15271
15326
  return params;
15272
15327
  }
15328
+ strongEntityTag(value) {
15329
+ const trimmed = value.trim();
15330
+ if (/^"[^"\r\n]*"$/.test(trimmed))
15331
+ return trimmed;
15332
+ if (!trimmed || /["\r\n,]/.test(trimmed) || /^W\//i.test(trimmed)) {
15333
+ throw new Error('The mutable-head ETag is not a valid strong entity tag.');
15334
+ }
15335
+ return `"${trimmed}"`;
15336
+ }
15273
15337
  resolveHeaders(options) {
15274
15338
  if (options.headers instanceof HttpHeaders) {
15275
15339
  return options.headers;
@@ -17840,7 +17904,7 @@ function normalizeUnknownError(rawError) {
17840
17904
  if (typeof candidate === 'string') {
17841
17905
  return normalizeFromParts('Error', candidate);
17842
17906
  }
17843
- if (isRecord$1(candidate)) {
17907
+ if (isRecord$2(candidate)) {
17844
17908
  const name = toText(candidate['name'], 'Error');
17845
17909
  const message = toText(candidate['message'], safeStringify(candidate));
17846
17910
  const stack = toStack(candidate['stack']);
@@ -17859,7 +17923,7 @@ function extractErrorCandidate(data) {
17859
17923
  if (data instanceof Error || typeof data === 'string') {
17860
17924
  return data;
17861
17925
  }
17862
- if (!isRecord$1(data)) {
17926
+ if (!isRecord$2(data)) {
17863
17927
  return undefined;
17864
17928
  }
17865
17929
  if ('error' in data) {
@@ -17877,7 +17941,7 @@ function extractErrorCandidate(data) {
17877
17941
  return undefined;
17878
17942
  }
17879
17943
  function unwrapRejection(error) {
17880
- if (!isRecord$1(error)) {
17944
+ if (!isRecord$2(error)) {
17881
17945
  return error;
17882
17946
  }
17883
17947
  if ('rejection' in error) {
@@ -17937,7 +18001,7 @@ function safeStringify(value) {
17937
18001
  return UNKNOWN_ERROR_MESSAGE;
17938
18002
  }
17939
18003
  }
17940
- function isRecord$1(value) {
18004
+ function isRecord$2(value) {
17941
18005
  return !!value && typeof value === 'object';
17942
18006
  }
17943
18007
 
@@ -20864,6 +20928,127 @@ function convertFormLayoutToConfig(formLayout) {
20864
20928
  return ensureIds({ sections });
20865
20929
  }
20866
20930
 
20931
+ /** Strictly normalizes the closed x-ui.formEffects payload. Invalid entries are ignored. */
20932
+ function normalizeFormEffects(value) {
20933
+ if (!Array.isArray(value)) {
20934
+ return [];
20935
+ }
20936
+ return value
20937
+ .map((candidate) => normalizeFormEffect(candidate))
20938
+ .filter((candidate) => candidate !== null);
20939
+ }
20940
+ function normalizeFormEffect(value) {
20941
+ if (!isRecord$1(value) || !hasOnlyKeys(value, ['id', 'trigger', 'operation', 'inputs', 'outputs'])) {
20942
+ return null;
20943
+ }
20944
+ const id = nonBlank(value['id']);
20945
+ const trigger = normalizeTrigger(value['trigger']);
20946
+ const operation = normalizeOperation(value['operation']);
20947
+ const inputs = normalizeInputs(value['inputs']);
20948
+ const outputs = normalizeOutputs(value['outputs']);
20949
+ if (!id || !trigger || !operation || !inputs.length || !outputs.length) {
20950
+ return null;
20951
+ }
20952
+ return { id, trigger, operation, inputs, outputs };
20953
+ }
20954
+ function normalizeTrigger(value) {
20955
+ if (!isRecord$1(value) || !hasOnlyKeys(value, ['event', 'fields', 'debounceMs', 'requiresValidSources'])) {
20956
+ return null;
20957
+ }
20958
+ const fields = stringArray(value['fields']);
20959
+ const debounceMs = value['debounceMs'];
20960
+ if (value['event'] !== 'value-change' ||
20961
+ !fields.length ||
20962
+ typeof debounceMs !== 'number' ||
20963
+ !Number.isInteger(debounceMs) ||
20964
+ debounceMs < 0 ||
20965
+ debounceMs > 60_000 ||
20966
+ typeof value['requiresValidSources'] !== 'boolean') {
20967
+ return null;
20968
+ }
20969
+ return {
20970
+ event: 'value-change',
20971
+ fields,
20972
+ debounceMs,
20973
+ requiresValidSources: value['requiresValidSources'],
20974
+ };
20975
+ }
20976
+ function normalizeOperation(value) {
20977
+ if (!isRecord$1(value) ||
20978
+ !hasOnlyKeys(value, ['operationId', 'path', 'method', 'requestSchemaUrl', 'responseSchemaUrl'])) {
20979
+ return null;
20980
+ }
20981
+ const operationId = nonBlank(value['operationId']);
20982
+ const path = nonBlank(value['path']);
20983
+ const requestSchemaUrl = nonBlank(value['requestSchemaUrl']);
20984
+ const responseSchemaUrl = nonBlank(value['responseSchemaUrl']);
20985
+ if (!operationId ||
20986
+ !path?.startsWith('/') ||
20987
+ value['method'] !== 'POST' ||
20988
+ !requestSchemaUrl?.startsWith('/schemas/filtered?') ||
20989
+ !responseSchemaUrl?.startsWith('/schemas/filtered?')) {
20990
+ return null;
20991
+ }
20992
+ return { operationId, path, method: 'POST', requestSchemaUrl, responseSchemaUrl };
20993
+ }
20994
+ function normalizeInputs(value) {
20995
+ if (!Array.isArray(value))
20996
+ return [];
20997
+ const result = [];
20998
+ const operationFields = new Set();
20999
+ for (const item of value) {
21000
+ if (!isRecord$1(item) || !hasOnlyKeys(item, ['formField', 'operationField']))
21001
+ return [];
21002
+ const formField = nonBlank(item['formField']);
21003
+ const operationField = nonBlank(item['operationField']);
21004
+ if (!formField || !operationField || operationFields.has(operationField))
21005
+ return [];
21006
+ operationFields.add(operationField);
21007
+ result.push({ formField, operationField });
21008
+ }
21009
+ return result;
21010
+ }
21011
+ function normalizeOutputs(value) {
21012
+ if (!Array.isArray(value))
21013
+ return [];
21014
+ const result = [];
21015
+ const formFields = new Set();
21016
+ for (const item of value) {
21017
+ if (!isRecord$1(item) || !hasOnlyKeys(item, ['operationField', 'formField', 'writePolicy']))
21018
+ return [];
21019
+ const operationField = nonBlank(item['operationField']);
21020
+ const formField = nonBlank(item['formField']);
21021
+ const writePolicy = item['writePolicy'];
21022
+ if (!operationField ||
21023
+ !formField ||
21024
+ formFields.has(formField) ||
21025
+ (writePolicy !== 'if-pristine' && writePolicy !== 'if-empty' && writePolicy !== 'replace')) {
21026
+ return [];
21027
+ }
21028
+ formFields.add(formField);
21029
+ result.push({ operationField, formField, writePolicy });
21030
+ }
21031
+ return result;
21032
+ }
21033
+ function stringArray(value) {
21034
+ if (!Array.isArray(value))
21035
+ return [];
21036
+ const values = value.map(nonBlank);
21037
+ if (values.some((item) => !item))
21038
+ return [];
21039
+ return [...new Set(values)];
21040
+ }
21041
+ function nonBlank(value) {
21042
+ return typeof value === 'string' && value.trim() ? value.trim() : null;
21043
+ }
21044
+ function isRecord$1(value) {
21045
+ return !!value && typeof value === 'object' && !Array.isArray(value);
21046
+ }
21047
+ function hasOnlyKeys(value, allowed) {
21048
+ const allowedSet = new Set(allowed);
21049
+ return Object.keys(value).every((key) => allowedSet.has(key));
21050
+ }
21051
+
20867
21052
  /**
20868
21053
  * Materializes a concrete FormConfig from a reusable editorial template.
20869
21054
  *
@@ -24284,14 +24469,62 @@ const GROUPED_COMMAND_FIXED_CONTROLS = new Set([
24284
24469
  ]);
24285
24470
  const KNOWN_FIELD_CONTROL_TYPES = new Set(Object.values(FieldControlType));
24286
24471
  /**
24287
- * Distributes the remainder of a generated grouped-command row without
24288
- * inventing arbitrary spans. The input order is the deterministic tie-breaker.
24289
- * Unknown, compact, upload and action controls remain unchanged.
24472
+ * Projects every visual row produced by responsive wrapping and distributes
24473
+ * its remainder without inventing arbitrary spans. Effective CSS `order` is
24474
+ * respected and the input order is the deterministic tie-breaker. Unknown,
24475
+ * compact, upload and action controls remain unchanged.
24290
24476
  */
24477
+ function projectGroupedCommandPartialRows(candidates, strategy = 'preserve') {
24478
+ const visualCandidates = candidates
24479
+ .map((candidate, index) => ({
24480
+ candidate,
24481
+ index,
24482
+ span: clampGridSpan(candidate.span),
24483
+ order: normalizeCandidateOrder(candidate.order),
24484
+ }))
24485
+ .sort((left, right) => left.order - right.order || left.index - right.index);
24486
+ const projected = candidates.map((candidate) => clampGridSpan(candidate.span));
24487
+ const visualRows = [];
24488
+ let visualRowStart = 0;
24489
+ let visualRowSpan = 0;
24490
+ const projectVisualRow = (endExclusive) => {
24491
+ const row = visualCandidates.slice(visualRowStart, endExclusive);
24492
+ if (!row.length)
24493
+ return;
24494
+ const rowCandidates = row.map((entry) => entry.candidate);
24495
+ const rowSpans = row.map((entry) => entry.span);
24496
+ const rowProjection = strategy === 'fill-compatible' && candidates.length >= 2
24497
+ ? fillGroupedCommandVisualRow(rowCandidates, rowSpans)
24498
+ : [...rowSpans];
24499
+ rowProjection.forEach((span, rowIndex) => {
24500
+ projected[row[rowIndex].index] = span;
24501
+ });
24502
+ visualRows.push({
24503
+ candidateIndexes: row.map((entry) => entry.index),
24504
+ canonicalSpans: rowSpans,
24505
+ projectedSpans: rowProjection,
24506
+ });
24507
+ };
24508
+ for (let index = 0; index < visualCandidates.length; index += 1) {
24509
+ const span = visualCandidates[index].span;
24510
+ if (visualRowSpan > 0 && visualRowSpan + span > 12) {
24511
+ projectVisualRow(index);
24512
+ visualRowStart = index;
24513
+ visualRowSpan = 0;
24514
+ }
24515
+ visualRowSpan += span;
24516
+ }
24517
+ projectVisualRow(visualCandidates.length);
24518
+ return { spans: projected, visualRows };
24519
+ }
24291
24520
  function resolveGroupedCommandPartialRowSpans(candidates, strategy = 'preserve') {
24292
- const resolved = candidates.map((candidate) => clampGridSpan(candidate.span));
24293
- if (strategy !== 'fill-compatible' || resolved.length < 2)
24294
- return resolved;
24521
+ return projectGroupedCommandPartialRows(candidates, strategy).spans;
24522
+ }
24523
+ function fillGroupedCommandVisualRow(candidates, rowSpans) {
24524
+ const resolved = [...rowSpans];
24525
+ if (resolved.length === 1) {
24526
+ return [isGroupedCommandExpansionEligible(candidates[0]) ? 12 : resolved[0]];
24527
+ }
24295
24528
  let remaining = 12 - resolved.reduce((total, span) => total + span, 0);
24296
24529
  if (remaining <= 0)
24297
24530
  return resolved;
@@ -24319,6 +24552,9 @@ function clampGridSpan(value) {
24319
24552
  return 12;
24320
24553
  return Math.max(1, Math.min(12, Math.round(value)));
24321
24554
  }
24555
+ function normalizeCandidateOrder(value) {
24556
+ return typeof value === 'number' && Number.isFinite(value) ? Math.round(value) : 0;
24557
+ }
24322
24558
  function nextCanonicalGroupedCommandSpan(span) {
24323
24559
  return GROUPED_COMMAND_CANONICAL_SPANS.find((candidate) => candidate > span) ?? null;
24324
24560
  }
@@ -41673,7 +41909,7 @@ class PraxisRelatedResourceOutletComponent {
41673
41909
  const discovery = this.injector.get(ResourceDiscoveryService);
41674
41910
  const catalog$ = discoverySource
41675
41911
  ? discovery.getSurfaces(discoverySource, options)
41676
- : discovery.fetchJson(href, options);
41912
+ : discovery.getSurfaces({ surfaces: { href: href } }, options);
41677
41913
  this.discoverySubscription = catalog$.subscribe({
41678
41914
  next: (response) => {
41679
41915
  if (this.discoveryRequestKey !== requestKey) {
@@ -43585,4 +43821,4 @@ function provideHookWhitelist(allowed) {
43585
43821
  * Generated bundle index. Do not edit.
43586
43822
  */
43587
43823
 
43588
- 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, 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 };
43824
+ 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, normalizeFormEffects, 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/core",
3
- "version": "9.0.4",
3
+ "version": "9.0.5-rc.10",
4
4
  "description": "Core library for Praxis UI Workspace: types, tokens, services and utilities shared across @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",