@praxisui/core 9.0.68-rc.1 → 9.0.68-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -5
- package/ai/component-registry.json +4 -4
- package/fesm2022/praxisui-core.mjs +537 -255
- package/package.json +1 -1
- package/types/praxisui-core.d.ts +41 -2
|
@@ -7542,6 +7542,70 @@ const COMPONENT_METADATA_REGISTRY_I18N_CONFIG = {
|
|
|
7542
7542
|
},
|
|
7543
7543
|
};
|
|
7544
7544
|
|
|
7545
|
+
/** Builtin fallback only; consumer dictionaries and translators retain precedence. */
|
|
7546
|
+
const WIDGET_SHELL_PRESET_DICTIONARIES = {
|
|
7547
|
+
'pt-BR': {
|
|
7548
|
+
'praxis.widgetShell.presets.dark-glass.label': "Vidro escuro",
|
|
7549
|
+
'praxis.widgetShell.presets.dark-glass.description': "Vidro fosco translúcido; usa fundo opaco quando a transparência é reduzida ou em tela cheia.",
|
|
7550
|
+
'praxis.widgetShell.presets.light-neutral.label': "Neutro adaptativo",
|
|
7551
|
+
'praxis.widgetShell.presets.light-neutral.description': "Superfície neutra sem sombra, que acompanha o tema claro ou escuro.",
|
|
7552
|
+
'praxis.widgetShell.presets.graphite.label': "Grafite",
|
|
7553
|
+
'praxis.widgetShell.presets.graphite.description': "Acabamento carvão opaco com cabeçalho cinza e texto claro, nos dois temas.",
|
|
7554
|
+
'praxis.widgetShell.presets.data-panel.label': "Painel de dados",
|
|
7555
|
+
'praxis.widgetShell.presets.data-panel.description': "Moldura compacta, cantos discretos e cabeçalho definido; não altera a densidade da tabela.",
|
|
7556
|
+
'praxis.widgetShell.presets.chart-panel.label': "Painel de gráfico",
|
|
7557
|
+
'praxis.widgetShell.presets.chart-panel.description': "Moldura leve com mais espaço para o gráfico; eixos, séries e legenda usam o preset do gráfico.",
|
|
7558
|
+
'praxis.widgetShell.presets.metric-panel.label': "Painel de indicadores",
|
|
7559
|
+
'praxis.widgetShell.presets.metric-panel.description': "Superfície tonal com cabeçalho discreto; o componente interno define o valor e a comparação.",
|
|
7560
|
+
'praxis.widgetShell.presets.executive-card.label': "Card executivo",
|
|
7561
|
+
'praxis.widgetShell.presets.executive-card.description': "Cabeçalho na cor de destaque, título maior e corpo espaçoso para síntese e decisão.",
|
|
7562
|
+
'praxis.widgetShell.presets.filter-bar.label': "Barra de filtros",
|
|
7563
|
+
'praxis.widgetShell.presets.filter-bar.description': "Cápsula para resumos ou filtros compactos; não é indicada para painéis altos.",
|
|
7564
|
+
'praxis.widgetShell.presets.integratedCard.label': 'Card integrado',
|
|
7565
|
+
'praxis.widgetShell.presets.integratedCard.description': 'Uma superfície contínua para cabeçalho, ações e corpo do widget.',
|
|
7566
|
+
'praxis.widgetShell.presets.outlinedCard.label': 'Card contornado',
|
|
7567
|
+
'praxis.widgetShell.presets.outlinedCard.description': 'Superfície contínua e discreta, com contorno externo e sem sombra.',
|
|
7568
|
+
'praxis.widgetShell.presets.elevatedCard.label': 'Card elevado',
|
|
7569
|
+
'praxis.widgetShell.presets.elevatedCard.description': 'Superfície contínua separada da página por uma sombra suave.',
|
|
7570
|
+
'praxis.widgetShell.presets.tonalCard.label': 'Card tonal',
|
|
7571
|
+
'praxis.widgetShell.presets.tonalCard.description': 'Superfície contínua levemente tonalizada e com elevação mínima.',
|
|
7572
|
+
'praxis.widgetShell.presets.sectionedCard.label': 'Card seccionado',
|
|
7573
|
+
'praxis.widgetShell.presets.sectionedCard.description': 'Cabeçalho destacado para conteúdos operacionais densos.',
|
|
7574
|
+
'praxis.widgetShell.presets.frameless.label': 'Sem moldura',
|
|
7575
|
+
'praxis.widgetShell.presets.frameless.description': 'Sem superfície externa, contorno ou sombra; mantém o recuo de leitura do conteúdo.',
|
|
7576
|
+
},
|
|
7577
|
+
'en-US': {
|
|
7578
|
+
'praxis.widgetShell.presets.dark-glass.label': "Dark glass",
|
|
7579
|
+
'praxis.widgetShell.presets.dark-glass.description': "Translucent frosted glass; uses an opaque surface with reduced transparency or fullscreen.",
|
|
7580
|
+
'praxis.widgetShell.presets.light-neutral.label': "Adaptive neutral",
|
|
7581
|
+
'praxis.widgetShell.presets.light-neutral.description': "A neutral shadow-free surface that follows the light or dark theme.",
|
|
7582
|
+
'praxis.widgetShell.presets.graphite.label': "Graphite",
|
|
7583
|
+
'praxis.widgetShell.presets.graphite.description': "Opaque charcoal finish with a gray header and light text in both themes.",
|
|
7584
|
+
'praxis.widgetShell.presets.data-panel.label': "Data panel",
|
|
7585
|
+
'praxis.widgetShell.presets.data-panel.description': "Compact framing, small corners and a defined header; does not change table density.",
|
|
7586
|
+
'praxis.widgetShell.presets.chart-panel.label': "Chart panel",
|
|
7587
|
+
'praxis.widgetShell.presets.chart-panel.description': "Light framing with more chart space; axes, series and legend use the chart preset.",
|
|
7588
|
+
'praxis.widgetShell.presets.metric-panel.label': "Metric panel",
|
|
7589
|
+
'praxis.widgetShell.presets.metric-panel.description': "A tonal surface with a quiet header; the inner component defines the value and comparison.",
|
|
7590
|
+
'praxis.widgetShell.presets.executive-card.label': "Executive card",
|
|
7591
|
+
'praxis.widgetShell.presets.executive-card.description': "An accent-colored header, larger title and spacious body for summaries and decisions.",
|
|
7592
|
+
'praxis.widgetShell.presets.filter-bar.label': "Filter bar",
|
|
7593
|
+
'praxis.widgetShell.presets.filter-bar.description': "A capsule for summaries or compact filters; not intended for tall panels.",
|
|
7594
|
+
'praxis.widgetShell.presets.integratedCard.label': 'Integrated card',
|
|
7595
|
+
'praxis.widgetShell.presets.integratedCard.description': 'One continuous surface for the header, actions and widget body.',
|
|
7596
|
+
'praxis.widgetShell.presets.outlinedCard.label': 'Outlined card',
|
|
7597
|
+
'praxis.widgetShell.presets.outlinedCard.description': 'A quiet continuous surface with a clear outer outline and no shadow.',
|
|
7598
|
+
'praxis.widgetShell.presets.elevatedCard.label': 'Elevated card',
|
|
7599
|
+
'praxis.widgetShell.presets.elevatedCard.description': 'A continuous surface separated from the page by a soft shadow.',
|
|
7600
|
+
'praxis.widgetShell.presets.tonalCard.label': 'Tonal card',
|
|
7601
|
+
'praxis.widgetShell.presets.tonalCard.description': 'A softly tinted continuous surface with minimal elevation.',
|
|
7602
|
+
'praxis.widgetShell.presets.sectionedCard.label': 'Sectioned card',
|
|
7603
|
+
'praxis.widgetShell.presets.sectionedCard.description': 'A distinct header layer for dense operational content.',
|
|
7604
|
+
'praxis.widgetShell.presets.frameless.label': 'Frameless',
|
|
7605
|
+
'praxis.widgetShell.presets.frameless.description': 'No outer surface, outline or shadow; keeps the content reading inset.',
|
|
7606
|
+
},
|
|
7607
|
+
};
|
|
7608
|
+
|
|
7545
7609
|
function interpolatePraxisTranslation(template, params) {
|
|
7546
7610
|
if (!template || !params)
|
|
7547
7611
|
return template;
|
|
@@ -7622,7 +7686,9 @@ class PraxisI18nService {
|
|
|
7622
7686
|
tForLocale(locale, key, params, fallback, namespace) {
|
|
7623
7687
|
const message = this.translateExternally(key, params, fallback)
|
|
7624
7688
|
?? this.lookupInHierarchy(key, locale, namespace)
|
|
7689
|
+
?? this.lookupBuiltinShellPreset(key, locale)
|
|
7625
7690
|
?? this.lookupInHierarchy(key, this.getFallbackLocale(), namespace)
|
|
7691
|
+
?? this.lookupBuiltinShellPreset(key, this.getFallbackLocale())
|
|
7626
7692
|
?? fallback
|
|
7627
7693
|
?? key;
|
|
7628
7694
|
return interpolatePraxisTranslation(message, params);
|
|
@@ -7741,6 +7807,10 @@ class PraxisI18nService {
|
|
|
7741
7807
|
}
|
|
7742
7808
|
return undefined;
|
|
7743
7809
|
}
|
|
7810
|
+
lookupBuiltinShellPreset(key, locale) {
|
|
7811
|
+
const value = WIDGET_SHELL_PRESET_DICTIONARIES[locale]?.[key];
|
|
7812
|
+
return typeof value === 'string' ? value : undefined;
|
|
7813
|
+
}
|
|
7744
7814
|
lookupInHierarchy(key, locale, namespace) {
|
|
7745
7815
|
const local = this.lookup(key, locale, namespace);
|
|
7746
7816
|
if (local)
|
|
@@ -12286,6 +12356,8 @@ class DynamicFormService {
|
|
|
12286
12356
|
isMultipleField(meta) {
|
|
12287
12357
|
return (meta.controlType === FieldControlType.MULTI_SELECT ||
|
|
12288
12358
|
meta.multiple === true ||
|
|
12359
|
+
meta.dataType === 'array' ||
|
|
12360
|
+
meta.type === 'array' ||
|
|
12289
12361
|
(meta.controlType === FieldControlType.CHECKBOX &&
|
|
12290
12362
|
this.hasCheckboxOptions(meta)));
|
|
12291
12363
|
}
|
|
@@ -12366,8 +12438,6 @@ class DynamicFormService {
|
|
|
12366
12438
|
}
|
|
12367
12439
|
isArrayMetadata(meta) {
|
|
12368
12440
|
return (meta.controlType === FieldControlType.ARRAY_INPUT ||
|
|
12369
|
-
meta.dataType === 'array' ||
|
|
12370
|
-
meta.type === 'array' ||
|
|
12371
12441
|
!!meta.array);
|
|
12372
12442
|
}
|
|
12373
12443
|
getArrayConfig(meta) {
|
|
@@ -12557,15 +12627,13 @@ class DynamicFormService {
|
|
|
12557
12627
|
* - Valor inicial: [] para campos múltiplos quando ausente; caso contrário defaultValue.
|
|
12558
12628
|
*/
|
|
12559
12629
|
createControlFromField(field) {
|
|
12560
|
-
if (field
|
|
12561
|
-
field.type === 'array' ||
|
|
12562
|
-
!!field.array) {
|
|
12630
|
+
if (this.isArrayMetadata(mapFieldDefinitionToMetadata(field))) {
|
|
12563
12631
|
return this.createArrayControlFromMetadata(mapFieldDefinitionToMetadata(field));
|
|
12564
12632
|
}
|
|
12565
12633
|
const { validators, asyncValidators } = this.buildFromFieldDefinition(field);
|
|
12566
12634
|
const updateOn = this.getUpdateOnFromField(field);
|
|
12567
12635
|
const initialValue = field.defaultValue ?? null;
|
|
12568
|
-
const value = field
|
|
12636
|
+
const value = this.isMultipleField(mapFieldDefinitionToMetadata(field)) && initialValue == null ? [] : initialValue;
|
|
12569
12637
|
const ctrl = new FormControl({ value, disabled: !!field.disabled }, {
|
|
12570
12638
|
validators,
|
|
12571
12639
|
asyncValidators,
|
|
@@ -12613,9 +12681,7 @@ class DynamicFormService {
|
|
|
12613
12681
|
this.addControlFromField(form, field, opts);
|
|
12614
12682
|
return;
|
|
12615
12683
|
}
|
|
12616
|
-
if (field
|
|
12617
|
-
field.type === 'array' ||
|
|
12618
|
-
!!field.array) {
|
|
12684
|
+
if (this.isArrayMetadata(mapFieldDefinitionToMetadata(field))) {
|
|
12619
12685
|
const metadata = mapFieldDefinitionToMetadata(field);
|
|
12620
12686
|
control.setValidators(this.buildArrayValidators(metadata));
|
|
12621
12687
|
if (field.disabled)
|
|
@@ -16678,6 +16744,16 @@ class ResourceActionOpenAdapterService {
|
|
|
16678
16744
|
schemaType: 'request',
|
|
16679
16745
|
groupedCommand: {
|
|
16680
16746
|
partialRowStrategy: 'fill-compatible',
|
|
16747
|
+
// These fields are supplied by the governed selection, not edited as
|
|
16748
|
+
// command fields. Keep them in the form/payload through contextFields.
|
|
16749
|
+
...(action.scope === 'COLLECTION' && action.execution?.selection?.idsField
|
|
16750
|
+
? { contextFields: [
|
|
16751
|
+
action.execution.selection.idsField,
|
|
16752
|
+
...(action.execution.preconditions.resourceVersionTransport === 'SELECTION_MAP'
|
|
16753
|
+
&& action.execution.selection.versionsField
|
|
16754
|
+
? [action.execution.selection.versionsField] : []),
|
|
16755
|
+
] }
|
|
16756
|
+
: {}),
|
|
16681
16757
|
},
|
|
16682
16758
|
},
|
|
16683
16759
|
schemaUrl: resolvedRequestSchemaUrl,
|
|
@@ -16740,8 +16816,9 @@ class ResourceActionOpenAdapterService {
|
|
|
16740
16816
|
if (requiresFormConfirmation && !confirmationMessage) {
|
|
16741
16817
|
throw new Error(`ResourceActionOpenAdapterService requires description or title for confirmed FORM action "${action.id}".`);
|
|
16742
16818
|
}
|
|
16743
|
-
const
|
|
16744
|
-
|
|
16819
|
+
const perItem = action.execution?.outcome.mode === 'PER_ITEM';
|
|
16820
|
+
const successMessage = perItem ? '' : String(action.successMessage ?? '').trim();
|
|
16821
|
+
if (!confirmationMessage && !successMessage && !perItem) {
|
|
16745
16822
|
return;
|
|
16746
16823
|
}
|
|
16747
16824
|
const inputs = payload.widget.inputs;
|
|
@@ -16753,6 +16830,16 @@ class ResourceActionOpenAdapterService {
|
|
|
16753
16830
|
submit: confirmationMessage,
|
|
16754
16831
|
};
|
|
16755
16832
|
}
|
|
16833
|
+
if (perItem) {
|
|
16834
|
+
// HTTP success means the batch was processed, not that every item succeeded.
|
|
16835
|
+
// The opening consumer presents the canonical per-item surface outcome.
|
|
16836
|
+
currentMessages['createRegistrySuccess'] = '';
|
|
16837
|
+
currentMessages['updateRegistrySuccess'] = '';
|
|
16838
|
+
currentMessages['customActions'] = {
|
|
16839
|
+
...(currentMessages['customActions'] ?? {}),
|
|
16840
|
+
submit: { success: '' },
|
|
16841
|
+
};
|
|
16842
|
+
}
|
|
16756
16843
|
if (successMessage) {
|
|
16757
16844
|
const customActions = {
|
|
16758
16845
|
...(currentMessages['customActions'] ?? {}),
|
|
@@ -25771,7 +25858,10 @@ const ValidationPattern = {
|
|
|
25771
25858
|
|
|
25772
25859
|
function materializeFormLayoutFromMetadata(fields, options = {}) {
|
|
25773
25860
|
const policy = normalizeLayoutPolicy(options.policy);
|
|
25774
|
-
const
|
|
25861
|
+
const contextFields = policy.preset === 'groupedCommand'
|
|
25862
|
+
? groupedCommandContextFields(policy) : new Set();
|
|
25863
|
+
const visibleFields = normalizeFields(resolveRelationPresentationFields(fields, policy), true).filter(field => options.includeHidden === true || !isFormHidden(field)
|
|
25864
|
+
|| contextFields.has(field.name));
|
|
25775
25865
|
const layoutFields = fieldsForLayoutPolicy(visibleFields, policy);
|
|
25776
25866
|
const groupedFields = groupFields(layoutFields);
|
|
25777
25867
|
const sections = groupedFields.map(([groupKey, groupFields], sectionIndex) => createSection(groupKey, groupFields, sectionIndex, policy, options));
|
|
@@ -32974,10 +33064,7 @@ function getWidgetShellActionIdError(id, siblingIds = []) {
|
|
|
32974
33064
|
return null;
|
|
32975
33065
|
}
|
|
32976
33066
|
|
|
32977
|
-
|
|
32978
|
-
const outlinedSurface = 'var(--md-sys-color-surface)';
|
|
32979
|
-
const elevatedSurface = 'var(--md-sys-color-surface-container-lowest)';
|
|
32980
|
-
const tonalSurface = 'color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%)';
|
|
33067
|
+
/** Canonical shell finishes; content behavior belongs to the projected component. */
|
|
32981
33068
|
const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
32982
33069
|
{
|
|
32983
33070
|
id: 'integrated-card',
|
|
@@ -32992,13 +33079,13 @@ const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
|
32992
33079
|
category: 'single-surface',
|
|
32993
33080
|
appearance: {
|
|
32994
33081
|
card: {
|
|
32995
|
-
background:
|
|
33082
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-primary-container) 6%)',
|
|
32996
33083
|
borderColor: 'color-mix(in srgb, var(--md-sys-color-outline-variant) 76%, transparent)',
|
|
32997
33084
|
borderRadius: '12px',
|
|
32998
33085
|
shadow: '0 6px 18px color-mix(in srgb, var(--md-sys-color-shadow, #000) 7%, transparent)',
|
|
32999
33086
|
},
|
|
33000
33087
|
header: {
|
|
33001
|
-
background:
|
|
33088
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-primary-container) 6%)',
|
|
33002
33089
|
borderColor: 'transparent',
|
|
33003
33090
|
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33004
33091
|
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
@@ -33024,13 +33111,13 @@ const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
|
33024
33111
|
category: 'single-surface',
|
|
33025
33112
|
appearance: {
|
|
33026
33113
|
card: {
|
|
33027
|
-
background:
|
|
33028
|
-
borderColor: '
|
|
33114
|
+
background: 'var(--md-sys-color-surface)',
|
|
33115
|
+
borderColor: 'var(--md-sys-color-outline)',
|
|
33029
33116
|
borderRadius: '12px',
|
|
33030
33117
|
shadow: 'none',
|
|
33031
33118
|
},
|
|
33032
33119
|
header: {
|
|
33033
|
-
background:
|
|
33120
|
+
background: 'var(--md-sys-color-surface)',
|
|
33034
33121
|
borderColor: 'transparent',
|
|
33035
33122
|
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33036
33123
|
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
@@ -33056,13 +33143,13 @@ const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
|
33056
33143
|
category: 'single-surface',
|
|
33057
33144
|
appearance: {
|
|
33058
33145
|
card: {
|
|
33059
|
-
background:
|
|
33146
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 88%, var(--md-sys-color-surface) 12%)',
|
|
33060
33147
|
borderColor: 'color-mix(in srgb, var(--md-sys-color-outline-variant) 46%, transparent)',
|
|
33061
33148
|
borderRadius: '14px',
|
|
33062
|
-
shadow: '0
|
|
33149
|
+
shadow: '0 2px 4px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent), 0 14px 32px color-mix(in srgb, var(--md-sys-color-shadow, #000) 16%, transparent)',
|
|
33063
33150
|
},
|
|
33064
33151
|
header: {
|
|
33065
|
-
background:
|
|
33152
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 88%, var(--md-sys-color-surface) 12%)',
|
|
33066
33153
|
borderColor: 'transparent',
|
|
33067
33154
|
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33068
33155
|
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
@@ -33088,13 +33175,13 @@ const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
|
33088
33175
|
category: 'single-surface',
|
|
33089
33176
|
appearance: {
|
|
33090
33177
|
card: {
|
|
33091
|
-
background:
|
|
33178
|
+
background: 'color-mix(in srgb, var(--md-sys-color-primary-container) 66%, var(--md-sys-color-surface) 34%)',
|
|
33092
33179
|
borderColor: 'color-mix(in srgb, var(--md-sys-color-primary) 18%, transparent)',
|
|
33093
33180
|
borderRadius: '12px',
|
|
33094
33181
|
shadow: 'none',
|
|
33095
33182
|
},
|
|
33096
33183
|
header: {
|
|
33097
|
-
background:
|
|
33184
|
+
background: 'color-mix(in srgb, var(--md-sys-color-primary-container) 66%, var(--md-sys-color-surface) 34%)',
|
|
33098
33185
|
borderColor: 'transparent',
|
|
33099
33186
|
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33100
33187
|
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
@@ -33126,7 +33213,7 @@ const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
|
33126
33213
|
shadow: '0 5px 16px color-mix(in srgb, var(--md-sys-color-shadow, #000) 7%, transparent)',
|
|
33127
33214
|
},
|
|
33128
33215
|
header: {
|
|
33129
|
-
background: '
|
|
33216
|
+
background: 'var(--md-sys-color-surface-container-high)',
|
|
33130
33217
|
borderColor: 'color-mix(in srgb, var(--md-sys-color-outline-variant) 62%, transparent)',
|
|
33131
33218
|
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33132
33219
|
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
@@ -33171,256 +33258,280 @@ const BUILTIN_WIDGET_SHELL_PRESETS = [
|
|
|
33171
33258
|
},
|
|
33172
33259
|
},
|
|
33173
33260
|
{
|
|
33174
|
-
|
|
33175
|
-
|
|
33176
|
-
|
|
33177
|
-
|
|
33261
|
+
id: 'dark-glass',
|
|
33262
|
+
label: {
|
|
33263
|
+
key: 'praxis.widgetShell.presets.dark-glass.label',
|
|
33264
|
+
text: 'Dark glass',
|
|
33178
33265
|
},
|
|
33179
|
-
|
|
33180
|
-
|
|
33181
|
-
|
|
33266
|
+
description: {
|
|
33267
|
+
key: 'praxis.widgetShell.presets.dark-glass.description',
|
|
33268
|
+
text: 'Translucent frosted glass; uses an opaque surface with reduced transparency or fullscreen.',
|
|
33182
33269
|
},
|
|
33183
|
-
|
|
33184
|
-
|
|
33185
|
-
|
|
33186
|
-
|
|
33187
|
-
|
|
33188
|
-
|
|
33189
|
-
|
|
33270
|
+
category: 'sectioned',
|
|
33271
|
+
appearance: {
|
|
33272
|
+
card: {
|
|
33273
|
+
background: 'linear-gradient(135deg, rgba(11,18,32,0.82), rgba(11,18,32,0.68))',
|
|
33274
|
+
borderColor: 'rgba(255,255,255,0.28)',
|
|
33275
|
+
borderRadius: '16px',
|
|
33276
|
+
shadow: 'inset 0 1px 0 rgba(255,255,255,0.14), 0 12px 26px rgba(0,0,0,0.24)',
|
|
33277
|
+
backdropFilter: 'blur(16px) saturate(125%)',
|
|
33278
|
+
fallbackBackground: '#0b1220',
|
|
33190
33279
|
},
|
|
33191
|
-
|
|
33192
|
-
|
|
33193
|
-
|
|
33194
|
-
|
|
33280
|
+
header: {
|
|
33281
|
+
background: 'transparent',
|
|
33282
|
+
borderColor: 'rgba(255,255,255,0.12)',
|
|
33283
|
+
titleColor: '#e6edf3',
|
|
33284
|
+
subtitleColor: '#d3deed',
|
|
33285
|
+
iconColor: '#8ab4ff',
|
|
33195
33286
|
},
|
|
33196
|
-
|
|
33197
|
-
|
|
33198
|
-
|
|
33199
|
-
|
|
33200
|
-
|
|
33201
|
-
|
|
33287
|
+
body: {
|
|
33288
|
+
background: 'transparent',
|
|
33289
|
+
textColor: '#e6edf3',
|
|
33290
|
+
},
|
|
33291
|
+
typography: {
|
|
33292
|
+
titleSize: '14px',
|
|
33293
|
+
titleWeight: '600',
|
|
33294
|
+
subtitleSize: '12px',
|
|
33295
|
+
},
|
|
33296
|
+
},
|
|
33202
33297
|
},
|
|
33203
33298
|
{
|
|
33204
|
-
|
|
33205
|
-
|
|
33206
|
-
|
|
33207
|
-
|
|
33299
|
+
id: 'light-neutral',
|
|
33300
|
+
label: {
|
|
33301
|
+
key: 'praxis.widgetShell.presets.light-neutral.label',
|
|
33302
|
+
text: 'Adaptive neutral',
|
|
33208
33303
|
},
|
|
33209
|
-
|
|
33210
|
-
|
|
33211
|
-
|
|
33304
|
+
description: {
|
|
33305
|
+
key: 'praxis.widgetShell.presets.light-neutral.description',
|
|
33306
|
+
text: 'A neutral shadow-free surface that follows the light or dark theme.',
|
|
33212
33307
|
},
|
|
33213
|
-
|
|
33214
|
-
|
|
33215
|
-
|
|
33216
|
-
|
|
33217
|
-
|
|
33218
|
-
|
|
33219
|
-
|
|
33308
|
+
category: 'sectioned',
|
|
33309
|
+
appearance: {
|
|
33310
|
+
card: {
|
|
33311
|
+
background: 'var(--md-sys-color-surface)',
|
|
33312
|
+
borderColor: 'color-mix(in srgb, var(--md-sys-color-outline-variant) 82%, transparent)',
|
|
33313
|
+
borderRadius: '12px',
|
|
33314
|
+
shadow: 'none',
|
|
33220
33315
|
},
|
|
33221
|
-
|
|
33222
|
-
|
|
33223
|
-
|
|
33224
|
-
|
|
33225
|
-
|
|
33226
|
-
|
|
33316
|
+
header: {
|
|
33317
|
+
background: 'transparent',
|
|
33318
|
+
borderColor: 'transparent',
|
|
33319
|
+
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33320
|
+
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
33321
|
+
iconColor: 'var(--md-sys-color-primary)',
|
|
33227
33322
|
},
|
|
33228
|
-
|
|
33229
|
-
|
|
33230
|
-
|
|
33231
|
-
}
|
|
33232
|
-
}
|
|
33323
|
+
body: {
|
|
33324
|
+
background: 'var(--md-sys-color-surface)',
|
|
33325
|
+
textColor: 'var(--md-sys-color-on-surface)',
|
|
33326
|
+
},
|
|
33327
|
+
},
|
|
33233
33328
|
},
|
|
33234
33329
|
{
|
|
33235
|
-
|
|
33236
|
-
|
|
33237
|
-
|
|
33238
|
-
|
|
33330
|
+
id: 'graphite',
|
|
33331
|
+
label: {
|
|
33332
|
+
key: 'praxis.widgetShell.presets.graphite.label',
|
|
33333
|
+
text: 'Graphite',
|
|
33239
33334
|
},
|
|
33240
|
-
|
|
33241
|
-
|
|
33242
|
-
|
|
33335
|
+
description: {
|
|
33336
|
+
key: 'praxis.widgetShell.presets.graphite.description',
|
|
33337
|
+
text: 'Opaque charcoal finish with a gray header and light text in both themes.',
|
|
33243
33338
|
},
|
|
33244
|
-
|
|
33245
|
-
|
|
33246
|
-
|
|
33247
|
-
|
|
33248
|
-
|
|
33249
|
-
|
|
33250
|
-
|
|
33339
|
+
category: 'sectioned',
|
|
33340
|
+
appearance: {
|
|
33341
|
+
card: {
|
|
33342
|
+
background: '#272b30',
|
|
33343
|
+
borderColor: '#565d66',
|
|
33344
|
+
borderRadius: '8px',
|
|
33345
|
+
shadow: 'none',
|
|
33251
33346
|
},
|
|
33252
|
-
|
|
33253
|
-
|
|
33254
|
-
|
|
33255
|
-
|
|
33256
|
-
|
|
33257
|
-
|
|
33347
|
+
header: {
|
|
33348
|
+
background: '#33383f',
|
|
33349
|
+
borderColor: '#565d66',
|
|
33350
|
+
titleColor: '#f2f4f7',
|
|
33351
|
+
subtitleColor: '#c4cad2',
|
|
33352
|
+
iconColor: '#d5dae2',
|
|
33258
33353
|
},
|
|
33259
|
-
|
|
33260
|
-
|
|
33261
|
-
|
|
33262
|
-
|
|
33263
|
-
|
|
33354
|
+
body: {
|
|
33355
|
+
background: 'transparent',
|
|
33356
|
+
textColor: '#f2f4f7',
|
|
33357
|
+
padding: '12px',
|
|
33358
|
+
},
|
|
33359
|
+
},
|
|
33264
33360
|
},
|
|
33265
33361
|
{
|
|
33266
|
-
|
|
33267
|
-
|
|
33268
|
-
|
|
33269
|
-
|
|
33362
|
+
id: 'data-panel',
|
|
33363
|
+
label: {
|
|
33364
|
+
key: 'praxis.widgetShell.presets.data-panel.label',
|
|
33365
|
+
text: 'Data panel',
|
|
33270
33366
|
},
|
|
33271
|
-
|
|
33272
|
-
|
|
33273
|
-
|
|
33367
|
+
description: {
|
|
33368
|
+
key: 'praxis.widgetShell.presets.data-panel.description',
|
|
33369
|
+
text: 'Compact framing, small corners and a defined header; does not change table density.',
|
|
33274
33370
|
},
|
|
33275
|
-
|
|
33276
|
-
|
|
33277
|
-
|
|
33278
|
-
|
|
33279
|
-
|
|
33280
|
-
|
|
33281
|
-
|
|
33371
|
+
category: 'sectioned',
|
|
33372
|
+
appearance: {
|
|
33373
|
+
card: {
|
|
33374
|
+
background: 'var(--md-sys-color-surface)',
|
|
33375
|
+
borderColor: 'var(--md-sys-color-outline)',
|
|
33376
|
+
borderRadius: '4px',
|
|
33377
|
+
shadow: 'none',
|
|
33282
33378
|
},
|
|
33283
|
-
|
|
33284
|
-
|
|
33285
|
-
|
|
33286
|
-
|
|
33287
|
-
|
|
33288
|
-
|
|
33379
|
+
header: {
|
|
33380
|
+
background: 'var(--md-sys-color-surface-container-highest)',
|
|
33381
|
+
borderColor: 'var(--md-sys-color-outline)',
|
|
33382
|
+
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33383
|
+
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
33384
|
+
iconColor: 'var(--md-sys-color-primary)',
|
|
33289
33385
|
},
|
|
33290
|
-
|
|
33291
|
-
|
|
33292
|
-
|
|
33293
|
-
|
|
33294
|
-
}
|
|
33295
|
-
|
|
33386
|
+
body: {
|
|
33387
|
+
background: 'var(--md-sys-color-surface)',
|
|
33388
|
+
textColor: 'var(--md-sys-color-on-surface)',
|
|
33389
|
+
padding: '8px',
|
|
33390
|
+
},
|
|
33391
|
+
typography: {
|
|
33392
|
+
titleSize: '12px',
|
|
33393
|
+
titleWeight: '700',
|
|
33394
|
+
subtitleSize: '11px',
|
|
33395
|
+
},
|
|
33396
|
+
},
|
|
33296
33397
|
},
|
|
33297
33398
|
{
|
|
33298
|
-
|
|
33299
|
-
|
|
33300
|
-
|
|
33301
|
-
|
|
33399
|
+
id: 'chart-panel',
|
|
33400
|
+
label: {
|
|
33401
|
+
key: 'praxis.widgetShell.presets.chart-panel.label',
|
|
33402
|
+
text: 'Chart panel',
|
|
33302
33403
|
},
|
|
33303
|
-
|
|
33304
|
-
|
|
33305
|
-
|
|
33404
|
+
description: {
|
|
33405
|
+
key: 'praxis.widgetShell.presets.chart-panel.description',
|
|
33406
|
+
text: 'Light framing with more chart space; axes, series and legend use the chart preset.',
|
|
33407
|
+
},
|
|
33408
|
+
category: 'sectioned',
|
|
33409
|
+
appearance: {
|
|
33410
|
+
card: {
|
|
33411
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%)',
|
|
33412
|
+
borderColor: 'color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-outline-variant) 62%)',
|
|
33413
|
+
borderRadius: '12px',
|
|
33414
|
+
shadow: 'none',
|
|
33415
|
+
},
|
|
33416
|
+
header: {
|
|
33417
|
+
background: 'transparent',
|
|
33418
|
+
borderColor: 'color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent)',
|
|
33419
|
+
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33420
|
+
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
33421
|
+
iconColor: 'var(--md-sys-color-primary)',
|
|
33422
|
+
},
|
|
33423
|
+
body: {
|
|
33424
|
+
background: 'transparent',
|
|
33425
|
+
textColor: 'var(--md-sys-color-on-surface)',
|
|
33426
|
+
padding: '16px',
|
|
33427
|
+
},
|
|
33306
33428
|
},
|
|
33307
|
-
"category": "sectioned",
|
|
33308
|
-
"appearance": {
|
|
33309
|
-
"card": {
|
|
33310
|
-
"background": "color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%)",
|
|
33311
|
-
"borderColor": "color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-outline-variant) 62%)",
|
|
33312
|
-
"borderRadius": "12px",
|
|
33313
|
-
"shadow": "0 10px 24px color-mix(in srgb, var(--md-sys-color-shadow, #000) 9%, transparent)"
|
|
33314
|
-
},
|
|
33315
|
-
"header": {
|
|
33316
|
-
"background": "color-mix(in srgb, var(--md-sys-color-primary-container) 22%, transparent)",
|
|
33317
|
-
"borderColor": "color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent)",
|
|
33318
|
-
"titleColor": "var(--md-sys-color-on-surface)",
|
|
33319
|
-
"subtitleColor": "var(--md-sys-color-on-surface-variant)",
|
|
33320
|
-
"iconColor": "var(--md-sys-color-primary)"
|
|
33321
|
-
},
|
|
33322
|
-
"body": {
|
|
33323
|
-
"background": "transparent",
|
|
33324
|
-
"textColor": "var(--md-sys-color-on-surface)",
|
|
33325
|
-
"padding": "12px"
|
|
33326
|
-
}
|
|
33327
|
-
}
|
|
33328
33429
|
},
|
|
33329
33430
|
{
|
|
33330
|
-
|
|
33331
|
-
|
|
33332
|
-
|
|
33333
|
-
|
|
33431
|
+
id: 'metric-panel',
|
|
33432
|
+
label: {
|
|
33433
|
+
key: 'praxis.widgetShell.presets.metric-panel.label',
|
|
33434
|
+
text: 'Metric panel',
|
|
33334
33435
|
},
|
|
33335
|
-
|
|
33336
|
-
|
|
33337
|
-
|
|
33436
|
+
description: {
|
|
33437
|
+
key: 'praxis.widgetShell.presets.metric-panel.description',
|
|
33438
|
+
text: 'A tonal surface with a quiet header; the inner component defines the value and comparison.',
|
|
33338
33439
|
},
|
|
33339
|
-
|
|
33340
|
-
|
|
33341
|
-
|
|
33342
|
-
|
|
33343
|
-
|
|
33344
|
-
|
|
33345
|
-
|
|
33440
|
+
category: 'sectioned',
|
|
33441
|
+
appearance: {
|
|
33442
|
+
card: {
|
|
33443
|
+
background: 'color-mix(in srgb, var(--md-sys-color-primary-container) 44%, var(--md-sys-color-surface) 56%)',
|
|
33444
|
+
borderColor: 'color-mix(in srgb, var(--md-sys-color-primary) 24%, transparent)',
|
|
33445
|
+
borderRadius: '10px',
|
|
33446
|
+
shadow: '0 8px 18px color-mix(in srgb, var(--md-sys-color-shadow, #000) 8%, transparent)',
|
|
33346
33447
|
},
|
|
33347
|
-
|
|
33348
|
-
|
|
33349
|
-
|
|
33350
|
-
|
|
33351
|
-
|
|
33352
|
-
|
|
33448
|
+
header: {
|
|
33449
|
+
background: 'transparent',
|
|
33450
|
+
borderColor: 'transparent',
|
|
33451
|
+
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33452
|
+
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
33453
|
+
iconColor: 'var(--md-sys-color-primary)',
|
|
33353
33454
|
},
|
|
33354
|
-
|
|
33355
|
-
|
|
33356
|
-
|
|
33357
|
-
|
|
33358
|
-
}
|
|
33359
|
-
|
|
33455
|
+
body: {
|
|
33456
|
+
background: 'transparent',
|
|
33457
|
+
textColor: 'var(--md-sys-color-on-surface)',
|
|
33458
|
+
padding: '16px',
|
|
33459
|
+
},
|
|
33460
|
+
typography: {
|
|
33461
|
+
titleSize: '12px',
|
|
33462
|
+
titleWeight: '600',
|
|
33463
|
+
subtitleSize: '11px',
|
|
33464
|
+
},
|
|
33465
|
+
},
|
|
33360
33466
|
},
|
|
33361
33467
|
{
|
|
33362
|
-
|
|
33363
|
-
|
|
33364
|
-
|
|
33365
|
-
|
|
33468
|
+
id: 'executive-card',
|
|
33469
|
+
label: {
|
|
33470
|
+
key: 'praxis.widgetShell.presets.executive-card.label',
|
|
33471
|
+
text: 'Executive card',
|
|
33366
33472
|
},
|
|
33367
|
-
|
|
33368
|
-
|
|
33369
|
-
|
|
33473
|
+
description: {
|
|
33474
|
+
key: 'praxis.widgetShell.presets.executive-card.description',
|
|
33475
|
+
text: 'An accent-colored header, larger title and spacious body for summaries and decisions.',
|
|
33370
33476
|
},
|
|
33371
|
-
|
|
33372
|
-
|
|
33373
|
-
|
|
33374
|
-
|
|
33375
|
-
|
|
33376
|
-
|
|
33377
|
-
|
|
33477
|
+
category: 'sectioned',
|
|
33478
|
+
appearance: {
|
|
33479
|
+
card: {
|
|
33480
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface) 88%, var(--md-sys-color-surface-container-high) 12%)',
|
|
33481
|
+
borderColor: 'color-mix(in srgb, var(--md-sys-color-primary) 28%, var(--md-sys-color-outline-variant) 50%)',
|
|
33482
|
+
borderRadius: '16px',
|
|
33483
|
+
shadow: '0 12px 28px color-mix(in srgb, var(--md-sys-color-shadow, #000) 13%, transparent)',
|
|
33378
33484
|
},
|
|
33379
|
-
|
|
33380
|
-
|
|
33381
|
-
|
|
33382
|
-
|
|
33383
|
-
|
|
33384
|
-
|
|
33485
|
+
header: {
|
|
33486
|
+
background: 'var(--md-sys-color-primary)',
|
|
33487
|
+
borderColor: 'transparent',
|
|
33488
|
+
titleColor: 'var(--md-sys-color-on-primary)',
|
|
33489
|
+
subtitleColor: 'var(--md-sys-color-on-primary)',
|
|
33490
|
+
iconColor: 'var(--md-sys-color-on-primary)',
|
|
33385
33491
|
},
|
|
33386
|
-
|
|
33387
|
-
|
|
33388
|
-
|
|
33389
|
-
|
|
33390
|
-
}
|
|
33391
|
-
|
|
33492
|
+
body: {
|
|
33493
|
+
background: 'transparent',
|
|
33494
|
+
textColor: 'var(--md-sys-color-on-surface)',
|
|
33495
|
+
padding: '20px',
|
|
33496
|
+
},
|
|
33497
|
+
typography: {
|
|
33498
|
+
titleSize: '16px',
|
|
33499
|
+
titleWeight: '600',
|
|
33500
|
+
subtitleSize: '12px',
|
|
33501
|
+
},
|
|
33502
|
+
},
|
|
33392
33503
|
},
|
|
33393
33504
|
{
|
|
33394
|
-
|
|
33395
|
-
|
|
33396
|
-
|
|
33397
|
-
|
|
33505
|
+
id: 'filter-bar',
|
|
33506
|
+
label: {
|
|
33507
|
+
key: 'praxis.widgetShell.presets.filter-bar.label',
|
|
33508
|
+
text: 'Filter bar',
|
|
33398
33509
|
},
|
|
33399
|
-
|
|
33400
|
-
|
|
33401
|
-
|
|
33510
|
+
description: {
|
|
33511
|
+
key: 'praxis.widgetShell.presets.filter-bar.description',
|
|
33512
|
+
text: 'A capsule for summaries or compact filters; not intended for tall panels.',
|
|
33402
33513
|
},
|
|
33403
|
-
|
|
33404
|
-
|
|
33405
|
-
|
|
33406
|
-
|
|
33407
|
-
|
|
33408
|
-
|
|
33409
|
-
|
|
33514
|
+
category: 'sectioned',
|
|
33515
|
+
appearance: {
|
|
33516
|
+
card: {
|
|
33517
|
+
background: 'color-mix(in srgb, var(--md-sys-color-surface-container-low) 74%, var(--md-sys-color-secondary-container) 26%)',
|
|
33518
|
+
borderColor: 'color-mix(in srgb, var(--md-sys-color-secondary) 24%, transparent)',
|
|
33519
|
+
borderRadius: '999px',
|
|
33520
|
+
shadow: '0 6px 18px color-mix(in srgb, var(--md-sys-color-shadow, #000) 7%, transparent)',
|
|
33410
33521
|
},
|
|
33411
|
-
|
|
33412
|
-
|
|
33413
|
-
|
|
33414
|
-
|
|
33415
|
-
|
|
33416
|
-
|
|
33522
|
+
header: {
|
|
33523
|
+
background: 'transparent',
|
|
33524
|
+
borderColor: 'transparent',
|
|
33525
|
+
titleColor: 'var(--md-sys-color-on-surface)',
|
|
33526
|
+
subtitleColor: 'var(--md-sys-color-on-surface-variant)',
|
|
33527
|
+
iconColor: 'var(--md-sys-color-secondary)',
|
|
33417
33528
|
},
|
|
33418
|
-
|
|
33419
|
-
|
|
33420
|
-
|
|
33421
|
-
|
|
33422
|
-
}
|
|
33423
|
-
}
|
|
33529
|
+
body: {
|
|
33530
|
+
background: 'transparent',
|
|
33531
|
+
textColor: 'var(--md-sys-color-on-surface)',
|
|
33532
|
+
padding: '10px 14px',
|
|
33533
|
+
},
|
|
33534
|
+
},
|
|
33424
33535
|
},
|
|
33425
33536
|
];
|
|
33426
33537
|
/** Public ID lookup derived from the canonical catalog; no separate preset definitions. */
|
|
@@ -35204,9 +35315,16 @@ class WidgetShellComponent {
|
|
|
35204
35315
|
[class.pdx-shell--scroll-recovery]="scrollRecovery() && !collapsed && !expanded && !fullscreen"
|
|
35205
35316
|
[style.--pdx-shell-card-bg]="appearance?.card?.background || null"
|
|
35206
35317
|
[style.--pdx-shell-card-border]="appearance?.card?.borderColor || null"
|
|
35318
|
+
[style.--pdx-shell-card-border-width]="appearance?.card?.borderWidth || null"
|
|
35319
|
+
[style.--pdx-shell-card-border-style]="appearance?.card?.borderStyle || null"
|
|
35207
35320
|
[style.--pdx-shell-card-radius]="appearance?.card?.borderRadius || null"
|
|
35208
35321
|
[style.--pdx-shell-card-shadow]="appearance?.card?.shadow || null"
|
|
35322
|
+
[class.pdx-shell--backdrop]="!!appearance?.card?.backdropFilter && appearance?.card?.backdropFilter !== 'none'"
|
|
35323
|
+
[style.--pdx-shell-card-filter]="appearance?.card?.backdropFilter || null"
|
|
35324
|
+
[style.--pdx-shell-card-fallback-bg]="appearance?.card?.fallbackBackground || null"
|
|
35209
35325
|
[style.--pdx-shell-header-bg]="appearance?.header?.background || null"
|
|
35326
|
+
[style.--pdx-shell-header-border-width]="appearance?.header?.borderWidth || null"
|
|
35327
|
+
[style.--pdx-shell-header-border-style]="appearance?.header?.borderStyle || null"
|
|
35210
35328
|
[style.--pdx-shell-header-border]="
|
|
35211
35329
|
appearance?.header?.borderColor || null
|
|
35212
35330
|
"
|
|
@@ -35400,7 +35518,7 @@ class WidgetShellComponent {
|
|
|
35400
35518
|
@if (expanded || fullscreen) {
|
|
35401
35519
|
<div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
|
|
35402
35520
|
}
|
|
35403
|
-
`, isInline: true, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{box-sizing:border-box;position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var( --pdx-shell-card-bg, var( --pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low) ) );border:1px solid
|
|
35521
|
+
`, isInline: true, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{--pdx-shell-card-border-width: initial;--pdx-shell-card-border-style: initial;--pdx-shell-header-border-width: initial;--pdx-shell-header-border-style: initial;--pdx-shell-card-filter: initial;--pdx-shell-card-fallback-bg: initial;box-sizing:border-box;position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var( --pdx-shell-card-bg, var( --pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low) ) );border-width:var(--pdx-shell-card-border-width, 1px);border-style:var(--pdx-shell-card-border-style, solid);border-color:var( --pdx-shell-card-border, var( --pdx-dashboard-card-border, var(--md-sys-color-outline-variant) ) );border-radius:var(--pdx-shell-card-radius, 12px);box-shadow:var( --pdx-shell-card-shadow, 0 4px 12px rgba(15, 23, 42, .06) );overflow:hidden}.pdx-shell.dashboard{-webkit-backdrop-filter:var(--pdx-shell-card-filter, none);backdrop-filter:var(--pdx-shell-card-filter, none)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.pdx-shell.dashboard.pdx-shell--backdrop{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface))}}@media(prefers-reduced-transparency:reduce){.pdx-shell.dashboard.pdx-shell--backdrop{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface));-webkit-backdrop-filter:none;backdrop-filter:none}}.pdx-shell.dashboard.pdx-shell--backdrop.expanded,.pdx-shell.dashboard.pdx-shell--backdrop.fullscreen{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface));-webkit-backdrop-filter:none;backdrop-filter:none}.pdx-shell-header{flex-shrink:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px;border-bottom:var(--pdx-shell-header-border-width, 1px) var(--pdx-shell-header-border-style, solid) var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var( --pdx-shell-header-bg, var(--md-sys-color-surface-container) )}.pdx-shell-header--drag-enabled{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.pdx-shell-header--drag-enabled:active{cursor:grabbing}.pdx-shell-header--drag-enabled:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 72%,white 28%);outline-offset:-2px}.pdx-shell-authoring-drag{flex:0 0 auto;align-self:flex-start;margin:4px 6px 0;z-index:2;cursor:grab;touch-action:none}.pdx-shell-authoring-drag:active{cursor:grabbing}.pdx-shell-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 min(14rem,50%);max-width:100%;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{flex:0 0 auto;color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0;flex:1}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 13px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 11px);color:var( --pdx-shell-subtitle-color, var(--md-sys-color-on-surface-variant, currentColor) );white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:100%}.pdx-shell-actions{margin-left:auto;min-width:0}.pdx-shell-actions button.praxis-icon-button:not(:disabled):not(.praxis-icon-button--pressed){color:var(--pdx-shell-icon-color, var(--md-sys-color-on-surface-variant))}.pdx-shell-actions>button{max-width:100%}.pdx-shell-window-actions{margin-left:auto}.pdx-shell-text{display:grid;gap:2px}.pdx-shell-title-text,.pdx-shell-subtitle{display:-webkit-box;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-shell-action--pressed:not(.praxis-icon-button){color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent)}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell.dashboard.pdx-shell--sticky-header{overflow:clip}.pdx-shell--sticky-header>.pdx-shell-header{position:sticky;top:var(--pdx-shell-sticky-header-offset, 0px);z-index:2;isolation:isolate;background:var(--md-sys-color-surface-container)}.pdx-shell--backdrop.pdx-shell--sticky-header>.pdx-shell-header{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface-container))}.pdx-shell--sticky-header>.pdx-shell-header:before{content:\"\";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--pdx-shell-header-bg, transparent)}.pdx-shell--sticky-header>.pdx-shell-body{isolation:isolate}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 12px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell>.pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed{height:auto}.pdx-shell.collapsed>.pdx-shell-header{border-bottom-color:transparent}.pdx-shell.body-fill>.pdx-shell-body,.pdx-shell.body-scroll>.pdx-shell-body,.pdx-shell.expanded>.pdx-shell-body,.pdx-shell.fullscreen>.pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.collapsed>.pdx-shell-body{display:none}.pdx-shell.body-fill>.pdx-shell-body{overflow:hidden}.pdx-shell.body-scroll>.pdx-shell-body{overflow:auto}.pdx-shell.body-scroll.pdx-shell--scroll-recovery{overflow:auto}.pdx-shell.body-scroll.pdx-shell--scroll-recovery>.pdx-shell-body{flex:0 0 auto;overflow:visible}.pdx-shell.body-fill>.pdx-shell-body>*,.pdx-shell.body-scroll>.pdx-shell-body>*,.pdx-shell.expanded>.pdx-shell-body>*,.pdx-shell.fullscreen>.pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded,.pdx-shell-overlay-surface.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:var(--praxis-layer-widget-shell-expanded, 1290);box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen,.pdx-shell-overlay-surface.fullscreen{position:fixed;inset:0;width:auto;height:auto;transform:none;border-radius:0;z-index:var(--praxis-layer-widget-shell-fullscreen, 1291);box-shadow:var(--mat-elevation-level8)}.pdx-shell-overlay-surface{background:var(--md-sys-color-surface);border-radius:var(--pdx-dashboard-card-radius, 16px);pointer-events:none}.pdx-shell-backdrop{position:fixed;inset:0;z-index:var(--praxis-layer-widget-shell-backdrop, 1280);background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"], dependencies: [{ kind: "component", type: WidgetShellAvatarComponent, selector: "praxis-widget-shell-avatar", inputs: ["avatar"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35404
35522
|
}
|
|
35405
35523
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetShellComponent, decorators: [{
|
|
35406
35524
|
type: Component,
|
|
@@ -35442,9 +35560,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
35442
35560
|
[class.pdx-shell--scroll-recovery]="scrollRecovery() && !collapsed && !expanded && !fullscreen"
|
|
35443
35561
|
[style.--pdx-shell-card-bg]="appearance?.card?.background || null"
|
|
35444
35562
|
[style.--pdx-shell-card-border]="appearance?.card?.borderColor || null"
|
|
35563
|
+
[style.--pdx-shell-card-border-width]="appearance?.card?.borderWidth || null"
|
|
35564
|
+
[style.--pdx-shell-card-border-style]="appearance?.card?.borderStyle || null"
|
|
35445
35565
|
[style.--pdx-shell-card-radius]="appearance?.card?.borderRadius || null"
|
|
35446
35566
|
[style.--pdx-shell-card-shadow]="appearance?.card?.shadow || null"
|
|
35567
|
+
[class.pdx-shell--backdrop]="!!appearance?.card?.backdropFilter && appearance?.card?.backdropFilter !== 'none'"
|
|
35568
|
+
[style.--pdx-shell-card-filter]="appearance?.card?.backdropFilter || null"
|
|
35569
|
+
[style.--pdx-shell-card-fallback-bg]="appearance?.card?.fallbackBackground || null"
|
|
35447
35570
|
[style.--pdx-shell-header-bg]="appearance?.header?.background || null"
|
|
35571
|
+
[style.--pdx-shell-header-border-width]="appearance?.header?.borderWidth || null"
|
|
35572
|
+
[style.--pdx-shell-header-border-style]="appearance?.header?.borderStyle || null"
|
|
35448
35573
|
[style.--pdx-shell-header-border]="
|
|
35449
35574
|
appearance?.header?.borderColor || null
|
|
35450
35575
|
"
|
|
@@ -35638,7 +35763,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
35638
35763
|
@if (expanded || fullscreen) {
|
|
35639
35764
|
<div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
|
|
35640
35765
|
}
|
|
35641
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{box-sizing:border-box;position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var( --pdx-shell-card-bg, var( --pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low) ) );border:1px solid
|
|
35766
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{--pdx-shell-card-border-width: initial;--pdx-shell-card-border-style: initial;--pdx-shell-header-border-width: initial;--pdx-shell-header-border-style: initial;--pdx-shell-card-filter: initial;--pdx-shell-card-fallback-bg: initial;box-sizing:border-box;position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var( --pdx-shell-card-bg, var( --pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low) ) );border-width:var(--pdx-shell-card-border-width, 1px);border-style:var(--pdx-shell-card-border-style, solid);border-color:var( --pdx-shell-card-border, var( --pdx-dashboard-card-border, var(--md-sys-color-outline-variant) ) );border-radius:var(--pdx-shell-card-radius, 12px);box-shadow:var( --pdx-shell-card-shadow, 0 4px 12px rgba(15, 23, 42, .06) );overflow:hidden}.pdx-shell.dashboard{-webkit-backdrop-filter:var(--pdx-shell-card-filter, none);backdrop-filter:var(--pdx-shell-card-filter, none)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.pdx-shell.dashboard.pdx-shell--backdrop{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface))}}@media(prefers-reduced-transparency:reduce){.pdx-shell.dashboard.pdx-shell--backdrop{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface));-webkit-backdrop-filter:none;backdrop-filter:none}}.pdx-shell.dashboard.pdx-shell--backdrop.expanded,.pdx-shell.dashboard.pdx-shell--backdrop.fullscreen{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface));-webkit-backdrop-filter:none;backdrop-filter:none}.pdx-shell-header{flex-shrink:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px;border-bottom:var(--pdx-shell-header-border-width, 1px) var(--pdx-shell-header-border-style, solid) var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var( --pdx-shell-header-bg, var(--md-sys-color-surface-container) )}.pdx-shell-header--drag-enabled{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.pdx-shell-header--drag-enabled:active{cursor:grabbing}.pdx-shell-header--drag-enabled:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 72%,white 28%);outline-offset:-2px}.pdx-shell-authoring-drag{flex:0 0 auto;align-self:flex-start;margin:4px 6px 0;z-index:2;cursor:grab;touch-action:none}.pdx-shell-authoring-drag:active{cursor:grabbing}.pdx-shell-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 min(14rem,50%);max-width:100%;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{flex:0 0 auto;color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0;flex:1}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 13px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 11px);color:var( --pdx-shell-subtitle-color, var(--md-sys-color-on-surface-variant, currentColor) );white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:100%}.pdx-shell-actions{margin-left:auto;min-width:0}.pdx-shell-actions button.praxis-icon-button:not(:disabled):not(.praxis-icon-button--pressed){color:var(--pdx-shell-icon-color, var(--md-sys-color-on-surface-variant))}.pdx-shell-actions>button{max-width:100%}.pdx-shell-window-actions{margin-left:auto}.pdx-shell-text{display:grid;gap:2px}.pdx-shell-title-text,.pdx-shell-subtitle{display:-webkit-box;white-space:normal;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-shell-action--pressed:not(.praxis-icon-button){color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent)}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell.dashboard.pdx-shell--sticky-header{overflow:clip}.pdx-shell--sticky-header>.pdx-shell-header{position:sticky;top:var(--pdx-shell-sticky-header-offset, 0px);z-index:2;isolation:isolate;background:var(--md-sys-color-surface-container)}.pdx-shell--backdrop.pdx-shell--sticky-header>.pdx-shell-header{background:var(--pdx-shell-card-fallback-bg, var(--md-sys-color-surface-container))}.pdx-shell--sticky-header>.pdx-shell-header:before{content:\"\";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--pdx-shell-header-bg, transparent)}.pdx-shell--sticky-header>.pdx-shell-body{isolation:isolate}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 12px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell>.pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed{height:auto}.pdx-shell.collapsed>.pdx-shell-header{border-bottom-color:transparent}.pdx-shell.body-fill>.pdx-shell-body,.pdx-shell.body-scroll>.pdx-shell-body,.pdx-shell.expanded>.pdx-shell-body,.pdx-shell.fullscreen>.pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.collapsed>.pdx-shell-body{display:none}.pdx-shell.body-fill>.pdx-shell-body{overflow:hidden}.pdx-shell.body-scroll>.pdx-shell-body{overflow:auto}.pdx-shell.body-scroll.pdx-shell--scroll-recovery{overflow:auto}.pdx-shell.body-scroll.pdx-shell--scroll-recovery>.pdx-shell-body{flex:0 0 auto;overflow:visible}.pdx-shell.body-fill>.pdx-shell-body>*,.pdx-shell.body-scroll>.pdx-shell-body>*,.pdx-shell.expanded>.pdx-shell-body>*,.pdx-shell.fullscreen>.pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded,.pdx-shell-overlay-surface.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:var(--praxis-layer-widget-shell-expanded, 1290);box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen,.pdx-shell-overlay-surface.fullscreen{position:fixed;inset:0;width:auto;height:auto;transform:none;border-radius:0;z-index:var(--praxis-layer-widget-shell-fullscreen, 1291);box-shadow:var(--mat-elevation-level8)}.pdx-shell-overlay-surface{background:var(--md-sys-color-surface);border-radius:var(--pdx-dashboard-card-radius, 16px);pointer-events:none}.pdx-shell-backdrop{position:fixed;inset:0;z-index:var(--praxis-layer-widget-shell-backdrop, 1280);background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"] }]
|
|
35642
35767
|
}], ctorParameters: () => [], propDecorators: { hostCollapsed: [{
|
|
35643
35768
|
type: HostBinding,
|
|
35644
35769
|
args: ['class.pdx-widget-shell-collapsed']
|
|
@@ -36001,6 +36126,161 @@ const BUILTIN_PAGE_THEME_PRESETS = {
|
|
|
36001
36126
|
},
|
|
36002
36127
|
},
|
|
36003
36128
|
};
|
|
36129
|
+
/** Shared runtime/authoring resolution: a recognized explicit layout wins over presetFamily. */
|
|
36130
|
+
function resolveWidgetPageLayoutPreset(page) {
|
|
36131
|
+
const layoutPresetId = page.layoutPreset?.trim();
|
|
36132
|
+
if (layoutPresetId && BUILTIN_PAGE_LAYOUT_PRESETS[layoutPresetId]) {
|
|
36133
|
+
return BUILTIN_PAGE_LAYOUT_PRESETS[layoutPresetId];
|
|
36134
|
+
}
|
|
36135
|
+
const presetFamily = typeof page.layoutPresetOptions?.['presetFamily'] === 'string'
|
|
36136
|
+
? page.layoutPresetOptions['presetFamily'].trim()
|
|
36137
|
+
: '';
|
|
36138
|
+
return presetFamily ? BUILTIN_PAGE_LAYOUT_PRESETS[presetFamily] : undefined;
|
|
36139
|
+
}
|
|
36140
|
+
|
|
36141
|
+
const geometry = ['col', 'row', 'colSpan', 'rowSpan'];
|
|
36142
|
+
const overlaps$2 = (a, b) => a.col < b.col + b.colSpan && b.col < a.col + a.colSpan
|
|
36143
|
+
&& a.row < b.row + b.rowSpan && b.row < a.row + a.rowSpan;
|
|
36144
|
+
/** Prepare an explicit base-canvas arrangement. Widths are authored grid spans,
|
|
36145
|
+
* not semantic roles. The caller reviews the result before replacing the canvas.
|
|
36146
|
+
* No partial result is returned on failure. Device documents remain untouched.
|
|
36147
|
+
*/
|
|
36148
|
+
function prepareCanvasArrangement(page, widths) {
|
|
36149
|
+
const fail = (reason, blockedKeys = []) => ({ canvas: null, changedKeys: [], blockedKeys, reason });
|
|
36150
|
+
const canvas = page.canvas;
|
|
36151
|
+
if (!canvas || !Number.isSafeInteger(canvas.columns) || canvas.columns < 1
|
|
36152
|
+
|| !widths.length || widths.some(value => !Number.isSafeInteger(value) || value < 1)
|
|
36153
|
+
|| widths.reduce((sum, value) => sum + value, 0) !== canvas.columns)
|
|
36154
|
+
return fail('geometry');
|
|
36155
|
+
const entries = Object.entries(canvas.items).sort(([ak, a], [bk, b]) => a.row - b.row || a.col - b.col || (ak < bk ? -1 : ak > bk ? 1 : 0));
|
|
36156
|
+
const keys = new Set(page.widgets.map(widget => widget.key));
|
|
36157
|
+
if (keys.size !== page.widgets.length || entries.length !== keys.size
|
|
36158
|
+
|| entries.some(([key]) => !keys.has(key)))
|
|
36159
|
+
return fail('geometry');
|
|
36160
|
+
for (const [key, item] of entries) {
|
|
36161
|
+
if (!geometry.every(field => Number.isSafeInteger(item[field]) && item[field] > 0)
|
|
36162
|
+
|| !Number.isSafeInteger(item.row + item.rowSpan)
|
|
36163
|
+
|| item.col + item.colSpan > canvas.columns + 1)
|
|
36164
|
+
return fail('geometry', [key]);
|
|
36165
|
+
const c = item.constraints;
|
|
36166
|
+
if (Object.entries(c || {}).some(([name, value]) => !name.startsWith('lock')
|
|
36167
|
+
&& (!Number.isSafeInteger(value) || Number(value) < 1))
|
|
36168
|
+
|| item.colSpan < (c?.minColSpan ?? 1) || item.colSpan > (c?.maxColSpan ?? canvas.columns)
|
|
36169
|
+
|| item.rowSpan < (c?.minRowSpan ?? 1) || item.rowSpan > (c?.maxRowSpan ?? Number.MAX_SAFE_INTEGER))
|
|
36170
|
+
return fail('limits', [key]);
|
|
36171
|
+
}
|
|
36172
|
+
// Locked positions are anchors. Never repair intentional overlaps implicitly.
|
|
36173
|
+
for (let index = 0; index < entries.length; index++) {
|
|
36174
|
+
const [key, item] = entries[index];
|
|
36175
|
+
const collision = entries.slice(index + 1).find(([, other]) => overlaps$2(item, other));
|
|
36176
|
+
if (collision)
|
|
36177
|
+
return fail('geometry', [key, collision[0]]);
|
|
36178
|
+
}
|
|
36179
|
+
const items = { ...canvas.items };
|
|
36180
|
+
const placed = entries.filter(([, item]) => item.constraints?.lockPosition).map(([, item]) => item);
|
|
36181
|
+
const lanes = widths.map((width, index) => ({ width, col: 1 + widths.slice(0, index).reduce((sum, value) => sum + value, 0), row: 1 }));
|
|
36182
|
+
let index = 0;
|
|
36183
|
+
for (const [key, item] of entries) {
|
|
36184
|
+
if (item.constraints?.lockPosition)
|
|
36185
|
+
continue;
|
|
36186
|
+
const lane = lanes[index++ % lanes.length];
|
|
36187
|
+
const colSpan = item.constraints?.lockSize ? item.colSpan : lane.width;
|
|
36188
|
+
if (colSpan > lane.width || colSpan < (item.constraints?.minColSpan ?? 1)
|
|
36189
|
+
|| colSpan > (item.constraints?.maxColSpan ?? canvas.columns))
|
|
36190
|
+
return fail('limits', [key]);
|
|
36191
|
+
const next = { ...item, col: lane.col, row: lane.row, colSpan };
|
|
36192
|
+
let collisions = placed.filter(other => overlaps$2(next, other));
|
|
36193
|
+
while (collisions.length) {
|
|
36194
|
+
next.row = Math.max(...collisions.map(other => other.row + other.rowSpan));
|
|
36195
|
+
if (!Number.isSafeInteger(next.row + next.rowSpan))
|
|
36196
|
+
return fail('geometry', [key]);
|
|
36197
|
+
collisions = placed.filter(other => overlaps$2(next, other));
|
|
36198
|
+
}
|
|
36199
|
+
items[key] = next;
|
|
36200
|
+
placed.push(next);
|
|
36201
|
+
lane.row = next.row + next.rowSpan;
|
|
36202
|
+
}
|
|
36203
|
+
const changedKeys = entries.filter(([key, item]) => geometry.some(field => item[field] !== items[key][field])).map(([key]) => key);
|
|
36204
|
+
const candidate = { ...canvas, items };
|
|
36205
|
+
const issue = validateCanvasArrangement({ ...page, canvas: candidate }, page);
|
|
36206
|
+
if (issue)
|
|
36207
|
+
return fail(issue.reason, issue.blockedKeys);
|
|
36208
|
+
return { canvas: { ...canvas, items }, changedKeys, blockedKeys: [], reason: null };
|
|
36209
|
+
}
|
|
36210
|
+
/** Admit a final arrangement without calculating another placement. The source is
|
|
36211
|
+
* the reviewed transaction baseline; the candidate may include other draft edits.
|
|
36212
|
+
* Device inheritance and locks are checked again at submission, not only preview.
|
|
36213
|
+
*/
|
|
36214
|
+
function validateCanvasArrangement(page, source) {
|
|
36215
|
+
const fail = (reason, ...blockedKeys) => ({ reason, blockedKeys });
|
|
36216
|
+
const canvas = page.canvas;
|
|
36217
|
+
if (!canvas || !Number.isSafeInteger(canvas.columns) || canvas.columns < 1)
|
|
36218
|
+
return fail('geometry');
|
|
36219
|
+
const entries = Object.entries(canvas.items);
|
|
36220
|
+
const keys = new Set(page.widgets.map(widget => widget.key));
|
|
36221
|
+
if (keys.size !== page.widgets.length || entries.length !== keys.size || entries.some(([key]) => !keys.has(key)))
|
|
36222
|
+
return fail('geometry');
|
|
36223
|
+
const withinLimits = (item, columns) => {
|
|
36224
|
+
const c = item.constraints;
|
|
36225
|
+
const minCol = c?.minColSpan ?? 1, maxCol = c?.maxColSpan ?? columns;
|
|
36226
|
+
const minRow = c?.minRowSpan ?? 1, maxRow = c?.maxRowSpan ?? Number.MAX_SAFE_INTEGER;
|
|
36227
|
+
return [minCol, maxCol, minRow, maxRow].every(value => Number.isSafeInteger(value) && value > 0)
|
|
36228
|
+
&& minCol <= columns && minCol <= maxCol && minRow <= maxRow
|
|
36229
|
+
&& item.colSpan >= minCol && item.colSpan <= maxCol
|
|
36230
|
+
&& item.rowSpan >= minRow && item.rowSpan <= maxRow;
|
|
36231
|
+
};
|
|
36232
|
+
for (let index = 0; index < entries.length; index++) {
|
|
36233
|
+
const [key, item] = entries[index];
|
|
36234
|
+
if (!geometry.every(field => Number.isSafeInteger(item[field]) && item[field] > 0)
|
|
36235
|
+
|| !Number.isSafeInteger(item.row + item.rowSpan) || item.col + item.colSpan > canvas.columns + 1)
|
|
36236
|
+
return fail('geometry', key);
|
|
36237
|
+
if (!withinLimits(item, canvas.columns))
|
|
36238
|
+
return fail('limits', key);
|
|
36239
|
+
const before = source.canvas?.items[key];
|
|
36240
|
+
const positionLocked = before?.constraints?.lockPosition || item.constraints?.lockPosition;
|
|
36241
|
+
const sizeLocked = before?.constraints?.lockSize || item.constraints?.lockSize;
|
|
36242
|
+
if (before && ((positionLocked && (before.col !== item.col || before.row !== item.row))
|
|
36243
|
+
|| (sizeLocked && (before.colSpan !== item.colSpan || before.rowSpan !== item.rowSpan))))
|
|
36244
|
+
return fail('limits', key);
|
|
36245
|
+
const collision = entries.slice(index + 1).find(([, other]) => overlaps$2(item, other));
|
|
36246
|
+
if (collision)
|
|
36247
|
+
return fail('geometry', key, collision[0]);
|
|
36248
|
+
}
|
|
36249
|
+
for (const device of ['desktop', 'tablet', 'mobile']) {
|
|
36250
|
+
const variant = page.deviceLayouts?.[device];
|
|
36251
|
+
if (!variant)
|
|
36252
|
+
continue;
|
|
36253
|
+
const overrides = variant.canvas?.items || {};
|
|
36254
|
+
const columns = variant.canvas?.columns ?? canvas.columns;
|
|
36255
|
+
if (!Number.isSafeInteger(columns) || columns < 1)
|
|
36256
|
+
return fail('geometry');
|
|
36257
|
+
for (const [key, item] of entries) {
|
|
36258
|
+
const override = overrides[key];
|
|
36259
|
+
if (override?.hidden || variant.widgetOverrides?.[key]?.hidden)
|
|
36260
|
+
continue;
|
|
36261
|
+
const constraints = { ...item.constraints, ...override?.constraints };
|
|
36262
|
+
// A narrower device grid clips inherited widths in Core's responsive
|
|
36263
|
+
// materialization. Explicit widths still have to honor authored bounds.
|
|
36264
|
+
const effective = { ...item, ...override, constraints,
|
|
36265
|
+
colSpan: columns < canvas.columns ? Math.min(override?.colSpan ?? item.colSpan, columns) : override?.colSpan ?? item.colSpan };
|
|
36266
|
+
if (!withinLimits(effective, columns))
|
|
36267
|
+
return fail('limits', key);
|
|
36268
|
+
const before = source.canvas?.items[key];
|
|
36269
|
+
if (!before)
|
|
36270
|
+
continue;
|
|
36271
|
+
const priorOverride = source.deviceLayouts?.[device]?.canvas?.items?.[key];
|
|
36272
|
+
const priorConstraints = { ...before.constraints, ...priorOverride?.constraints };
|
|
36273
|
+
const inheritedChange = (fields) => fields.some(field => override?.[field] === undefined && item[field] !== before[field]);
|
|
36274
|
+
if (((constraints.lockPosition || priorConstraints.lockPosition) && inheritedChange(['col', 'row']))
|
|
36275
|
+
|| ((constraints.lockSize || priorConstraints.lockSize) && inheritedChange(['colSpan', 'rowSpan'])))
|
|
36276
|
+
return fail('limits', key);
|
|
36277
|
+
if (Object.values(overrides).some(value => geometry.some(field => value[field] !== undefined))
|
|
36278
|
+
&& inheritedChange(geometry))
|
|
36279
|
+
return fail('device-overrides', key);
|
|
36280
|
+
}
|
|
36281
|
+
}
|
|
36282
|
+
return null;
|
|
36283
|
+
}
|
|
36004
36284
|
|
|
36005
36285
|
class WidgetPageCompositionFactory {
|
|
36006
36286
|
create(page) {
|
|
@@ -40353,7 +40633,7 @@ const DYNAMIC_WIDGET_PAGE_I18N_CONFIG = {
|
|
|
40353
40633
|
'size.presetLabelSingle': '{{fraction}} da grade: 1 coluna',
|
|
40354
40634
|
'size.presetHelp': 'Fração da grade · número de colunas',
|
|
40355
40635
|
'size.undo': 'Desfazer último redimensionamento',
|
|
40356
|
-
'size.undoHelp': 'Restaura o widget e os vizinhos alterados no último ajuste desta sessão.',
|
|
40636
|
+
'size.undoHelp': 'Restaura o widget e os vizinhos alterados no último ajuste desta sessão. No painel de configurações, confirme a prévia com Aplicar.',
|
|
40357
40637
|
'size.undoBlocked': 'O layout ou seus limites mudaram depois. O ajuste anterior não pode ser restaurado com segurança.',
|
|
40358
40638
|
'size.undoDone': 'Último redimensionamento desfeito, incluindo os vizinhos afetados.',
|
|
40359
40639
|
'size.width': 'Largura',
|
|
@@ -40515,7 +40795,7 @@ const DYNAMIC_WIDGET_PAGE_I18N_CONFIG = {
|
|
|
40515
40795
|
'size.presetLabelSingle': '{{fraction}} of the grid: 1 column',
|
|
40516
40796
|
'size.presetHelp': 'Grid fraction · number of columns',
|
|
40517
40797
|
'size.undo': 'Undo last resize',
|
|
40518
|
-
'size.undoHelp': 'Restores the widget and neighbors changed by the last resize in this session.',
|
|
40798
|
+
'size.undoHelp': 'Restores the widget and neighbors changed by the last resize in this session. In the settings panel, confirm the preview with Apply.',
|
|
40519
40799
|
'size.undoBlocked': 'The layout or its limits changed afterwards. The previous size cannot be safely restored.',
|
|
40520
40800
|
'size.undoDone': 'Last resize undone, including affected neighbors.',
|
|
40521
40801
|
'size.width': 'Width',
|
|
@@ -44196,7 +44476,7 @@ class DynamicWidgetPageComponent {
|
|
|
44196
44476
|
content: { component: WidgetSettingsEditorComponent, inputs: () => {
|
|
44197
44477
|
const page = this.ensurePageDefinition();
|
|
44198
44478
|
const widget = page.widgets.find(item => item.key === key);
|
|
44199
|
-
const uiShell =
|
|
44479
|
+
const uiShell = this.mergedContext['ui']?.shell || {};
|
|
44200
44480
|
this.closeSizeEditor(false);
|
|
44201
44481
|
this.prepareSizeEditor(key);
|
|
44202
44482
|
this.widgetSettingsKey = key;
|
|
@@ -44735,9 +45015,11 @@ class DynamicWidgetPageComponent {
|
|
|
44735
45015
|
return;
|
|
44736
45016
|
// Layout authoring must not capture runtime inputs such as loaded table rows.
|
|
44737
45017
|
const page = this.clonePageDefinition(this.authoredPageDefinition ?? this.ensurePageDefinition());
|
|
44738
|
-
const uiShell =
|
|
45018
|
+
const uiShell = this.mergedContext['ui']?.shell || {};
|
|
44739
45019
|
const session = this.createSettingsSession();
|
|
44740
45020
|
const owner = session.get(DestroyRef);
|
|
45021
|
+
const appliedValues = new Subject();
|
|
45022
|
+
owner.onDestroy(() => appliedValues.complete());
|
|
44741
45023
|
const ref = this.settingsPanel.open({
|
|
44742
45024
|
owner,
|
|
44743
45025
|
id: 'dynamic-page-settings',
|
|
@@ -44746,6 +45028,7 @@ class DynamicWidgetPageComponent {
|
|
|
44746
45028
|
component: editor,
|
|
44747
45029
|
inputs: {
|
|
44748
45030
|
page,
|
|
45031
|
+
appliedValues$: appliedValues.asObservable(),
|
|
44749
45032
|
layout: page.layout || null,
|
|
44750
45033
|
presets: uiShell?.presets || null,
|
|
44751
45034
|
pagePreset: uiShell?.preset || null,
|
|
@@ -44755,7 +45038,16 @@ class DynamicWidgetPageComponent {
|
|
|
44755
45038
|
},
|
|
44756
45039
|
},
|
|
44757
45040
|
});
|
|
44758
|
-
ref.applied$.pipe(takeUntilDestroyed(owner)).subscribe((result) =>
|
|
45041
|
+
ref.applied$.pipe(takeUntilDestroyed(owner)).subscribe((result) => {
|
|
45042
|
+
if (!result)
|
|
45043
|
+
return;
|
|
45044
|
+
// Runtime bootstrap may enrich the object while applying it. Acknowledge
|
|
45045
|
+
// the authored value submitted by the provider, not that materialization.
|
|
45046
|
+
const accepted = result && typeof result === 'object' && 'widgets' in result
|
|
45047
|
+
? this.clonePageDefinition(result) : result;
|
|
45048
|
+
this.applyPageLayout(result, false);
|
|
45049
|
+
appliedValues.next(accepted);
|
|
45050
|
+
});
|
|
44759
45051
|
ref.saved$.pipe(takeUntilDestroyed(owner)).subscribe((result) => this.applyPageLayout(result, true));
|
|
44760
45052
|
ref.closed$?.pipe(take(1), takeUntilDestroyed(owner)).subscribe(() => this.releaseSettingsSession(session));
|
|
44761
45053
|
}
|
|
@@ -44975,7 +45267,7 @@ class DynamicWidgetPageComponent {
|
|
|
44975
45267
|
? BUILTIN_PAGE_THEME_PRESETS[themePresetId]
|
|
44976
45268
|
: undefined;
|
|
44977
45269
|
const layoutPreset = pageDefinition
|
|
44978
|
-
?
|
|
45270
|
+
? resolveWidgetPageLayoutPreset(pageDefinition)
|
|
44979
45271
|
: undefined;
|
|
44980
45272
|
const merged = {
|
|
44981
45273
|
...baseContext,
|
|
@@ -45209,7 +45501,7 @@ class DynamicWidgetPageComponent {
|
|
|
45209
45501
|
return input;
|
|
45210
45502
|
}
|
|
45211
45503
|
resolvePagePresets(page) {
|
|
45212
|
-
const preset =
|
|
45504
|
+
const preset = resolveWidgetPageLayoutPreset(page);
|
|
45213
45505
|
const themePresetId = page.themePreset || preset?.defaultThemePreset;
|
|
45214
45506
|
const mergedLayout = this.mergeLayout(preset?.defaultLayout, page.layout);
|
|
45215
45507
|
const grouping = (page.grouping && page.grouping.length
|
|
@@ -45222,16 +45514,6 @@ class DynamicWidgetPageComponent {
|
|
|
45222
45514
|
themePreset: themePresetId,
|
|
45223
45515
|
};
|
|
45224
45516
|
}
|
|
45225
|
-
resolveLayoutPresetDefinition(page) {
|
|
45226
|
-
const layoutPresetId = page.layoutPreset?.trim();
|
|
45227
|
-
if (layoutPresetId && BUILTIN_PAGE_LAYOUT_PRESETS[layoutPresetId]) {
|
|
45228
|
-
return BUILTIN_PAGE_LAYOUT_PRESETS[layoutPresetId];
|
|
45229
|
-
}
|
|
45230
|
-
const presetFamily = typeof page.layoutPresetOptions?.['presetFamily'] === 'string'
|
|
45231
|
-
? page.layoutPresetOptions['presetFamily'].trim()
|
|
45232
|
-
: '';
|
|
45233
|
-
return presetFamily ? BUILTIN_PAGE_LAYOUT_PRESETS[presetFamily] : undefined;
|
|
45234
|
-
}
|
|
45235
45517
|
mergeLayout(presetLayout, pageLayout) {
|
|
45236
45518
|
if (!presetLayout && !pageLayout)
|
|
45237
45519
|
return undefined;
|
|
@@ -47317,7 +47599,7 @@ class DynamicWidgetPageComponent {
|
|
|
47317
47599
|
}
|
|
47318
47600
|
groupGridColumn(group) {
|
|
47319
47601
|
if (group.kind === 'rail' && this.pageColumnCount > 1) {
|
|
47320
|
-
return `${this.pageColumnCount} / span 1`;
|
|
47602
|
+
return `${group.side === 'left' ? 1 : this.pageColumnCount} / span 1`;
|
|
47321
47603
|
}
|
|
47322
47604
|
return '1 / -1';
|
|
47323
47605
|
}
|
|
@@ -47501,7 +47783,7 @@ class DynamicWidgetPageComponent {
|
|
|
47501
47783
|
*/
|
|
47502
47784
|
stripDerivedPresetDefaults(page) {
|
|
47503
47785
|
const canonical = this.clonePageDefinition(page);
|
|
47504
|
-
const preset =
|
|
47786
|
+
const preset = resolveWidgetPageLayoutPreset(canonical);
|
|
47505
47787
|
if (!preset)
|
|
47506
47788
|
return canonical;
|
|
47507
47789
|
const layoutDelta = this.jsonObjectDelta(canonical.layout, preset.defaultLayout);
|
|
@@ -52596,4 +52878,4 @@ function provideHookWhitelist(allowed) {
|
|
|
52596
52878
|
* Generated bundle index. Do not edit.
|
|
52597
52879
|
*/
|
|
52598
52880
|
|
|
52599
|
-
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, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentAuthoringManifestProjectionError, ComponentKeyService, ComponentMetadataRegistry, ComponentRuntimeProfileService, CompositionRuntimeFacade, CompositionValidatorService, ConsoleLoggerSink, CrudOperationResolutionService, 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, 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, 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_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, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisRelatedResourceOutletConfigEditorComponent, 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_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, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SettingsSectionTabsComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, 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, 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, findBuiltinWidgetShellPreset, 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, isCssTextTransform, isDomainRuleSnapshotProblemResponse, 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, 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, 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, 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, supportsConfigDocuments, supportsImplicitValuePresentation, syncWithServerMetadata, textSha256, toCamel, toCapitalize, toKebab, toPascal, toSentenceCase, toSnake, toTitleCase, translateResourceAvailabilityReason, translateResourceDiscoveryText, translateSurfaceNavigationRejected, translateSurfaceOpenFailed, translateUnavailableWorkflowMessage, trim, uniqueAsyncValidator, urlValidator, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|
|
52881
|
+
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, COMPONENT_METADATA_REGISTRY_I18N_CONFIG, COMPONENT_METADATA_REGISTRY_I18N_NAMESPACE, CONFIG_STORAGE, CONNECTION_STORAGE, ComponentAuthoringManifestProjectionError, ComponentKeyService, ComponentMetadataRegistry, ComponentRuntimeProfileService, CompositionRuntimeFacade, CompositionValidatorService, ConsoleLoggerSink, CrudOperationResolutionService, 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, 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, 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_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, PraxisCollectionExportService, PraxisCore, PraxisFooterLinksComponent, PraxisGlobalErrorHandler, PraxisHeroBannerComponent, PraxisHttpCollectionExportProvider, PraxisI18nService, PraxisIconButtonComponent, PraxisIconDirective, PraxisIconPickerComponent, PraxisJsonLogicError, PraxisJsonLogicService, PraxisLayerScaleStyleService, PraxisLegalNoticeComponent, PraxisLoadingInterceptor, PraxisRelatedResourceOutletComponent, PraxisRelatedResourceOutletConfigEditorComponent, 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_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, SchemaMetadataClient, SchemaNormalizerService, SchemaViewerComponent, SettingsSectionTabsComponent, SurfaceBindingRuntimeService, SurfaceNavigationError, SurfaceOpenActionEditorComponent, SurfaceOpenMaterializerService, SurfaceOutletRegistryService, TABLE_CONFIG_EDITOR, TableConfigService, TelemetryLoggerSink, TelemetryService, 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, 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, findBuiltinWidgetShellPreset, 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, isCssTextTransform, isDomainRuleSnapshotProblemResponse, 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, 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, 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, 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, uniqueAsyncValidator, urlValidator, validateCanvasArrangement, validateGlobalActionRef, validateGlobalActionRefs, withFormConfigSections, withMessage, withPraxisHttpLoading };
|