@praxisui/page-builder 9.0.45 → 9.0.47
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 +31 -0
- package/ai/component-registry.json +124 -63
- package/fesm2022/praxisui-page-builder.mjs +83 -100
- package/package.json +4 -4
- package/types/praxisui-page-builder.d.ts +24 -17
|
@@ -13133,7 +13133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
13133
13133
|
* Capabilities catalog for the canonical dynamic page builder/runtime.
|
|
13134
13134
|
*/
|
|
13135
13135
|
const PAGE_BUILDER_AI_CAPABILITIES = {
|
|
13136
|
-
version: 'v1.
|
|
13136
|
+
version: 'v1.5',
|
|
13137
13137
|
enums: {},
|
|
13138
13138
|
targets: [
|
|
13139
13139
|
'page-builder',
|
|
@@ -13143,7 +13143,7 @@ const PAGE_BUILDER_AI_CAPABILITIES = {
|
|
|
13143
13143
|
'praxis-dynamic-page-builder',
|
|
13144
13144
|
],
|
|
13145
13145
|
notes: [
|
|
13146
|
-
'page segue o modelo canonico WidgetPageDefinition (widgets, composition.links, context e state opcional); composition.links
|
|
13146
|
+
'page segue o modelo canonico WidgetPageDefinition (widgets, composition.links, context e state opcional); composition.links pode despachar actions globais via to.kind = global-action e receber continuations exatas via from.kind = global-action.',
|
|
13147
13147
|
'Conteudo editorial rico deve ser modelado como widget praxis-rich-content com definition.inputs.document: RichContentDocument, nao como DSL local do page-builder.',
|
|
13148
13148
|
'Quando definition.id = praxis-rich-content em uma pagina dinamica, definition.inputs.document continua sendo o contrato persistido; hostCapabilities e mediado em runtime pelo host praxis-dynamic-page e nao deve ser serializado no JSON da pagina.',
|
|
13149
13149
|
'Edicao visual de inputs de widget deve usar ComponentDocMeta.configEditor ou ComponentDocMeta.authoringManifestRef publicado pela lib dona do componente; nao criar editor local no page-builder para semantica de outro pacote.',
|
|
@@ -13185,7 +13185,8 @@ const PAGE_BUILDER_AI_CAPABILITIES = {
|
|
|
13185
13185
|
{ path: 'uiCompositionPlan.contextScopes[].targets', category: 'context', valueKind: 'array', description: 'Destinos explicitos do escopo, identificados por widget owner e nestedPath canonico opcional.' },
|
|
13186
13186
|
{ path: 'uiCompositionPlan.bindings', category: 'connections', valueKind: 'array', description: 'Bindings declarativos que serao compilados para page.composition.links.' },
|
|
13187
13187
|
{ path: 'uiCompositionPlan.bindings[].id', category: 'connections', valueKind: 'string', description: 'Identificador estavel do binding planejado.' },
|
|
13188
|
-
{ path: 'uiCompositionPlan.bindings[].from', category: 'connections', valueKind: 'object', description: 'Endpoint de origem: component-port ou
|
|
13188
|
+
{ path: 'uiCompositionPlan.bindings[].from', category: 'connections', valueKind: 'object', description: 'Endpoint de origem: component-port, state ou global-action. Uma origem global-action identifica a continuation somente por actionId; o payload vem do dispatch runtime.' },
|
|
13189
|
+
{ path: 'uiCompositionPlan.bindings[].from.[actionId]', category: 'connections', valueKind: 'string', description: 'ID exato da continuation quando uiCompositionPlan.bindings[].from.kind = global-action. Campos de payload ou metadata nao sao executaveis na origem.' },
|
|
13189
13190
|
{ path: 'uiCompositionPlan.bindings[].to', category: 'connections', valueKind: 'object', description: 'Endpoint de destino: component-port, state ou global-action.' },
|
|
13190
13191
|
{ path: 'uiCompositionPlan.bindings[].to.[actionId]', category: 'connections', valueKind: 'string', description: 'ID da action global quando uiCompositionPlan.bindings[].to.kind = global-action.' },
|
|
13191
13192
|
{ path: 'uiCompositionPlan.bindings[].to.payload', category: 'connections', valueKind: 'object', description: 'Payload literal opcional para destino global-action planejado.' },
|
|
@@ -14146,13 +14147,29 @@ const globalActionEndpointSchema = {
|
|
|
14146
14147
|
},
|
|
14147
14148
|
},
|
|
14148
14149
|
};
|
|
14150
|
+
const globalActionSourceEndpointSchema = {
|
|
14151
|
+
type: 'object',
|
|
14152
|
+
required: ['kind', 'ref'],
|
|
14153
|
+
additionalProperties: false,
|
|
14154
|
+
properties: {
|
|
14155
|
+
kind: { enum: ['global-action'] },
|
|
14156
|
+
ref: {
|
|
14157
|
+
type: 'object',
|
|
14158
|
+
required: ['actionId'],
|
|
14159
|
+
additionalProperties: false,
|
|
14160
|
+
properties: {
|
|
14161
|
+
actionId: { type: 'string' },
|
|
14162
|
+
},
|
|
14163
|
+
},
|
|
14164
|
+
},
|
|
14165
|
+
};
|
|
14149
14166
|
const compositionLinkSchema = {
|
|
14150
14167
|
type: 'object',
|
|
14151
14168
|
required: ['id', 'from', 'to', 'intent'],
|
|
14152
14169
|
additionalProperties: false,
|
|
14153
14170
|
properties: {
|
|
14154
14171
|
id: { type: 'string' },
|
|
14155
|
-
from: { oneOf: [componentPortEndpointSchema, stateEndpointSchema] },
|
|
14172
|
+
from: { oneOf: [componentPortEndpointSchema, stateEndpointSchema, globalActionSourceEndpointSchema] },
|
|
14156
14173
|
to: { oneOf: [componentPortEndpointSchema, stateEndpointSchema, globalActionEndpointSchema] },
|
|
14157
14174
|
intent: { enum: linkIntentValues },
|
|
14158
14175
|
condition: { type: 'object' },
|
|
@@ -14178,7 +14195,7 @@ const PRAXIS_PAGE_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14178
14195
|
componentId: 'praxis-page-builder',
|
|
14179
14196
|
ownerPackage: '@praxisui/page-builder',
|
|
14180
14197
|
configSchemaId: 'WidgetPageDefinition',
|
|
14181
|
-
manifestVersion: '1.
|
|
14198
|
+
manifestVersion: '1.3.0',
|
|
14182
14199
|
runtimeInputs: [
|
|
14183
14200
|
{ name: 'page', type: 'WidgetPageDefinition', description: 'Canonical renderable page document consumed by praxis-dynamic-page.' },
|
|
14184
14201
|
{ name: 'pageIdentity', type: 'PageIdentity | null', description: 'Persistence identity for ui_user_config save/apply flows; not persisted inside page.' },
|
|
@@ -14514,6 +14531,7 @@ const PRAXIS_PAGE_BUILDER_AUTHORING_MANIFEST = {
|
|
|
14514
14531
|
'UiCompositionPlan.i18n, context and layout compile into the corresponding WidgetPageDefinition fields so a complete page never depends on host-only enrichment. A key-only PraxisTextValue receives text from the fallbackLocale dictionary when available.',
|
|
14515
14532
|
'UiCompositionPlan.selectionSyncs is an authoring shorthand that compiles into explicit canonical page.composition.links and is never persisted in WidgetPageDefinition.',
|
|
14516
14533
|
'UiCompositionPlan.contextScopes compiles constants and state.initial into explicit widget inputs, and state context into explicit page.composition.links; runtime inheritance is never ambient.',
|
|
14534
|
+
'UiCompositionPlan global-action sources declare only actionId; dynamicPage.composition.dispatch supplies the runtime payload, and target-only payload fields fail closed on sources.',
|
|
14517
14535
|
'Widget keys and composition link ids are stable identities; array indexes are never canonical identities.',
|
|
14518
14536
|
'Persisted wiring uses page.composition.links and must not write legacy connections.',
|
|
14519
14537
|
'Nested component ports use component-port refs with nestedPath ending in a stable widget key.',
|
|
@@ -15210,8 +15228,8 @@ function validateUiCompositionPlan(plan) {
|
|
|
15210
15228
|
}
|
|
15211
15229
|
}
|
|
15212
15230
|
for (const [index, binding] of (plan.bindings ?? []).entries()) {
|
|
15213
|
-
validateEndpoint(binding.from, widgetKeys, diagnostics, `bindings.${index}.from`,
|
|
15214
|
-
validateEndpoint(binding.to, widgetKeys, diagnostics, `bindings.${index}.to`,
|
|
15231
|
+
validateEndpoint(binding.from, widgetKeys, diagnostics, `bindings.${index}.from`, 'source');
|
|
15232
|
+
validateEndpoint(binding.to, widgetKeys, diagnostics, `bindings.${index}.to`, 'target');
|
|
15215
15233
|
if (!binding.id?.trim()) {
|
|
15216
15234
|
diagnostics.push({
|
|
15217
15235
|
code: 'binding-id-required',
|
|
@@ -15264,7 +15282,7 @@ function validateSelectionSync(selectionSync, widgetKeys, diagnostics, path) {
|
|
|
15264
15282
|
});
|
|
15265
15283
|
}
|
|
15266
15284
|
for (const [sourceIndex, source] of (selectionSync.sources ?? []).entries()) {
|
|
15267
|
-
validateEndpoint(source, widgetKeys, diagnostics, `${path}.sources.${sourceIndex}`,
|
|
15285
|
+
validateEndpoint(source, widgetKeys, diagnostics, `${path}.sources.${sourceIndex}`, 'source');
|
|
15268
15286
|
if (source?.kind !== 'component-port') {
|
|
15269
15287
|
diagnostics.push({
|
|
15270
15288
|
code: 'selection-sync-source-component-port-required',
|
|
@@ -15288,7 +15306,7 @@ function validateSelectionSync(selectionSync, widgetKeys, diagnostics, path) {
|
|
|
15288
15306
|
});
|
|
15289
15307
|
}
|
|
15290
15308
|
else {
|
|
15291
|
-
validateEndpoint(selectionSync.target, widgetKeys, diagnostics, `${path}.target`,
|
|
15309
|
+
validateEndpoint(selectionSync.target, widgetKeys, diagnostics, `${path}.target`, 'target');
|
|
15292
15310
|
}
|
|
15293
15311
|
const mappings = Object.entries(selectionSync.mapping ?? {});
|
|
15294
15312
|
if (!mappings.length) {
|
|
@@ -15523,7 +15541,7 @@ function validateGrouping(grouping, widgetKeys, diagnostics) {
|
|
|
15523
15541
|
});
|
|
15524
15542
|
});
|
|
15525
15543
|
}
|
|
15526
|
-
function validateEndpoint(endpoint, widgetKeys, diagnostics, path,
|
|
15544
|
+
function validateEndpoint(endpoint, widgetKeys, diagnostics, path, role) {
|
|
15527
15545
|
if (!endpoint || typeof endpoint !== 'object') {
|
|
15528
15546
|
diagnostics.push({
|
|
15529
15547
|
code: 'endpoint-required',
|
|
@@ -15561,21 +15579,23 @@ function validateEndpoint(endpoint, widgetKeys, diagnostics, path, allowGlobalAc
|
|
|
15561
15579
|
return;
|
|
15562
15580
|
}
|
|
15563
15581
|
if (endpoint.kind === 'global-action') {
|
|
15564
|
-
if (!allowGlobalAction) {
|
|
15565
|
-
diagnostics.push({
|
|
15566
|
-
code: 'endpoint-global-action-source-unsupported',
|
|
15567
|
-
message: 'Global-action endpoints are supported only as binding targets.',
|
|
15568
|
-
path: `${path}.kind`,
|
|
15569
|
-
});
|
|
15570
|
-
return;
|
|
15571
|
-
}
|
|
15572
15582
|
if (!endpoint.actionId?.trim()) {
|
|
15573
15583
|
diagnostics.push({
|
|
15574
15584
|
code: 'endpoint-global-action-id-required',
|
|
15575
|
-
message: 'Global-action
|
|
15585
|
+
message: 'Global-action endpoint must declare an actionId.',
|
|
15576
15586
|
path: `${path}.actionId`,
|
|
15577
15587
|
});
|
|
15578
15588
|
}
|
|
15589
|
+
if (role === 'source') {
|
|
15590
|
+
for (const field of Object.keys(endpoint).filter((candidate) => candidate !== 'kind' && candidate !== 'actionId')) {
|
|
15591
|
+
diagnostics.push({
|
|
15592
|
+
code: 'endpoint-global-action-source-field-unsupported',
|
|
15593
|
+
message: `Global-action source field "${field}" is not executable; runtime dispatch supplies the payload.`,
|
|
15594
|
+
path: `${path}.${field}`,
|
|
15595
|
+
});
|
|
15596
|
+
}
|
|
15597
|
+
return;
|
|
15598
|
+
}
|
|
15579
15599
|
if (endpoint.payloadExpr !== undefined && typeof endpoint.payloadExpr !== 'string') {
|
|
15580
15600
|
diagnostics.push({
|
|
15581
15601
|
code: 'endpoint-global-action-payload-expr-invalid',
|
|
@@ -15587,9 +15607,7 @@ function validateEndpoint(endpoint, widgetKeys, diagnostics, path, allowGlobalAc
|
|
|
15587
15607
|
}
|
|
15588
15608
|
diagnostics.push({
|
|
15589
15609
|
code: 'endpoint-kind-unsupported',
|
|
15590
|
-
message:
|
|
15591
|
-
? 'Endpoint kind must be "component-port", "state" or "global-action".'
|
|
15592
|
-
: 'Endpoint kind must be "component-port" or "state".',
|
|
15610
|
+
message: 'Endpoint kind must be "component-port", "state" or "global-action".',
|
|
15593
15611
|
path: `${path}.kind`,
|
|
15594
15612
|
});
|
|
15595
15613
|
}
|
|
@@ -15822,6 +15840,7 @@ function toCompositionTransform(transform) {
|
|
|
15822
15840
|
}
|
|
15823
15841
|
if (transform.kind === 'template') {
|
|
15824
15842
|
const template = clone(transform.template);
|
|
15843
|
+
const output = transform.output ? clone(transform.output) : undefined;
|
|
15825
15844
|
const structuredKind = Array.isArray(template)
|
|
15826
15845
|
? 'array-template'
|
|
15827
15846
|
: template !== null && typeof template === 'object'
|
|
@@ -15845,8 +15864,10 @@ function toCompositionTransform(transform) {
|
|
|
15845
15864
|
config: {
|
|
15846
15865
|
template,
|
|
15847
15866
|
},
|
|
15867
|
+
...(output ? { output } : {}),
|
|
15848
15868
|
},
|
|
15849
15869
|
],
|
|
15870
|
+
...(output ? { output } : {}),
|
|
15850
15871
|
};
|
|
15851
15872
|
}
|
|
15852
15873
|
if (transform.kind === 'constant') {
|
|
@@ -21714,6 +21735,7 @@ function projectKnowledgeTarget(changeSet, conceptKey) {
|
|
|
21714
21735
|
|
|
21715
21736
|
const AGENTIC_AUTHORING_TURN_INACTIVITY_TIMEOUT_MS = 180_000;
|
|
21716
21737
|
const AGENTIC_LOCAL_PREVIEW_HISTORY_LIMIT = 20;
|
|
21738
|
+
const DEFAULT_RUNTIME_AUTHORING_CAPABILITIES = Object.freeze({});
|
|
21717
21739
|
const AGENTIC_PAGE_COMPOSITION_REQUEST_OUTPUT = 'agenticPageCompositionRequested';
|
|
21718
21740
|
class DynamicPageBuilderComponent {
|
|
21719
21741
|
dialog;
|
|
@@ -21815,9 +21837,8 @@ class DynamicPageBuilderComponent {
|
|
|
21815
21837
|
top: 96,
|
|
21816
21838
|
margin: 24,
|
|
21817
21839
|
}), ...(ngDevMode ? [{ debugName: "agenticAuthoringPanelLayout" }] : /* istanbul ignore next */ []));
|
|
21818
|
-
previewMode = false;
|
|
21819
|
-
|
|
21820
|
-
runtimeAuthoringPageCache;
|
|
21840
|
+
previewMode = signal(false, ...(ngDevMode ? [{ debugName: "previewMode" }] : /* istanbul ignore next */ []));
|
|
21841
|
+
runtimePageCache;
|
|
21821
21842
|
agenticComponentCapabilities;
|
|
21822
21843
|
agenticComponentCapabilitiesPromise;
|
|
21823
21844
|
agenticTurnController;
|
|
@@ -21850,7 +21871,6 @@ class DynamicPageBuilderComponent {
|
|
|
21850
21871
|
this.currentPage.set(this.parsePage(this.page) || { widgets: [] });
|
|
21851
21872
|
}
|
|
21852
21873
|
if (changes['authoringCapabilities']) {
|
|
21853
|
-
this.runtimeAuthoringPageCache = undefined;
|
|
21854
21874
|
if (!this.isAuthoringCapabilityEnabled('connections')) {
|
|
21855
21875
|
this.connectionsViewerOpen.set(false);
|
|
21856
21876
|
}
|
|
@@ -21900,7 +21920,7 @@ class DynamicPageBuilderComponent {
|
|
|
21900
21920
|
this.observabilityMetricsSubscription.unsubscribe();
|
|
21901
21921
|
}
|
|
21902
21922
|
showSettings() {
|
|
21903
|
-
return !!this.enableCustomization && !this.previewMode;
|
|
21923
|
+
return !!this.enableCustomization && !this.previewMode();
|
|
21904
21924
|
}
|
|
21905
21925
|
canInsertWidgets() {
|
|
21906
21926
|
return this.showSettings() && this.isAuthoringCapabilityEnabled('insertWidgets');
|
|
@@ -21942,27 +21962,22 @@ class DynamicPageBuilderComponent {
|
|
|
21942
21962
|
return this.authoringCapabilities?.[capability] !== false;
|
|
21943
21963
|
}
|
|
21944
21964
|
isPreviewMode() {
|
|
21945
|
-
return this.previewMode;
|
|
21965
|
+
return this.previewMode();
|
|
21946
21966
|
}
|
|
21947
21967
|
runtimePage() {
|
|
21948
21968
|
const page = this.currentPage();
|
|
21949
|
-
if (
|
|
21950
|
-
|
|
21951
|
-
return this.runtimeAuthoringPageCache.value;
|
|
21952
|
-
}
|
|
21953
|
-
const value = this.toAuthoringRuntimePage(page);
|
|
21954
|
-
this.runtimeAuthoringPageCache = { source: page, value };
|
|
21955
|
-
return value;
|
|
21956
|
-
}
|
|
21957
|
-
if (this.runtimePreviewPageCache?.source === page) {
|
|
21958
|
-
return this.runtimePreviewPageCache.value;
|
|
21969
|
+
if (this.runtimePageCache?.source === page) {
|
|
21970
|
+
return this.runtimePageCache.value;
|
|
21959
21971
|
}
|
|
21960
|
-
const value = this.
|
|
21961
|
-
this.
|
|
21972
|
+
const value = this.toRuntimeBasePage(page);
|
|
21973
|
+
this.runtimePageCache = { source: page, value };
|
|
21962
21974
|
return value;
|
|
21963
21975
|
}
|
|
21976
|
+
runtimeAuthoringCapabilities() {
|
|
21977
|
+
return this.authoringCapabilities || DEFAULT_RUNTIME_AUTHORING_CAPABILITIES;
|
|
21978
|
+
}
|
|
21964
21979
|
builderModeLabel() {
|
|
21965
|
-
if (this.previewMode) {
|
|
21980
|
+
if (this.previewMode()) {
|
|
21966
21981
|
return this.tx('builderMode.preview', 'Prévia');
|
|
21967
21982
|
}
|
|
21968
21983
|
if (this.showSettings() && this.connectionsViewerOpen()) {
|
|
@@ -21977,7 +21992,7 @@ class DynamicPageBuilderComponent {
|
|
|
21977
21992
|
return this.tx('builderMode.presentation', 'Presentation');
|
|
21978
21993
|
}
|
|
21979
21994
|
onRuntimePageChange(next) {
|
|
21980
|
-
const canonical = this.
|
|
21995
|
+
const canonical = this.toCanonicalPageFromRuntime(next);
|
|
21981
21996
|
if (JSON.stringify(canonical) === JSON.stringify(this.currentPage())) {
|
|
21982
21997
|
return;
|
|
21983
21998
|
}
|
|
@@ -22023,8 +22038,8 @@ class DynamicPageBuilderComponent {
|
|
|
22023
22038
|
togglePreview() {
|
|
22024
22039
|
if (!this.canPreviewPage())
|
|
22025
22040
|
return;
|
|
22026
|
-
this.previewMode
|
|
22027
|
-
if (this.previewMode) {
|
|
22041
|
+
this.previewMode.update((current) => !current);
|
|
22042
|
+
if (this.previewMode()) {
|
|
22028
22043
|
this.enterPreviewMode();
|
|
22029
22044
|
}
|
|
22030
22045
|
}
|
|
@@ -22179,8 +22194,7 @@ class DynamicPageBuilderComponent {
|
|
|
22179
22194
|
this.agenticAuthoringStatus.set(this.tx('agentic.status.reviewNeedsAttention', 'Complete this review in the assistant before saving.'));
|
|
22180
22195
|
return;
|
|
22181
22196
|
}
|
|
22182
|
-
const
|
|
22183
|
-
const cloned = this.toCanonicalPageFromAuthoringRuntime(runtimeSnapshot || this.currentPage());
|
|
22197
|
+
const cloned = this.clonePage(this.currentPage());
|
|
22184
22198
|
this.currentPage.set(cloned);
|
|
22185
22199
|
this.pageChange.emit(cloned);
|
|
22186
22200
|
this.pageSaveRequested.emit(this.clonePage(cloned));
|
|
@@ -22284,8 +22298,8 @@ class DynamicPageBuilderComponent {
|
|
|
22284
22298
|
const action = issue.action;
|
|
22285
22299
|
if (!action || !this.canRunPremiumReadinessAction(action))
|
|
22286
22300
|
return;
|
|
22287
|
-
if (this.previewMode) {
|
|
22288
|
-
this.previewMode
|
|
22301
|
+
if (this.previewMode()) {
|
|
22302
|
+
this.previewMode.set(false);
|
|
22289
22303
|
}
|
|
22290
22304
|
switch (action.kind) {
|
|
22291
22305
|
case 'open-page-settings':
|
|
@@ -22441,7 +22455,7 @@ class DynamicPageBuilderComponent {
|
|
|
22441
22455
|
if (this.showSettings()) {
|
|
22442
22456
|
return true;
|
|
22443
22457
|
}
|
|
22444
|
-
return this.previewMode && this.hasAgenticAuthoringSession();
|
|
22458
|
+
return this.previewMode() && this.hasAgenticAuthoringSession();
|
|
22445
22459
|
}
|
|
22446
22460
|
showAgenticAuthoringDock() {
|
|
22447
22461
|
return this.showSettings()
|
|
@@ -24731,24 +24745,20 @@ class DynamicPageBuilderComponent {
|
|
|
24731
24745
|
return JSON.stringify(this.currentPage());
|
|
24732
24746
|
}
|
|
24733
24747
|
enterPreviewMode() {
|
|
24734
|
-
this.previewMode
|
|
24735
|
-
this.runtimePreviewPageCache = undefined;
|
|
24748
|
+
this.previewMode.set(true);
|
|
24736
24749
|
this.connectionsViewerOpen.set(false);
|
|
24737
24750
|
this.agenticAuthoringLlmDiagnostics.set(null);
|
|
24738
24751
|
this.sharedRuleCockpitCollapsed.set(true);
|
|
24739
24752
|
this.projectKnowledgeCockpitCollapsed.set(true);
|
|
24740
24753
|
this.selectedWidgetKey.set(null);
|
|
24741
24754
|
}
|
|
24742
|
-
|
|
24743
|
-
|
|
24744
|
-
|
|
24745
|
-
|
|
24746
|
-
|
|
24747
|
-
|
|
24755
|
+
/**
|
|
24756
|
+
* Builds one mode-independent runtime projection for the authored page.
|
|
24757
|
+
* Child authoring chrome is materialized by the embedded dynamic page from
|
|
24758
|
+
* host capabilities, so JSON/Visual mode changes never replace this object.
|
|
24759
|
+
*/
|
|
24760
|
+
toRuntimeBasePage(page) {
|
|
24748
24761
|
const cloned = this.clonePage(page);
|
|
24749
|
-
if (!this.isAuthoringCapabilityEnabled('childCustomization')) {
|
|
24750
|
-
return cloned;
|
|
24751
|
-
}
|
|
24752
24762
|
cloned.widgets = (cloned.widgets || []).map((widget) => {
|
|
24753
24763
|
const metadata = this.componentMetadata.get(widget.definition?.id);
|
|
24754
24764
|
if (!metadata?.inputs?.some((input) => input.name === 'enableCustomization')) {
|
|
@@ -24759,23 +24769,16 @@ class DynamicPageBuilderComponent {
|
|
|
24759
24769
|
definition: {
|
|
24760
24770
|
...widget.definition,
|
|
24761
24771
|
inputs: {
|
|
24762
|
-
...(widget.definition
|
|
24763
|
-
enableCustomization:
|
|
24772
|
+
...(widget.definition.inputs || {}),
|
|
24773
|
+
enableCustomization: false,
|
|
24764
24774
|
},
|
|
24765
24775
|
},
|
|
24766
24776
|
};
|
|
24767
24777
|
});
|
|
24768
24778
|
return cloned;
|
|
24769
24779
|
}
|
|
24770
|
-
/**
|
|
24771
|
-
|
|
24772
|
-
*
|
|
24773
|
-
* The runtime must receive `enableCustomization=true` so nested components can
|
|
24774
|
-
* expose their editors, but that projection is not part of the authored page.
|
|
24775
|
-
* Restore the canonical value by widget key before publishing `pageChange` so
|
|
24776
|
-
* a presentation-only edit cannot accidentally persist authoring chrome.
|
|
24777
|
-
*/
|
|
24778
|
-
toCanonicalPageFromAuthoringRuntime(page) {
|
|
24780
|
+
/** Restores authoring-only child inputs from the canonical builder page. */
|
|
24781
|
+
toCanonicalPageFromRuntime(page) {
|
|
24779
24782
|
const canonicalByKey = new Map((this.currentPage().widgets || []).map((widget) => [widget.key, widget]));
|
|
24780
24783
|
const cloned = this.clonePage(page);
|
|
24781
24784
|
cloned.widgets = (cloned.widgets || []).map((widget) => {
|
|
@@ -24783,43 +24786,23 @@ class DynamicPageBuilderComponent {
|
|
|
24783
24786
|
if (!metadata?.inputs?.some((input) => input.name === 'enableCustomization')) {
|
|
24784
24787
|
return widget;
|
|
24785
24788
|
}
|
|
24786
|
-
const canonicalInputs = canonicalByKey.get(widget.key)?.definition
|
|
24787
|
-
const inputs = { ...(widget.definition
|
|
24788
|
-
if (canonicalInputs &&
|
|
24789
|
-
|
|
24789
|
+
const canonicalInputs = canonicalByKey.get(widget.key)?.definition.inputs;
|
|
24790
|
+
const inputs = { ...(widget.definition.inputs || {}) };
|
|
24791
|
+
if (canonicalInputs &&
|
|
24792
|
+
Object.prototype.hasOwnProperty.call(canonicalInputs, 'enableCustomization')) {
|
|
24793
|
+
inputs['enableCustomization'] =
|
|
24794
|
+
canonicalInputs['enableCustomization'];
|
|
24790
24795
|
}
|
|
24791
24796
|
else {
|
|
24792
24797
|
delete inputs['enableCustomization'];
|
|
24793
24798
|
}
|
|
24794
24799
|
return {
|
|
24795
24800
|
...widget,
|
|
24796
|
-
definition: {
|
|
24797
|
-
...widget.definition,
|
|
24798
|
-
inputs,
|
|
24799
|
-
},
|
|
24801
|
+
definition: { ...widget.definition, inputs },
|
|
24800
24802
|
};
|
|
24801
24803
|
});
|
|
24802
24804
|
return cloned;
|
|
24803
24805
|
}
|
|
24804
|
-
toPresentationRuntimeWidget(widget) {
|
|
24805
|
-
const metadata = this.componentMetadata.get(widget.definition?.id);
|
|
24806
|
-
if (!metadata?.inputs?.some((input) => input.name === 'enableCustomization')) {
|
|
24807
|
-
return widget;
|
|
24808
|
-
}
|
|
24809
|
-
const inputs = widget.definition?.inputs || {};
|
|
24810
|
-
if (inputs['enableCustomization'] === false)
|
|
24811
|
-
return widget;
|
|
24812
|
-
return {
|
|
24813
|
-
...widget,
|
|
24814
|
-
definition: {
|
|
24815
|
-
...widget.definition,
|
|
24816
|
-
inputs: {
|
|
24817
|
-
...inputs,
|
|
24818
|
-
enableCustomization: false,
|
|
24819
|
-
},
|
|
24820
|
-
},
|
|
24821
|
-
};
|
|
24822
|
-
}
|
|
24823
24806
|
async applyAgenticTurnState(state) {
|
|
24824
24807
|
// A terminal turn state is the canonical end of processing. Clear the local
|
|
24825
24808
|
// interaction flag before projecting preview/review so the shell never
|
|
@@ -25627,7 +25610,7 @@ class DynamicPageBuilderComponent {
|
|
|
25627
25610
|
[strictValidation]="strictValidation"
|
|
25628
25611
|
[autoPersist]="false"
|
|
25629
25612
|
[enableCustomization]="showSettings()"
|
|
25630
|
-
[authoringCapabilities]="
|
|
25613
|
+
[authoringCapabilities]="runtimeAuthoringCapabilities()"
|
|
25631
25614
|
[showPageSettingsButton]="false"
|
|
25632
25615
|
[pageIdentity]="pageIdentity"
|
|
25633
25616
|
[componentInstanceId]="componentInstanceId"
|
|
@@ -26191,7 +26174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
26191
26174
|
[strictValidation]="strictValidation"
|
|
26192
26175
|
[autoPersist]="false"
|
|
26193
26176
|
[enableCustomization]="showSettings()"
|
|
26194
|
-
[authoringCapabilities]="
|
|
26177
|
+
[authoringCapabilities]="runtimeAuthoringCapabilities()"
|
|
26195
26178
|
[showPageSettingsButton]="false"
|
|
26196
26179
|
[pageIdentity]="pageIdentity"
|
|
26197
26180
|
[componentInstanceId]="componentInstanceId"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/page-builder",
|
|
3
|
-
"version": "9.0.
|
|
3
|
+
"version": "9.0.47",
|
|
4
4
|
"description": "Page and widget builder utilities for Praxis UI (grid, dynamic widgets, editors).",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
"@angular/forms": "^21.0.0",
|
|
9
9
|
"@angular/cdk": "^21.0.0",
|
|
10
10
|
"@angular/material": "^21.0.0",
|
|
11
|
-
"@praxisui/ai": "^9.0.
|
|
12
|
-
"@praxisui/core": "^9.0.
|
|
13
|
-
"@praxisui/settings-panel": "^9.0.
|
|
11
|
+
"@praxisui/ai": "^9.0.47",
|
|
12
|
+
"@praxisui/core": "^9.0.47",
|
|
13
|
+
"@praxisui/settings-panel": "^9.0.47",
|
|
14
14
|
"rxjs": "~7.8.0"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
3
|
import { EventEmitter, OnInit, WritableSignal, InjectionToken, Provider, OnChanges, OnDestroy, Type, SimpleChanges } from '@angular/core';
|
|
4
|
-
import { ComponentDocMeta, ComponentMetadataRegistry, PraxisI18nService, WidgetShellConfig, WidgetPageAuthoringCapabilities, WidgetShellAction, EndpointRef, ComponentPortPathSegment, LinkIntent, CompositionLink, WidgetPageDefinition, TransformKind, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, WidgetPageGroupingDefinition, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, PageIdentity, WidgetStateNode, WidgetDerivedStateNode, AiCapability, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, DomainKnowledgeChangeSetRequest, DomainKnowledgeChangeSet, DomainKnowledgeChangeSetTimelineResponse, DomainKnowledgeChangeSetFilters, DomainKnowledgeValidationResponse, DomainKnowledgeStatusTransitionRequest, DomainRuleIntakeRequest, DomainRuleIntakeResponse, DomainRuleDefinitionRequest, DomainRuleDefinition, DomainRuleSimulationRequest, DomainRuleSimulationResponse, DomainRuleStatusTransitionRequest, DomainRulePublicationRequest, DomainRulePublicationResponse, DomainRuleMaterializationFilters, DomainRuleMaterialization, DomainRuleTimelineResponse, PraxisRuntimeComponentObservationEnvelope, WidgetPageCanvasLayout, WidgetPageDeviceLayouts, WidgetPageSlotAssignments, WidgetPageStateInput, WidgetInstance, ComponentContextPack, ComponentAuthoringManifest, DiagnosticRecord, NestedPortCatalogRegistry, CompositionValidatorService, DynamicWidgetPageComponent, WidgetEventEnvelope, ObservabilityAgenticTurnMetrics, SettingsPanelBridge, ObservabilityAgenticTurnMetricBucket, RichTimelineItem } from '@praxisui/core';
|
|
4
|
+
import { ComponentDocMeta, ComponentMetadataRegistry, PraxisI18nService, WidgetShellConfig, WidgetPageAuthoringCapabilities, WidgetShellAction, EndpointRef, ComponentPortPathSegment, LinkIntent, CompositionLink, WidgetPageDefinition, TransformKind, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, WidgetPageGroupingDefinition, BUILTIN_PAGE_LAYOUT_PRESETS, BUILTIN_PAGE_THEME_PRESETS, PageIdentity, WidgetStateNode, WidgetDerivedStateNode, AiCapability, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, DomainKnowledgeChangeSetRequest, DomainKnowledgeChangeSet, DomainKnowledgeChangeSetTimelineResponse, DomainKnowledgeChangeSetFilters, DomainKnowledgeValidationResponse, DomainKnowledgeStatusTransitionRequest, DomainRuleIntakeRequest, DomainRuleIntakeResponse, DomainRuleDefinitionRequest, DomainRuleDefinition, DomainRuleSimulationRequest, DomainRuleSimulationResponse, DomainRuleStatusTransitionRequest, DomainRulePublicationRequest, DomainRulePublicationResponse, DomainRuleMaterializationFilters, DomainRuleMaterialization, DomainRuleTimelineResponse, PraxisRuntimeComponentObservationEnvelope, WidgetPageCanvasLayout, WidgetPageDeviceLayouts, WidgetPageSlotAssignments, WidgetPageStateInput, WidgetInstance, TransformOutputHint, TransformSemanticKind, ComponentContextPack, ComponentAuthoringManifest, DiagnosticRecord, NestedPortCatalogRegistry, CompositionValidatorService, DynamicWidgetPageComponent, WidgetEventEnvelope, ObservabilityAgenticTurnMetrics, SettingsPanelBridge, ObservabilityAgenticTurnMetricBucket, RichTimelineItem } from '@praxisui/core';
|
|
5
5
|
import * as rxjs from 'rxjs';
|
|
6
6
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
7
7
|
import { FormGroup, FormControl, FormArray } from '@angular/forms';
|
|
@@ -1532,6 +1532,9 @@ declare class PageBuilderAgenticAuthoringService {
|
|
|
1532
1532
|
}
|
|
1533
1533
|
|
|
1534
1534
|
type UiCompositionPlanInputSource = 'event' | 'payload' | 'state' | 'context' | 'constant';
|
|
1535
|
+
type UiCompositionPlanTransformOutput = TransformOutputHint & {
|
|
1536
|
+
semanticKind: TransformSemanticKind;
|
|
1537
|
+
};
|
|
1535
1538
|
type UiCompositionPlanComponentPortEndpoint = {
|
|
1536
1539
|
kind: 'component-port';
|
|
1537
1540
|
widget: string;
|
|
@@ -1551,8 +1554,14 @@ type UiCompositionPlanGlobalActionEndpoint = {
|
|
|
1551
1554
|
payloadExpr?: string;
|
|
1552
1555
|
meta?: Record<string, unknown>;
|
|
1553
1556
|
};
|
|
1554
|
-
|
|
1555
|
-
|
|
1557
|
+
/**
|
|
1558
|
+
* A runtime event source emitted through `dynamicPage.composition.dispatch`.
|
|
1559
|
+
* Only actionId participates in canonical endpoint matching; payload is always
|
|
1560
|
+
* supplied by the runtime dispatch event.
|
|
1561
|
+
*/
|
|
1562
|
+
type UiCompositionPlanGlobalActionSourceEndpoint = Pick<UiCompositionPlanGlobalActionEndpoint, 'kind' | 'actionId'>;
|
|
1563
|
+
type UiCompositionPlanSourceEndpoint = UiCompositionPlanComponentPortEndpoint | UiCompositionPlanStateEndpoint | UiCompositionPlanGlobalActionSourceEndpoint;
|
|
1564
|
+
type UiCompositionPlanTargetEndpoint = UiCompositionPlanComponentPortEndpoint | UiCompositionPlanStateEndpoint | UiCompositionPlanGlobalActionEndpoint;
|
|
1556
1565
|
type UiCompositionPlanEndpoint = UiCompositionPlanTargetEndpoint;
|
|
1557
1566
|
type UiCompositionPlanTransform = {
|
|
1558
1567
|
kind: 'pick-path';
|
|
@@ -1575,6 +1584,8 @@ type UiCompositionPlanTransform = {
|
|
|
1575
1584
|
id: string;
|
|
1576
1585
|
template: unknown;
|
|
1577
1586
|
inputSource?: UiCompositionPlanInputSource;
|
|
1587
|
+
/** Explicit semantic contract produced by the template after materialization. */
|
|
1588
|
+
output?: UiCompositionPlanTransformOutput;
|
|
1578
1589
|
};
|
|
1579
1590
|
interface UiCompositionPlanWidget {
|
|
1580
1591
|
key: string;
|
|
@@ -1975,9 +1986,8 @@ declare class DynamicPageBuilderComponent implements OnChanges, OnDestroy {
|
|
|
1975
1986
|
readonly selectedWidgetKey: _angular_core.WritableSignal<string | null>;
|
|
1976
1987
|
readonly agenticAuthoringWidgetContextKey: _angular_core.WritableSignal<string | null>;
|
|
1977
1988
|
readonly agenticAuthoringPanelLayout: _angular_core.WritableSignal<PraxisAssistantShellLayout>;
|
|
1978
|
-
private previewMode;
|
|
1979
|
-
private
|
|
1980
|
-
private runtimeAuthoringPageCache?;
|
|
1989
|
+
private readonly previewMode;
|
|
1990
|
+
private runtimePageCache?;
|
|
1981
1991
|
private agenticComponentCapabilities?;
|
|
1982
1992
|
private agenticComponentCapabilitiesPromise?;
|
|
1983
1993
|
private agenticTurnController?;
|
|
@@ -2003,6 +2013,7 @@ declare class DynamicPageBuilderComponent implements OnChanges, OnDestroy {
|
|
|
2003
2013
|
private isAuthoringCapabilityEnabled;
|
|
2004
2014
|
isPreviewMode(): boolean;
|
|
2005
2015
|
runtimePage(): WidgetPageDefinition;
|
|
2016
|
+
runtimeAuthoringCapabilities(): PageBuilderAuthoringCapabilities;
|
|
2006
2017
|
builderModeLabel(): string;
|
|
2007
2018
|
onRuntimePageChange(next: WidgetPageDefinition): void;
|
|
2008
2019
|
onRuntimeWidgetEvent(event: WidgetEventEnvelope): void;
|
|
@@ -2184,18 +2195,14 @@ declare class DynamicPageBuilderComponent implements OnChanges, OnDestroy {
|
|
|
2184
2195
|
private clearAgenticLocalPreviewHistory;
|
|
2185
2196
|
private agenticCurrentPageFingerprint;
|
|
2186
2197
|
private enterPreviewMode;
|
|
2187
|
-
private toPresentationRuntimePage;
|
|
2188
|
-
private toAuthoringRuntimePage;
|
|
2189
2198
|
/**
|
|
2190
|
-
*
|
|
2191
|
-
*
|
|
2192
|
-
*
|
|
2193
|
-
* expose their editors, but that projection is not part of the authored page.
|
|
2194
|
-
* Restore the canonical value by widget key before publishing `pageChange` so
|
|
2195
|
-
* a presentation-only edit cannot accidentally persist authoring chrome.
|
|
2199
|
+
* Builds one mode-independent runtime projection for the authored page.
|
|
2200
|
+
* Child authoring chrome is materialized by the embedded dynamic page from
|
|
2201
|
+
* host capabilities, so JSON/Visual mode changes never replace this object.
|
|
2196
2202
|
*/
|
|
2197
|
-
private
|
|
2198
|
-
|
|
2203
|
+
private toRuntimeBasePage;
|
|
2204
|
+
/** Restores authoring-only child inputs from the canonical builder page. */
|
|
2205
|
+
private toCanonicalPageFromRuntime;
|
|
2199
2206
|
private applyAgenticTurnState;
|
|
2200
2207
|
private primeSharedRuleHandoff;
|
|
2201
2208
|
private moveAgenticAuthoringPanelToReviewSidecar;
|
|
@@ -2267,4 +2274,4 @@ declare const PRAXIS_PAGE_BUILDER_COMPONENT_METADATA: ComponentDocMeta;
|
|
|
2267
2274
|
declare function providePraxisPageBuilderMetadata(): Provider;
|
|
2268
2275
|
|
|
2269
2276
|
export { ComponentPaletteDialogComponent, ConfirmDialogComponent, ConnectionEditorComponent, DynamicPageBuilderComponent, DynamicPageConfigEditorComponent, FloatingToolbarComponent, PAGE_BUILDER_AGENTIC_AUTHORING_OPTIONS, PAGE_BUILDER_AI_CAPABILITIES, PAGE_BUILDER_COMPONENT_CONTEXT_PACK, PAGE_BUILDER_WIDGET_AI_CATALOGS, PLACEHOLDER, PRAXIS_PAGE_BUILDER_AUTHORING_MANIFEST, PRAXIS_PAGE_BUILDER_COMPONENT_METADATA, PageBuilderAgenticAuthoringService, PageConfigEditorComponent, TileToolbarComponent, WidgetShellEditorComponent, clearWidgetAiCatalogs, compileUiCompositionPlan, getPageAiCatalog, getWidgetAiCapabilities, preflightUiCompositionPlan, providePageBuilderWidgetAiCatalogs, providePraxisPageBuilderMetadata, registerWidgetAiCatalog, registerWidgetAiCatalogs, resolveUiCompositionPlanTemplate, validateUiCompositionPlan };
|
|
2270
|
-
export type { Capability, CapabilityCatalog, CapabilityCategory, ComponentPaletteData, ComponentPaletteSelection, ConfirmDialogData, PageBuilderAgenticAuthoringAttachmentSummary, PageBuilderAgenticAuthoringCandidate, PageBuilderAgenticAuthoringComponentCapabilitiesResult, PageBuilderAgenticAuthoringComponentCapability, PageBuilderAgenticAuthoringComponentCapabilityCatalog, PageBuilderAgenticAuthoringComponentCapabilityExample, PageBuilderAgenticAuthoringComponentFieldAlias, PageBuilderAgenticAuthoringConversationMessage, PageBuilderAgenticAuthoringGateResult, PageBuilderAgenticAuthoringIntentResolutionRequest, PageBuilderAgenticAuthoringIntentResolutionResult, PageBuilderAgenticAuthoringOptions, PageBuilderAgenticAuthoringPendingClarification, PageBuilderAgenticAuthoringPromptRequest, PageBuilderAgenticAuthoringProvider, PageBuilderAgenticAuthoringQuickReply, PageBuilderAgenticAuthoringResourceCandidatesRequest, PageBuilderAgenticAuthoringResourceCandidatesResult, PageBuilderAgenticAuthoringSharedRuleHandoff, PageBuilderAgenticAuthoringTarget, PageBuilderAgenticAuthoringTurnStreamConnectionError, PageBuilderAgenticAuthoringTurnStreamEvent, PageBuilderAgenticAuthoringTurnStreamRequest, PageBuilderAgenticAuthoringTurnStreamStartResponse, PageBuilderApplyRequest, PageBuilderApplyResult, PageBuilderAuthoringCapabilities, PageBuilderCompiledFormPatch, PageBuilderMinimalFormPlanResult, PageBuilderPreviewDiagnostics, PageBuilderPreviewResult, PageBuilderProjectKnowledgeAudit, UiCompositionPlan, UiCompositionPlanAuthoringInput, UiCompositionPlanBinding, UiCompositionPlanCompileResult, UiCompositionPlanComponentPortEndpoint, UiCompositionPlanContextScope, UiCompositionPlanContextScopeTarget, UiCompositionPlanContextValue, UiCompositionPlanDiagnostic, UiCompositionPlanEndpoint, UiCompositionPlanGlobalActionEndpoint, UiCompositionPlanInputSource, UiCompositionPlanPreflightResult, UiCompositionPlanSelectionSync, UiCompositionPlanSelectionSyncMapping, UiCompositionPlanSourceEndpoint, UiCompositionPlanStateEndpoint, UiCompositionPlanTargetEndpoint, UiCompositionPlanTemplateMaterialization, UiCompositionPlanTemplateRef, UiCompositionPlanTemplateReference, UiCompositionPlanTemplateResolutionResult, UiCompositionPlanTemplateRevision, UiCompositionPlanTransform, UiCompositionPlanWidget, ValueKind };
|
|
2277
|
+
export type { Capability, CapabilityCatalog, CapabilityCategory, ComponentPaletteData, ComponentPaletteSelection, ConfirmDialogData, PageBuilderAgenticAuthoringAttachmentSummary, PageBuilderAgenticAuthoringCandidate, PageBuilderAgenticAuthoringComponentCapabilitiesResult, PageBuilderAgenticAuthoringComponentCapability, PageBuilderAgenticAuthoringComponentCapabilityCatalog, PageBuilderAgenticAuthoringComponentCapabilityExample, PageBuilderAgenticAuthoringComponentFieldAlias, PageBuilderAgenticAuthoringConversationMessage, PageBuilderAgenticAuthoringGateResult, PageBuilderAgenticAuthoringIntentResolutionRequest, PageBuilderAgenticAuthoringIntentResolutionResult, PageBuilderAgenticAuthoringOptions, PageBuilderAgenticAuthoringPendingClarification, PageBuilderAgenticAuthoringPromptRequest, PageBuilderAgenticAuthoringProvider, PageBuilderAgenticAuthoringQuickReply, PageBuilderAgenticAuthoringResourceCandidatesRequest, PageBuilderAgenticAuthoringResourceCandidatesResult, PageBuilderAgenticAuthoringSharedRuleHandoff, PageBuilderAgenticAuthoringTarget, PageBuilderAgenticAuthoringTurnStreamConnectionError, PageBuilderAgenticAuthoringTurnStreamEvent, PageBuilderAgenticAuthoringTurnStreamRequest, PageBuilderAgenticAuthoringTurnStreamStartResponse, PageBuilderApplyRequest, PageBuilderApplyResult, PageBuilderAuthoringCapabilities, PageBuilderCompiledFormPatch, PageBuilderMinimalFormPlanResult, PageBuilderPreviewDiagnostics, PageBuilderPreviewResult, PageBuilderProjectKnowledgeAudit, UiCompositionPlan, UiCompositionPlanAuthoringInput, UiCompositionPlanBinding, UiCompositionPlanCompileResult, UiCompositionPlanComponentPortEndpoint, UiCompositionPlanContextScope, UiCompositionPlanContextScopeTarget, UiCompositionPlanContextValue, UiCompositionPlanDiagnostic, UiCompositionPlanEndpoint, UiCompositionPlanGlobalActionEndpoint, UiCompositionPlanGlobalActionSourceEndpoint, UiCompositionPlanInputSource, UiCompositionPlanPreflightResult, UiCompositionPlanSelectionSync, UiCompositionPlanSelectionSyncMapping, UiCompositionPlanSourceEndpoint, UiCompositionPlanStateEndpoint, UiCompositionPlanTargetEndpoint, UiCompositionPlanTemplateMaterialization, UiCompositionPlanTemplateRef, UiCompositionPlanTemplateReference, UiCompositionPlanTemplateResolutionResult, UiCompositionPlanTemplateRevision, UiCompositionPlanTransform, UiCompositionPlanTransformOutput, UiCompositionPlanWidget, ValueKind };
|