@praxisui/dynamic-form 10.0.0-rc.4 → 10.0.0-rc.40

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.
@@ -7,7 +7,8 @@ import { MatDialog } from '@angular/material/dialog';
7
7
  import { MatSnackBar } from '@angular/material/snack-bar';
8
8
  import { CdkDragStart, CdkDragMove, CdkDragEnd, CdkDragDrop } from '@angular/cdk/drag-drop';
9
9
  import * as _praxisui_core from '@praxisui/core';
10
- import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, AiCapability, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, DynamicFormLayoutPolicy, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, FormPayloadPreviewEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, EnterpriseRuntimeContextService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, FormHelpPresentationConfig, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
10
+ import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, DynamicFormMode, AiCapability, DynamicFormLayoutScope, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, FormPresentationPreset, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, FormLayoutMode, FormLayoutOptions, DynamicFormLayoutPolicy, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, FormPayloadPreviewEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, FormLayoutTabItem, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, EnterpriseRuntimeContextService, FormLayoutTabsAppearance, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, FormHelpPresentationConfig, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, DiscoveredResourceOption, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, SchemaIdParams, CompiledDynamicFormSchema, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest, GovernedPagePreviewWidgetAdapter, WidgetInstance } from '@praxisui/core';
11
+ export { CompiledDynamicFormSchema, DynamicFormLayoutScope, DynamicFormMode } from '@praxisui/core';
11
12
  import * as rxjs from 'rxjs';
12
13
  import { Observable, Subscription, BehaviorSubject } from 'rxjs';
13
14
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
@@ -374,7 +375,7 @@ declare class ReactiveDeterminationRuntimeService {
374
375
  waitForStable(form: FormGroup, timeoutMs?: number): Promise<boolean>;
375
376
  observePending(form: FormGroup, observer: (pending: boolean) => void): Subscription;
376
377
  isOwnedTarget(form: FormGroup, control: AbstractControl): boolean;
377
- connect(form: FormGroup, definitions: ReactiveDeterminationDefinition[], executor: ReactiveDeterminationExecutor, onEvent?: (event: ReactiveDeterminationExecutionEvent) => void, operationTimeoutMs?: number): Subscription;
378
+ connect(form: FormGroup, definitions: ReactiveDeterminationDefinition[], executor: ReactiveDeterminationExecutor, onEvent?: (event: ReactiveDeterminationExecutionEvent) => void, operationTimeoutMs?: number, fieldMetadata?: readonly FieldMetadata[]): Subscription;
378
379
  private resolveControls;
379
380
  private waitForUpstreamDeterminations;
380
381
  private claimTargets;
@@ -508,7 +509,7 @@ declare class PraxisFormActionsComponent implements OnChanges, OnDestroy {
508
509
  interface FormAiHost {
509
510
  config: FormConfig;
510
511
  form: FormGroup;
511
- mode?: 'create' | 'edit' | 'view';
512
+ mode?: DynamicFormMode;
512
513
  enableCustomization?: boolean;
513
514
  readonlyModeGlobal?: boolean | null;
514
515
  effectiveReadonly?: boolean;
@@ -572,9 +573,11 @@ interface EditorDiagnostic {
572
573
  message: string;
573
574
  path?: string;
574
575
  }
575
- type DynamicFormMode = 'create' | 'edit' | 'view';
576
+
576
577
  interface DynamicFormBindings {
577
578
  mode?: DynamicFormMode;
579
+ /** Controls whether saved layout changes apply to all CRUD modes ('shared') or only the active mode ('mode-only'). */
580
+ layoutScope?: DynamicFormLayoutScope;
578
581
  /** Opt-in view placeholder; null explicitly disables it. */
579
582
  emptyState?: PraxisDynamicFormEmptyState | null;
580
583
  /** true: presentation in view; false: fields; null/absent: inherit layout policy. */
@@ -588,7 +591,7 @@ interface DynamicFormSchemaPrefsSnapshot {
588
591
  }
589
592
  interface DynamicFormContextSnapshot {
590
593
  backConfig?: BackConfig;
591
- presentation?: DynamicFormPresentationSnapshot;
594
+ presentation?: DynamicFormPresentationSnapshot | null;
592
595
  schemaPrefs?: DynamicFormSchemaPrefsSnapshot;
593
596
  }
594
597
  interface DynamicFormAuthoringDocument extends EditorDocument<FormConfig, DynamicFormBindings> {
@@ -647,6 +650,7 @@ interface DynamicFormApplyPlan {
647
650
  };
648
651
  diff?: {
649
652
  modeChanged?: boolean;
653
+ layoutScopeChanged?: boolean;
650
654
  presentationChanged?: boolean;
651
655
  schemaPrefsChanged?: boolean;
652
656
  backConfigChanged?: boolean;
@@ -661,6 +665,7 @@ interface DynamicFormConfigPatchChangeEvent {
661
665
  mode?: DynamicFormMode;
662
666
  presentationModeGlobal?: boolean | null;
663
667
  presentation?: DynamicFormPresentationSnapshot | null;
668
+ presentationPreset?: FormPresentationPreset;
664
669
  emptyState?: PraxisDynamicFormEmptyState | null;
665
670
  };
666
671
  }
@@ -769,6 +774,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
769
774
  private readonly resourceDiscovery;
770
775
  private readonly aiAssistantSessionEffect;
771
776
  private readonly globalActions;
777
+ private readonly optionRegistry;
772
778
  private readonly DEBUG;
773
779
  private effectiveActionsCache?;
774
780
  private effectiveActionsCacheBase?;
@@ -790,8 +796,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
790
796
  * merged context snapshot used to avoid re-binding on every change detection pass.
791
797
  */
792
798
  editorialContext: Record<string, unknown> | null;
793
- mode: 'create' | 'edit' | 'view';
794
- config: FormConfig;
799
+ mode: DynamicFormMode;
800
+ private effectiveConfig;
801
+ private configAssignment;
802
+ get config(): FormConfig;
803
+ set config(value: FormConfig);
795
804
  private hostConfigInputProvided;
796
805
  /** Optional host-level overrides for the rendered form action bar. */
797
806
  actions?: FormConfig['actions'] | null;
@@ -800,7 +809,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
800
809
  * 'resource' (padrão) usa o schema do recurso (/{resource}/schemas -> .../all response)
801
810
  * 'filter' usa o schema do DTO de filtro (via /schemas/filtered no POST /filter request)
802
811
  */
803
- schemaSource: 'resource' | 'filter';
812
+ schemaSource: 'resource' | 'filter' | 'action';
813
+ /** Canonical workflow/action identifier when bound to a command surface. */
814
+ actionId?: string | null;
815
+ /** Canonical backend operationId when bound to a command/surface endpoint. */
816
+ operationId?: string | null;
804
817
  /** Canonical schema URL published by the backend surface catalog. */
805
818
  schemaUrl?: string | null;
806
819
  /** Canonical read URL published by backend view/read-projection surfaces. */
@@ -848,9 +861,19 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
848
861
  /** Identifier for persisting layouts */
849
862
  formId?: string;
850
863
  componentInstanceId?: string;
851
- configPersistenceStrategy: 'local-first' | 'input-first';
864
+ configPersistenceStrategy: 'local-first' | 'input-first' | 'volatile';
852
865
  /** Optional layout to use instead of generated one */
853
866
  layout?: FormLayout;
867
+ /**
868
+ * Layout mode for organizing form sections: 'vertical' (default), 'tabs' or 'accordion'.
869
+ * Overrides config.layout.mode when specified.
870
+ */
871
+ layoutMode?: FormLayoutMode;
872
+ /**
873
+ * Layout configuration options for form sections (mode, tabs, defaultTabId, tabsAppearance, accordionMulti, etc.).
874
+ * Merged with and takes precedence over config.layout.
875
+ */
876
+ formLayout?: FormLayoutOptions;
854
877
  /** Metadata-driven layout preset used only when creating an initial config from schema. */
855
878
  generatedLayoutPreset: DynamicFormGeneratedLayoutPreset;
856
879
  /** Opt-in policy for schema-driven transient layout materialization. */
@@ -876,11 +899,38 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
876
899
  presentationModeGlobal: boolean | null;
877
900
  /** Projection of contextSnapshot.presentation; null clears authored style overrides. */
878
901
  presentation?: DynamicFormPresentationSnapshot | null;
902
+ /**
903
+ * Optional presentation preset applied when the form is rendered in presentation mode.
904
+ * Resolves styles for standard patterns: 'corporate-dossier', 'editorial-card', 'compact-presentation' or 'default'.
905
+ */
906
+ presentationPreset?: FormPresentationPreset;
907
+ /**
908
+ * Default visual appearance preset for sections when not explicitly configured at section level.
909
+ * Values: 'card' (default), 'plain' (borderless with divider support), 'step' (stepper badge layout).
910
+ */
911
+ sectionDefaultAppearance?: 'card' | 'plain' | 'step';
912
+ /**
913
+ * Global flag to control divider lines between plain/dossier sections.
914
+ * When true, renders a subtle separator line below each section (except the last).
915
+ */
916
+ sectionDivider?: boolean;
879
917
  visibleGlobal: boolean | null;
880
918
  fieldIconPolicy: 'all' | 'presentation-only' | 'none';
881
919
  /** Opt-in loader for shared domain rule materializations persisted outside FormConfig. */
882
920
  domainRules: PraxisDynamicFormDomainRulesOptions | boolean | null;
883
921
  get effectivePresentation(): boolean;
922
+ /** Normalizes presentation preset aliases and casing to canonical values. */
923
+ normalizePresentationPreset(preset?: string | null): FormPresentationPreset;
924
+ /** Resolved presentation preset for the form container. */
925
+ get effectivePresentationPreset(): FormPresentationPreset;
926
+ /** Resolved presentation preset for a specific section, allowing section-level override. */
927
+ getSectionPresentationPreset(section?: FormSection | null): FormPresentationPreset;
928
+ isCorporateDossierPreset(): boolean;
929
+ isEditorialCardPreset(): boolean;
930
+ isCompactPresentationPreset(): boolean;
931
+ isSectionCorporateDossier(section?: FormSection | null): boolean;
932
+ isSectionEditorialCard(section?: FormSection | null): boolean;
933
+ isSectionCompactPresentation(section?: FormSection | null): boolean;
884
934
  shouldShowContextEmptyState(): boolean;
885
935
  private hasResourceContext;
886
936
  private hasLocalRecordContext;
@@ -932,10 +982,19 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
932
982
  reactiveDeterminationExecuted: EventEmitter<ReactiveDeterminationExecutionEvent>;
933
983
  /** Emits only aggregate runtime state; no request or response payload is exposed. */
934
984
  reactiveDeterminationPendingChange: EventEmitter<boolean>;
985
+ /** Emitted when active tab changes in 'tabs' layout mode. */
986
+ tabChange: EventEmitter<string>;
987
+ /** Emitted when a tab is selected in 'tabs' layout mode. */
988
+ tabSelected: EventEmitter<FormLayoutTabItem>;
989
+ /** Active tab ID when effectiveLayoutMode === 'tabs'. */
990
+ activeTabId: string | null;
935
991
  private reactiveDeterminationPending;
936
992
  isLoading: boolean;
937
993
  submitting: boolean;
938
994
  private submitPreparationInProgress;
995
+ private submitLifecycleSequence;
996
+ private activeSubmitLifecycle;
997
+ private activeSubmitAutomatic;
939
998
  submitError: string | null;
940
999
  initializationStatus: 'idle' | 'loading' | 'success' | 'error';
941
1000
  currentErrorMessage: string;
@@ -970,6 +1029,9 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
970
1029
  private entitySelectionCleared;
971
1030
  private hydratedEntityId;
972
1031
  private loadedEntityData;
1032
+ private loadedResourceRevision;
1033
+ private resourceRevisionInvalidated;
1034
+ private entityReadAttempt;
973
1035
  protected entityHydrationPending: boolean;
974
1036
  protected entityReadFailed: boolean;
975
1037
  protected entityReadText(key: 'loading' | 'error' | 'retry' | 'region' | 'success'): string;
@@ -984,6 +1046,10 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
984
1046
  private schemaCache;
985
1047
  private lastSchemaMeta?;
986
1048
  private readonly schemaMetaPersistenceQueues;
1049
+ private persistenceContextEpoch;
1050
+ private persistenceContextDestroyed;
1051
+ /** Fence delayed work; requests already sent are not retroactively canceled. */
1052
+ private persistenceGuard;
987
1053
  private readonly formConfigPersistenceQueues;
988
1054
  private readonly formConfigPersistenceGenerations;
989
1055
  private readonly formConfigConflictBlockThrough;
@@ -1090,6 +1156,17 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1090
1156
  private resolveSubmitOperation;
1091
1157
  private buildSubmitRequest;
1092
1158
  private resolveSubmitResourceVersion;
1159
+ /** Identity and server context are captured with the representation, never reconstructed at submit by GET. */
1160
+ private resourceRevisionBinding;
1161
+ private usesAutomaticItemRevision;
1162
+ private isResourceRevisionCurrent;
1163
+ private invalidateAutomaticSubmitUi;
1164
+ private resourceRevisionNeedsReload;
1165
+ private resourceRevisionReloadError;
1166
+ private captureSavedResourceRevision;
1167
+ private rejectResourceRevision;
1168
+ private normalizeResourceVersionToken;
1169
+ private extractResourceVersionCandidate;
1093
1170
  private normalizeSubmitMethod;
1094
1171
  private formatResourceVersion;
1095
1172
  private resolveSubmitHref;
@@ -1116,6 +1193,8 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1116
1193
  private initializeStandaloneConfig;
1117
1194
  private initializeDisconnectedEmptyState;
1118
1195
  private reloadForModeChange;
1196
+ private resourceRevisionContextScope;
1197
+ private subscribeToRuntimeContextChanges;
1119
1198
  ngOnInit(): void;
1120
1199
  ngOnChanges(changes: SimpleChanges): void;
1121
1200
  private blurAllInputs;
@@ -1134,6 +1213,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1134
1213
  private reconcileLoadedConfigWithServerSchema;
1135
1214
  private hostConfigHasAuthoredLocalFieldsNotInLocalConfig;
1136
1215
  private syncWithServer;
1216
+ private isActionCommandWithoutExplicitReadUrl;
1137
1217
  private loadEntity;
1138
1218
  private hydrateEntityFromInitialValue;
1139
1219
  private flushEntityHydrationState;
@@ -1219,6 +1299,18 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1219
1299
  private areRuleValuesEqual;
1220
1300
  private buildRuleApplicationTargetIndex;
1221
1301
  private setRuleApplicationDiagnostics;
1302
+ get effectiveLayoutMode(): FormLayoutMode;
1303
+ get effectiveTabsAppearance(): FormLayoutTabsAppearance;
1304
+ get effectiveAccordionMulti(): boolean;
1305
+ get effectiveHideSectionHeaderInTabs(): boolean;
1306
+ get effectiveTabs(): FormLayoutTabItem[];
1307
+ ensureActiveTabValid(): void;
1308
+ selectTab(tabId: string): void;
1309
+ isSectionInActiveTab(section?: FormSection): boolean;
1310
+ getTabErrorCount(tab: FormLayoutTabItem): number;
1311
+ getTabAriaControls(tab: FormLayoutTabItem): string;
1312
+ getTabIdForSection(section?: FormSection): string | null;
1313
+ shouldHideSectionHeader(section?: FormSection): boolean;
1222
1314
  isSectionCollapsed(section?: FormSection): boolean;
1223
1315
  isSectionCollapsible(section?: FormSection): boolean;
1224
1316
  private getSectionRuleProps;
@@ -1230,6 +1322,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1230
1322
  getSectionTitle(section: FormSection): string | undefined;
1231
1323
  getSectionDescription(section: FormSection): string | undefined;
1232
1324
  getSectionAppearance(section: FormSection): 'card' | 'plain' | 'step' | undefined;
1325
+ isSectionDividerEnabled(section: FormSection): boolean;
1233
1326
  getSectionStepLabel(section: FormSection): string | undefined;
1234
1327
  getSectionTitleColor(section: FormSection): string | undefined;
1235
1328
  getSectionDescriptionColor(section: FormSection): string | undefined;
@@ -1513,6 +1606,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1513
1606
  private captureCurrentPresentationSnapshot;
1514
1607
  private captureCurrentSchemaPrefsSnapshot;
1515
1608
  private executeDynamicFormEditorApplyPlan;
1609
+ private buildCrossModeMetadataSeed;
1610
+ private resolveSiblingModeComponentKeyIds;
1611
+ private resolveSiblingModeFormConfigKeys;
1612
+ private resolveSiblingModePresentationKeys;
1613
+ private persistSharedFormConfigAcrossModes;
1516
1614
  private attachRuntimeMetadataToDynamicFormConfig;
1517
1615
  private emitConfigPatchChange;
1518
1616
  private cloneFormConfigForPatch;
@@ -1527,6 +1625,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1527
1625
  private tryBuildExplicitSchemaContext;
1528
1626
  private buildSchemaContext;
1529
1627
  private getSchemaWithCache;
1628
+ /**
1629
+ * Invalida o cache de schema compilado para a instância atual e força
1630
+ * novo carregamento na próxima requisição.
1631
+ */
1632
+ invalidateSchemaCache(): void;
1530
1633
  private isReactiveValidationEnabled;
1531
1634
  private getReactiveValidationDebounceMs;
1532
1635
  private waitForGlobalConfigReadyForSchema;
@@ -1535,7 +1638,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1535
1638
  private applyPresentationVars;
1536
1639
  private applyPresentationConfig;
1537
1640
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicForm, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
1538
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "emptyState": { "alias": "emptyState"; "required": false; }; "editorialContext": { "alias": "editorialContext"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "config": { "alias": "config"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "schemaSource": { "alias": "schemaSource"; "required": false; }; "schemaUrl": { "alias": "schemaUrl"; "required": false; }; "readUrl": { "alias": "readUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "required": false; }; "submitResourceVersionTargetResourceKey": { "alias": "submitResourceVersionTargetResourceKey"; "required": false; }; "submitResourceVersionTargetIdField": { "alias": "submitResourceVersionTargetIdField"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showAiAssistant": { "alias": "showAiAssistant"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "generatedLayoutPreset": { "alias": "generatedLayoutPreset"; "required": false; }; "layoutPolicy": { "alias": "layoutPolicy"; "required": false; }; "backConfig": { "alias": "backConfig"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "removeEmptyContainersOnSave": { "alias": "removeEmptyContainersOnSave"; "required": false; }; "reactiveValidation": { "alias": "reactiveValidation"; "required": false; }; "reactiveValidationDebounceMs": { "alias": "reactiveValidationDebounceMs"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "readonlyModeGlobal": { "alias": "readonlyModeGlobal"; "required": false; }; "disabledModeGlobal": { "alias": "disabledModeGlobal"; "required": false; }; "presentationModeGlobal": { "alias": "presentationModeGlobal"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "fieldIconPolicy": { "alias": "fieldIconPolicy"; "required": false; }; "domainRules": { "alias": "domainRules"; "required": false; }; "customEndpoints": { "alias": "customEndpoints"; "required": false; }; }, { "formSubmit": "formSubmit"; "formCancel": "formCancel"; "formReset": "formReset"; "configChange": "configChange"; "configPatchChange": "configPatchChange"; "formReady": "formReady"; "valueChange": "valueChange"; "payloadPreviewChange": "payloadPreviewChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; }, never, never, true, never>;
1641
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "emptyState": { "alias": "emptyState"; "required": false; }; "editorialContext": { "alias": "editorialContext"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "config": { "alias": "config"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "schemaSource": { "alias": "schemaSource"; "required": false; }; "actionId": { "alias": "actionId"; "required": false; }; "operationId": { "alias": "operationId"; "required": false; }; "schemaUrl": { "alias": "schemaUrl"; "required": false; }; "readUrl": { "alias": "readUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "required": false; }; "submitResourceVersionTargetResourceKey": { "alias": "submitResourceVersionTargetResourceKey"; "required": false; }; "submitResourceVersionTargetIdField": { "alias": "submitResourceVersionTargetIdField"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showAiAssistant": { "alias": "showAiAssistant"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "layoutMode": { "alias": "layoutMode"; "required": false; }; "formLayout": { "alias": "formLayout"; "required": false; }; "generatedLayoutPreset": { "alias": "generatedLayoutPreset"; "required": false; }; "layoutPolicy": { "alias": "layoutPolicy"; "required": false; }; "backConfig": { "alias": "backConfig"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "removeEmptyContainersOnSave": { "alias": "removeEmptyContainersOnSave"; "required": false; }; "reactiveValidation": { "alias": "reactiveValidation"; "required": false; }; "reactiveValidationDebounceMs": { "alias": "reactiveValidationDebounceMs"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "readonlyModeGlobal": { "alias": "readonlyModeGlobal"; "required": false; }; "disabledModeGlobal": { "alias": "disabledModeGlobal"; "required": false; }; "presentationModeGlobal": { "alias": "presentationModeGlobal"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "presentationPreset": { "alias": "presentationPreset"; "required": false; }; "sectionDefaultAppearance": { "alias": "sectionDefaultAppearance"; "required": false; }; "sectionDivider": { "alias": "sectionDivider"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "fieldIconPolicy": { "alias": "fieldIconPolicy"; "required": false; }; "domainRules": { "alias": "domainRules"; "required": false; }; "customEndpoints": { "alias": "customEndpoints"; "required": false; }; }, { "formSubmit": "formSubmit"; "formCancel": "formCancel"; "formReset": "formReset"; "configChange": "configChange"; "configPatchChange": "configPatchChange"; "formReady": "formReady"; "valueChange": "valueChange"; "payloadPreviewChange": "payloadPreviewChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; "tabChange": "tabChange"; "tabSelected": "tabSelected"; }, never, never, true, never>;
1539
1642
  }
1540
1643
 
1541
1644
  declare class FormConfigService {
@@ -1718,8 +1821,10 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1718
1821
  private includeBackConfigBlock;
1719
1822
  formId?: string;
1720
1823
  componentKeyId?: string;
1721
- inputMode: 'create' | 'edit' | 'view';
1824
+ inputMode: DynamicFormMode;
1825
+ inputLayoutScope: DynamicFormLayoutScope;
1722
1826
  private includeBindingsBlock;
1827
+ private includeLayoutScopeBinding;
1723
1828
  private readonly editorMode;
1724
1829
  get isPresentationMode(): boolean;
1725
1830
  supportsPresentationSettings: boolean;
@@ -1777,7 +1882,11 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1777
1882
  };
1778
1883
  private destroy$;
1779
1884
  private hasProcessedInitialRuleState;
1885
+ ruleConversionFailed: boolean;
1886
+ private readonly jsonLogic;
1887
+ private readonly cascadeRulesService;
1780
1888
  private jsonEditorIsValid;
1889
+ private cascadeDraftIsValid;
1781
1890
  private globalActionValidationIssues;
1782
1891
  private readonly i18n;
1783
1892
  readonly globalActionCatalog: GlobalActionCatalogEntry[];
@@ -1790,7 +1899,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1790
1899
  isValid$: BehaviorSubject<boolean>;
1791
1900
  isBusy$: BehaviorSubject<boolean>;
1792
1901
  private lastRulesSignature;
1793
- private pendingRulePropertiesStateSignature;
1902
+ private supersededRuleStateSignature;
1794
1903
  private readonly DEBUG;
1795
1904
  private debugLog;
1796
1905
  get configTabOptions(): ConfigEditorTabOption[];
@@ -1808,6 +1917,8 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1808
1917
  onJsonValidationChange(result: JsonValidationResult): void;
1809
1918
  onJsonEditorEvent(_event: JsonEditorEvent): void;
1810
1919
  onConfigChange(newConfig: FormConfig): void;
1920
+ onCascadeValidChange(valid: boolean): void;
1921
+ private isCascadeGraphValid;
1811
1922
  private updateValidityState;
1812
1923
  private collectGlobalActionValidationIssues;
1813
1924
  private collectGlobalActionValidationTargets;
@@ -1860,6 +1971,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1860
1971
  getRuleDiagnosticDetails(diagnostic: FormRuleDiagnostics): string[];
1861
1972
  private getRulePropertyIssueNames;
1862
1973
  private markLlmRuleAccepted;
1974
+ private projectBuilderRules;
1863
1975
  private refreshRuleDiagnostics;
1864
1976
  get jsonDocument(): DynamicFormAuthoringDocument;
1865
1977
  onBackConfigChange(): void;
@@ -1870,6 +1982,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1870
1982
  hasResolvedRuntimeContract(): boolean;
1871
1983
  describeRuntimeSource(source?: DynamicFormRuntimeValueSource): string;
1872
1984
  onInputModeChange(): void;
1985
+ onLayoutScopeChange(scope: DynamicFormLayoutScope): void;
1873
1986
  onPresentationPrefsChange(reason: string): void;
1874
1987
  onSchemaPrefsChange(reason: string): void;
1875
1988
  private createRuleBuilderConfig;
@@ -1890,10 +2003,12 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1890
2003
  onCascadeApply(patch: Record<string, Partial<FieldDefinition>>): void;
1891
2004
  private syncCascadeManagerFields;
1892
2005
  private stripLegacy;
2006
+ private hydrateRuleDraft;
1893
2007
  private computeRulesSignature;
1894
2008
  restoreHintsDefaults(): void;
1895
2009
  private loadPrefsFromStorage;
1896
2010
  private normalizeMode;
2011
+ private normalizeLayoutScope;
1897
2012
  private buildAuthoringDocument;
1898
2013
  private normalizeResolvedRuntimeContract;
1899
2014
  private createBackConfigState;
@@ -1918,6 +2033,14 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
1918
2033
  config: FormConfig;
1919
2034
  formId?: string;
1920
2035
  resourcePath?: string;
2036
+ /**
2037
+ * Optional logical endpoint key for multi-gateway filter schema resolution.
2038
+ */
2039
+ endpointKey?: ApiEndpoint;
2040
+ /**
2041
+ * Optional explicit API URL entry override for filter schema resolution.
2042
+ */
2043
+ apiUrlEntry?: ApiUrlEntry | null;
1921
2044
  mode?: string;
1922
2045
  formReady: EventEmitter<{
1923
2046
  formGroup: FormGroup<Record<string, any>>;
@@ -1935,11 +2058,18 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
1935
2058
  form: FormGroup<Record<string, any>>;
1936
2059
  private valueChangesSub?;
1937
2060
  private statusChangesSub?;
2061
+ private schemaSub?;
2062
+ private hydratedFieldMetadata;
2063
+ private lastHydratedResourceKey;
1938
2064
  private columnFieldsCache;
1939
2065
  private singleFieldCache;
2066
+ private readonly crudService;
2067
+ private readonly resourceDiscovery;
2068
+ private readonly cdr;
1940
2069
  constructor(dynamicForm: DynamicFormService);
1941
2070
  ngOnChanges(changes: SimpleChanges): void;
1942
2071
  ngOnDestroy(): void;
2072
+ private loadFilterSchemaFieldsIfNeeded;
1943
2073
  private buildForm;
1944
2074
  private buildRestorableValues;
1945
2075
  private hasExplicitDefaultValue;
@@ -1953,7 +2083,7 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
1953
2083
  trackByRow(i: number, _row: FormRow): string;
1954
2084
  trackByColumn(i: number, col: FormColumn): string;
1955
2085
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterForm, never>;
1956
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilterForm, "praxis-filter-form", never, { "config": { "alias": "config"; "required": true; }; "formId": { "alias": "formId"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "formReady": "formReady"; "valueChange": "valueChange"; "submit": "submit"; "requestSearch": "requestSearch"; "validityChange": "validityChange"; }, never, never, true, never>;
2086
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilterForm, "praxis-filter-form", never, { "config": { "alias": "config"; "required": true; }; "formId": { "alias": "formId"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "endpointKey": { "alias": "endpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "formReady": "formReady"; "valueChange": "valueChange"; "submit": "submit"; "requestSearch": "requestSearch"; "validityChange": "validityChange"; }, never, never, true, never>;
1957
2087
  }
1958
2088
 
1959
2089
  /** Metadata for PraxisFilterForm component */
@@ -1965,6 +2095,9 @@ interface PraxisFilterFormWidgetEditorInputs {
1965
2095
  config?: FormConfig | null;
1966
2096
  formId?: string;
1967
2097
  resourcePath?: string;
2098
+ apiEndpointKey?: ApiEndpoint | string | null;
2099
+ endpointKey?: ApiEndpoint;
2100
+ apiUrlEntry?: ApiUrlEntry | null;
1968
2101
  mode?: DynamicFormMode | string;
1969
2102
  [key: string]: unknown;
1970
2103
  }
@@ -1978,13 +2111,37 @@ declare class PraxisFilterFormWidgetConfigEditor implements SettingsValueProvide
1978
2111
  readonly isDirty$: BehaviorSubject<boolean>;
1979
2112
  readonly isValid$: BehaviorSubject<boolean>;
1980
2113
  readonly isBusy$: BehaviorSubject<boolean>;
2114
+ schemaWarning: string;
1981
2115
  private readonly subscription;
2116
+ private schemaSubscription?;
2117
+ private childBusy;
2118
+ private schemaLoading;
2119
+ private resourcePathDraft?;
2120
+ private selectedCatalogResource;
2121
+ private committedBaselineDocument?;
2122
+ private readonly crudService;
2123
+ private readonly resourceDiscovery;
2124
+ private readonly cdr;
2125
+ get effectiveResourcePath(): string;
2126
+ get effectiveEndpointKey(): ApiEndpoint | undefined;
2127
+ get effectiveApiUrlEntry(): ApiUrlEntry | null | undefined;
2128
+ onResourceQuickConnect(resourcePath: string): void;
2129
+ onCatalogResourceSelected(entry: DiscoveredResourceOption | null): void;
2130
+ onResourceQuickClear(): void;
2131
+ private updateDirtyState;
1982
2132
  ngAfterViewInit(): void;
1983
2133
  ngOnDestroy(): void;
1984
2134
  getSettingsValue(): PraxisFilterFormWidgetEditorValue;
1985
2135
  onSave(): PraxisFilterFormWidgetEditorValue;
1986
2136
  reset(): void;
2137
+ private publishBusy;
1987
2138
  private initializeChildEditor;
2139
+ private applyBaselineDocumentToChildEditor;
2140
+ private applyDraftDocumentToChildEditor;
2141
+ private loadFilterSchemaFieldsIfNeeded;
2142
+ private extractCatalogFallbackFields;
2143
+ private applyLoadedFilterFieldMetadata;
2144
+ private buildDiscoveryOptions;
1988
2145
  private buildValue;
1989
2146
  private createDocumentFromInputs;
1990
2147
  private normalizeMode;
@@ -2105,6 +2262,10 @@ declare class LayoutEditorComponent implements OnInit {
2105
2262
  get layoutSections(): FormSection[];
2106
2263
  canApplyAll(): boolean;
2107
2264
  applyGapToAll(): void;
2265
+ canCalibrateFieldsFromSemantics(): boolean;
2266
+ calibrateAllFieldsFromSemantics(): void;
2267
+ canOrganizeSectionsFromSemantics(): boolean;
2268
+ organizeSectionsFromSemantics(): void;
2108
2269
  ngOnInit(): void;
2109
2270
  handleKeydown(event: KeyboardEvent): void;
2110
2271
  /**
@@ -2321,6 +2482,7 @@ declare class FieldConfiguratorComponent {
2321
2482
  private readonly categoryByType;
2322
2483
  private resolveEditorialMeta;
2323
2484
  get icon(): string;
2485
+ private normalizedFieldControlType;
2324
2486
  get typeClass(): string;
2325
2487
  get typeSpecificClass(): string;
2326
2488
  get typeLabel(): string;
@@ -2332,8 +2494,13 @@ declare class FieldConfiguratorComponent {
2332
2494
 
2333
2495
  interface PraxisDynamicFormWidgetEditorInputs {
2334
2496
  config?: FormConfig | null;
2497
+ resourcePath?: string | null;
2498
+ apiEndpointKey?: ApiEndpoint | string | null;
2499
+ endpointKey?: ApiEndpoint;
2500
+ apiUrlEntry?: ApiUrlEntry | null;
2501
+ schemaSource?: 'resource' | 'filter';
2335
2502
  layoutPolicy?: DynamicFormLayoutPolicy | null;
2336
- configPersistenceStrategy?: 'local-first' | 'input-first';
2503
+ configPersistenceStrategy?: 'local-first' | 'input-first' | 'volatile';
2337
2504
  mode?: DynamicFormMode;
2338
2505
  emptyState?: PraxisDynamicFormEmptyState | null;
2339
2506
  presentationModeGlobal?: boolean | null;
@@ -2350,23 +2517,46 @@ interface PraxisDynamicFormWidgetEditorValue {
2350
2517
  inputs: PraxisDynamicFormWidgetEditorInputs;
2351
2518
  }
2352
2519
  declare class PraxisDynamicFormWidgetConfigEditor implements SettingsValueProvider, AfterViewInit, OnDestroy {
2520
+ private readonly crudService;
2521
+ private readonly resourceDiscovery;
2522
+ private readonly cdr;
2353
2523
  inputs: PraxisDynamicFormWidgetEditorInputs | null;
2354
2524
  widgetKey?: string;
2355
2525
  appliedValues$?: Observable<unknown>;
2356
2526
  private appliedSource?;
2527
+ private appliedResourcePath?;
2357
2528
  /** Runtime evidence supplied by the existing component editor context resolver. */
2358
2529
  context: Record<string, unknown>;
2359
2530
  formEditor?: PraxisDynamicFormConfigEditor;
2360
2531
  readonly isDirty$: BehaviorSubject<boolean>;
2361
2532
  readonly isValid$: BehaviorSubject<boolean>;
2362
2533
  readonly isBusy$: BehaviorSubject<boolean>;
2534
+ schemaWarning: string;
2363
2535
  private readonly subscription;
2536
+ private schemaSubscription?;
2537
+ private childBusy;
2538
+ private schemaLoading;
2364
2539
  private initialEditorConfig?;
2540
+ private committedBaselineConfig?;
2541
+ private committedBaselineDocument?;
2365
2542
  private sourceDraft?;
2366
- get configurationSource(): 'local-first' | 'input-first';
2543
+ private resourcePathDraft?;
2544
+ selectedCatalogResource: DiscoveredResourceOption | null;
2545
+ private optionalInject;
2546
+ get configurationSource(): 'local-first' | 'input-first' | 'volatile';
2547
+ get effectiveResourcePath(): string;
2548
+ get effectiveEndpointKey(): ApiEndpoint | undefined;
2549
+ get effectiveApiUrlEntry(): ApiUrlEntry | null | undefined;
2550
+ get effectiveDiscoveryIntent(): 'crud' | 'filter';
2551
+ get hasReadOnlyModeWarning(): boolean;
2552
+ switchToReadOnlyViewMode(): void;
2553
+ onCatalogResourceSelected(resource: DiscoveredResourceOption | null): void;
2367
2554
  changeConfigurationSource(value: string): void;
2555
+ onResourceQuickConnect(resourcePath: string): void;
2556
+ onResourceQuickClear(): void;
2557
+ private baselineResourcePath;
2368
2558
  private updateDirtyState;
2369
- private readonly cdr;
2559
+ private publishBusy;
2370
2560
  ngAfterViewInit(): void;
2371
2561
  ngOnDestroy(): void;
2372
2562
  getSettingsValue(): PraxisDynamicFormWidgetEditorValue;
@@ -2374,6 +2564,12 @@ declare class PraxisDynamicFormWidgetConfigEditor implements SettingsValueProvid
2374
2564
  acceptAppliedValue(value: unknown): void;
2375
2565
  reset(): void;
2376
2566
  private initializeChildEditor;
2567
+ private applyBaselineDocumentToChildEditor;
2568
+ private applyDraftDocumentToChildEditor;
2569
+ private loadResourceSchemaFieldsIfNeeded;
2570
+ private extractCatalogFallbackFields;
2571
+ private applyFieldMetadataHydration;
2572
+ private buildDiscoveryOptions;
2377
2573
  private buildValue;
2378
2574
  private createDocumentFromInputs;
2379
2575
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicFormWidgetConfigEditor, never>;
@@ -2409,6 +2605,30 @@ declare class DomainRuleFormRulesService {
2409
2605
  static ɵprov: i0.ɵɵInjectableDeclaration<DomainRuleFormRulesService>;
2410
2606
  }
2411
2607
 
2608
+ /**
2609
+ * DynamicFormSchemaCacheService
2610
+ * ------------------------------
2611
+ * Serviço canônico de conveniência em `@praxisui/dynamic-form` para orquestração
2612
+ * de cache de primeiro nível (L1) de esquemas OpenAPI compilados (Issue #2).
2613
+ *
2614
+ * Delega o ciclo de vida do cache em memória ao DynamicFormService (@praxisui/core),
2615
+ * garantindo consistência referencial entre módulos e transições de abas em 0ms.
2616
+ */
2617
+ declare class DynamicFormSchemaCacheService {
2618
+ private readonly dynamicFormService;
2619
+ buildCacheKey(params: SchemaIdParams & {
2620
+ baseUrl?: string;
2621
+ }): string;
2622
+ get(cacheKey: string): CompiledDynamicFormSchema | undefined;
2623
+ set(cacheKey: string, compiled: CompiledDynamicFormSchema, customTtlMs?: number): void;
2624
+ has(cacheKey: string): boolean;
2625
+ invalidate(cacheKey?: string): void;
2626
+ clear(): void;
2627
+ size(): number;
2628
+ static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormSchemaCacheService, never>;
2629
+ static ɵprov: i0.ɵɵInjectableDeclaration<DynamicFormSchemaCacheService>;
2630
+ }
2631
+
2412
2632
  declare class Ergadm00034CompactPresentationExampleComponent {
2413
2633
  private readonly dynamicLayout;
2414
2634
  readonly legacyFrequencyExample: _praxisui_dynamic_form.Ergadm00034CompactPresentationExample;
@@ -2463,14 +2683,15 @@ declare function applyVisibilityRules(rules: FormLayoutRule[], data: any): Recor
2463
2683
  /**
2464
2684
  * Converts a RuleBuilderState produced by the visual builder into
2465
2685
  * an array of FormLayoutRule objects understood by the dynamic form.
2686
+ * Throws when a referenced condition graph cannot be serialized without losing semantics.
2466
2687
  */
2467
2688
  declare function ruleBuilderStateToFormLayoutRules(state: RuleBuilderState | null | undefined): FormLayoutRule[];
2468
2689
  /**
2469
2690
  * Converts an array of FormLayoutRule back into a RuleBuilderState
2470
2691
  * so that the visual builder can display the saved rules.
2471
2692
  *
2472
- * The conversion handles a limited subset of rules (visibility and
2473
- * required/validation rules with simple field conditions).
2693
+ * Every canonical effect reopens as a propertyRule, with all targets and both
2694
+ * branches intact. Conditions outside the visual vocabulary stay inline.
2474
2695
  */
2475
2696
  declare function formLayoutRulesToBuilderState(rules: FormLayoutRule[] | null | undefined): RuleBuilderState;
2476
2697
 
@@ -3044,7 +3265,50 @@ declare const PRAXIS_FILTER_FORM_AUTHORING_PROJECTION: {
3044
3265
  readonly operationIds: readonly ["field.label.set", "field.placeholder.set", "field.required.set", "field.readOnly.set", "field.disabled.set", "field.hidden.set", "field.controlType.set", "field.optionSource.set", "field.local.add", "field.local.remove", "layout.section.add", "layout.section.remove", "layout.row.add", "layout.column.add", "layout.field.move"];
3045
3266
  readonly roundTripRequirements: readonly ["strip-undefined", "stable-field-order", "preserve-local-field-source", "preserve-section-row-column-ids"];
3046
3267
  };
3047
- declare const PRAXIS_FILTER_FORM_AUTHORING_MANIFEST: _praxisui_core.ComponentAuthoringManifest;
3268
+ declare const PRAXIS_FILTER_FORM_AUTHORING_MANIFEST: {
3269
+ runtimeInputs: _praxisui_core.ManifestInput[];
3270
+ schemaVersion: string;
3271
+ componentId: string;
3272
+ ownerPackage: string;
3273
+ configSchemaId: string;
3274
+ manifestVersion: string;
3275
+ editableTargets: _praxisui_core.ManifestTarget[];
3276
+ operations: _praxisui_core.ManifestOperation[];
3277
+ validators: _praxisui_core.ManifestValidator[];
3278
+ roundTripRequirements?: string[];
3279
+ presentationAffordances?: _praxisui_core.ManifestPresentationAffordanceCatalog;
3280
+ examples: _praxisui_core.ManifestExample[];
3281
+ controlProfiles?: _praxisui_core.ManifestControlProfile[];
3282
+ };
3283
+
3284
+ /** Reconstruct raw native authorship. Normalized editor/runtime defaults are never the source. */
3285
+ declare function decodeDynamicFormPageInputs(value: unknown): {
3286
+ document: DynamicFormAuthoringDocument | null;
3287
+ diagnostics: EditorDiagnostic[];
3288
+ };
3289
+ /** Owner callback for Core admission; no component loading or second config authority. */
3290
+ declare function validateDynamicFormPageWidget(widget: WidgetInstance): readonly {
3291
+ code: string;
3292
+ path: string;
3293
+ }[];
3294
+ /** Inverse native projection. Explicit unrepresentable authoring blocks fail instead of being filtered. */
3295
+ declare function encodeDynamicFormPageInputs(value: unknown): {
3296
+ inputs: Record<string, unknown> | null;
3297
+ diagnostics: EditorDiagnostic[];
3298
+ };
3299
+ /** Persist only explicit deltas from the mounted native editor; bindings/context stay pinned to the seed. */
3300
+ declare function projectDynamicFormPageEditorChanges(authoredInputs: unknown, editorBaseline: unknown, editorValue: unknown): {
3301
+ inputs: Record<string, unknown> | null;
3302
+ diagnostics: EditorDiagnostic[];
3303
+ };
3304
+ /** Derive execution-only identity and disable independent preferences. Never persist this projection. */
3305
+ declare function materializeDynamicFormPageRuntimeInputs(value: unknown, pageId: string, widgetKey: string, options?: {
3306
+ preview?: boolean;
3307
+ }): {
3308
+ inputs: Record<string, unknown> | null;
3309
+ diagnostics: EditorDiagnostic[];
3310
+ };
3311
+ declare const DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER: GovernedPagePreviewWidgetAdapter;
3048
3312
 
3049
- export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DomainRuleFormRulesService, DynamicFormLayoutService, ERGADM00034_COMPACT_PRESENTATION_EXAMPLE, Ergadm00034CompactPresentationExampleComponent, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, FormRulesService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_AUTHORING_MANIFEST, PRAXIS_FILTER_FORM_AUTHORING_PROJECTION, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildCorporatePresentationFormatGalleryConfig, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, buildErgadm00034CompactPresentationConfig, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
3050
- export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, CorporatePresentationExample, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormGeneratedLayoutPreset, DynamicFormMode, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, Ergadm00034CompactPresentationExample, Ergadm00034LegacyFrequencyRow, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, GenerateFormConfigFromMetadataOptions, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormEmptyState, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };
3313
+ export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER, DomainRuleFormRulesService, DynamicFormLayoutService, DynamicFormSchemaCacheService, ERGADM00034_COMPACT_PRESENTATION_EXAMPLE, Ergadm00034CompactPresentationExampleComponent, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, FormRulesService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_AUTHORING_MANIFEST, PRAXIS_FILTER_FORM_AUTHORING_PROJECTION, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildCorporatePresentationFormatGalleryConfig, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, buildErgadm00034CompactPresentationConfig, createDynamicFormAuthoringDocument, decodeDynamicFormPageInputs, encodeDynamicFormPageInputs, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, materializeDynamicFormPageRuntimeInputs, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, projectDynamicFormPageEditorChanges, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput, validateDynamicFormPageWidget };
3314
+ export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, CorporatePresentationExample, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormGeneratedLayoutPreset, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, Ergadm00034CompactPresentationExample, Ergadm00034LegacyFrequencyRow, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, GenerateFormConfigFromMetadataOptions, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormEmptyState, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };