@object-ui/app-shell 6.2.2 → 7.0.0
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/CHANGELOG.md +967 -0
- package/README.md +292 -0
- package/dist/assistant/assistantBus.d.ts +72 -0
- package/dist/assistant/assistantBus.js +133 -0
- package/dist/chrome/CommandPalette.d.ts +1 -1
- package/dist/chrome/CommandPalette.js +26 -22
- package/dist/chrome/ConditionalAuthWrapper.d.ts +1 -1
- package/dist/chrome/ConsoleToaster.d.ts +1 -1
- package/dist/chrome/ConsoleToaster.js +3 -1
- package/dist/chrome/ErrorBoundary.d.ts +1 -1
- package/dist/chrome/KeyboardShortcutsDialog.d.ts +1 -1
- package/dist/chrome/KeyboardShortcutsDialog.js +16 -5
- package/dist/chrome/LoadingScreen.d.ts +1 -1
- package/dist/chrome/LoadingScreen.js +22 -26
- package/dist/chrome/RouteFader.d.ts +1 -1
- package/dist/chrome/ThemeProvider.d.ts +1 -1
- package/dist/components/ManagedByBadge.d.ts +1 -1
- package/dist/console/AppContent.d.ts +1 -1
- package/dist/console/AppContent.js +170 -37
- package/dist/console/ConsoleShell.d.ts +7 -7
- package/dist/console/ConsoleShell.js +32 -3
- package/dist/console/ai/AiChatPage.d.ts +88 -1
- package/dist/console/ai/AiChatPage.js +743 -66
- package/dist/console/ai/ConversationsSidebar.d.ts +26 -1
- package/dist/console/ai/ConversationsSidebar.js +149 -34
- package/dist/console/ai/LiveCanvas.d.ts +22 -0
- package/dist/console/ai/LiveCanvas.js +78 -0
- package/dist/console/ai/reconcileTurn.d.ts +8 -0
- package/dist/console/ai/reconcileTurn.js +20 -0
- package/dist/console/auth/AuthPageLayout.d.ts +1 -1
- package/dist/console/auth/ForgotPasswordPage.d.ts +1 -1
- package/dist/console/auth/LoginPage.d.ts +1 -1
- package/dist/console/auth/RegisterPage.d.ts +1 -1
- package/dist/console/auth/RegisterPage.js +23 -3
- package/dist/console/cloud-connection/CloudConnectionPanel.d.ts +1 -0
- package/dist/console/cloud-connection/CloudConnectionPanel.js +169 -0
- package/dist/console/home/AppCard.d.ts +1 -1
- package/dist/console/home/AppCard.js +6 -12
- package/dist/console/home/HomeAppsStrip.d.ts +8 -0
- package/dist/console/home/HomeAppsStrip.js +61 -0
- package/dist/console/home/HomeLayout.d.ts +1 -1
- package/dist/console/home/HomeLayout.js +3 -1
- package/dist/console/home/HomePage.d.ts +1 -2
- package/dist/console/home/HomePage.js +149 -21
- package/dist/console/home/HomeRail.d.ts +22 -0
- package/dist/console/home/HomeRail.js +62 -0
- package/dist/console/home/QuickActions.d.ts +1 -1
- package/dist/console/home/QuickActions.js +3 -11
- package/dist/console/home/RecentApps.d.ts +1 -1
- package/dist/console/home/RecentApps.js +2 -2
- package/dist/console/home/StarredApps.d.ts +1 -1
- package/dist/console/home/StarredApps.js +2 -2
- package/dist/console/marketplace/InstalledListWidget.d.ts +1 -0
- package/dist/console/marketplace/InstalledListWidget.js +93 -0
- package/dist/console/marketplace/MarkdownText.d.ts +1 -1
- package/dist/console/marketplace/MarketplaceAccessDenied.d.ts +1 -1
- package/dist/console/marketplace/MarketplaceInstalledPage.d.ts +8 -14
- package/dist/console/marketplace/MarketplaceInstalledPage.js +14 -66
- package/dist/console/marketplace/MarketplacePackagePage.d.ts +1 -1
- package/dist/console/marketplace/MarketplacePackagePage.js +249 -8
- package/dist/console/marketplace/MarketplacePage.d.ts +1 -1
- package/dist/console/marketplace/MarketplacePage.js +60 -3
- package/dist/console/marketplace/PackageIcon.d.ts +1 -1
- package/dist/console/marketplace/PluginDisclosure.d.ts +14 -0
- package/dist/console/marketplace/PluginDisclosure.js +38 -0
- package/dist/console/marketplace/marketplaceApi.d.ts +123 -0
- package/dist/console/marketplace/marketplaceApi.js +254 -1
- package/dist/console/organizations/CreateWorkspaceDialog.d.ts +1 -1
- package/dist/console/organizations/OrganizationsLayout.d.ts +1 -1
- package/dist/console/organizations/OrganizationsPage.d.ts +1 -1
- package/dist/console/organizations/manage/AcceptInvitationPage.d.ts +1 -1
- package/dist/console/organizations/manage/InvitationsPage.d.ts +1 -1
- package/dist/console/organizations/manage/InviteMemberDialog.d.ts +1 -1
- package/dist/console/organizations/manage/MembersPage.d.ts +1 -1
- package/dist/console/organizations/manage/OrganizationLayout.d.ts +1 -1
- package/dist/console/organizations/manage/SettingsPage.d.ts +1 -1
- package/dist/context/CommandPaletteProvider.d.ts +44 -0
- package/dist/context/CommandPaletteProvider.js +71 -0
- package/dist/context/FavoritesProvider.d.ts +1 -1
- package/dist/context/NavigationContext.d.ts +1 -1
- package/dist/context/RecentItemsProvider.d.ts +2 -2
- package/dist/context/UserStateAdapters.d.ts +1 -1
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +1 -0
- package/dist/hooks/index.d.ts +5 -2
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/useActionModal.d.ts +53 -0
- package/dist/hooks/useActionModal.js +111 -0
- package/dist/hooks/useChatConversation.d.ts +107 -4
- package/dist/hooks/useChatConversation.js +253 -25
- package/dist/hooks/useConsoleActionRuntime.d.ts +70 -0
- package/dist/hooks/useConsoleActionRuntime.js +560 -0
- package/dist/hooks/useConversationList.js +61 -3
- package/dist/hooks/useHomeInbox.d.ts +13 -0
- package/dist/hooks/useHomeInbox.js +142 -0
- package/dist/hooks/useNavPins.js +17 -23
- package/dist/hooks/useNavigationSync.d.ts +33 -0
- package/dist/hooks/useNavigationSync.js +98 -12
- package/dist/hooks/useReconcileOnError.d.ts +40 -0
- package/dist/hooks/useReconcileOnError.js +37 -0
- package/dist/hooks/useRecordApprovals.d.ts +18 -19
- package/dist/hooks/useRecordApprovals.js +24 -40
- package/dist/hooks/useResponsiveSidebar.js +14 -5
- package/dist/hooks/useSettleSignal.d.ts +19 -0
- package/dist/hooks/useSettleSignal.js +20 -0
- package/dist/hooks/useTrackRouteAsRecent.js +35 -0
- package/dist/hooks/useUrlOverlay.d.ts +62 -0
- package/dist/hooks/useUrlOverlay.js +88 -0
- package/dist/index.d.ts +16 -7
- package/dist/index.js +12 -4
- package/dist/layout/ActivityFeed.d.ts +1 -1
- package/dist/layout/AppHeader.d.ts +3 -2
- package/dist/layout/AppHeader.js +237 -72
- package/dist/layout/AppSidebar.d.ts +2 -1
- package/dist/layout/AppSidebar.js +26 -46
- package/dist/layout/AppSwitcher.d.ts +2 -1
- package/dist/layout/AppSwitcher.js +9 -5
- package/dist/layout/AuthPageLayout.d.ts +1 -1
- package/dist/layout/ConnectionStatus.d.ts +1 -1
- package/dist/layout/ConnectionStatus.js +9 -6
- package/dist/layout/ConsoleChatbotFab.d.ts +19 -1
- package/dist/layout/ConsoleChatbotFab.js +16 -2
- package/dist/layout/ConsoleFloatingChatbot.d.ts +32 -2
- package/dist/layout/ConsoleFloatingChatbot.js +374 -41
- package/dist/layout/ConsoleLayout.d.ts +1 -1
- package/dist/layout/ConsoleLayout.js +27 -11
- package/dist/layout/ContextSelectors.d.ts +44 -0
- package/dist/layout/ContextSelectors.js +218 -0
- package/dist/layout/InboxPopover.d.ts +6 -1
- package/dist/layout/InboxPopover.js +25 -6
- package/dist/layout/LocaleSwitcher.d.ts +1 -1
- package/dist/layout/LocalizedSidebarTrigger.d.ts +2 -0
- package/dist/layout/LocalizedSidebarTrigger.js +15 -0
- package/dist/layout/MobileViewSwitcherContext.d.ts +1 -1
- package/dist/layout/ModeToggle.d.ts +1 -1
- package/dist/layout/PageHeader.d.ts +1 -1
- package/dist/layout/UnifiedSidebar.d.ts +2 -1
- package/dist/layout/UnifiedSidebar.js +116 -15
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/index.js +1 -0
- package/dist/observability/settleSignal.d.ts +64 -0
- package/dist/observability/settleSignal.js +131 -0
- package/dist/preview/DraftChangesPanel.d.ts +19 -0
- package/dist/preview/DraftChangesPanel.js +114 -0
- package/dist/preview/DraftPreviewBar.d.ts +8 -0
- package/dist/preview/DraftPreviewBar.js +86 -0
- package/dist/preview/PreviewDraftEmptyState.d.ts +16 -0
- package/dist/preview/PreviewDraftEmptyState.js +47 -0
- package/dist/preview/PreviewModeContext.d.ts +57 -0
- package/dist/preview/PreviewModeContext.js +99 -0
- package/dist/preview/UnpublishedAppBar.d.ts +8 -0
- package/dist/preview/UnpublishedAppBar.js +79 -0
- package/dist/preview/draftStatus.d.ts +20 -0
- package/dist/preview/draftStatus.js +27 -0
- package/dist/preview/usePublishAllDrafts.d.ts +18 -0
- package/dist/preview/usePublishAllDrafts.js +106 -0
- package/dist/providers/AdapterProvider.d.ts +1 -1
- package/dist/providers/AdapterProvider.js +6 -1
- package/dist/providers/ExpressionProvider.d.ts +1 -1
- package/dist/providers/MetadataProvider.d.ts +17 -2
- package/dist/providers/MetadataProvider.js +183 -12
- package/dist/runtime-config.d.ts +46 -2
- package/dist/runtime-config.js +39 -2
- package/dist/services/builtinComponents.js +68 -59
- package/dist/skeletons/SkeletonDashboard.d.ts +1 -1
- package/dist/skeletons/SkeletonDetail.d.ts +1 -1
- package/dist/skeletons/SkeletonGrid.d.ts +1 -1
- package/dist/utils/appRoute.d.ts +21 -0
- package/dist/utils/appRoute.js +25 -0
- package/dist/utils/deriveRelatedLists.d.ts +54 -0
- package/dist/utils/deriveRelatedLists.js +91 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/managedByEmptyState.d.ts +8 -1
- package/dist/utils/managedByEmptyState.js +13 -7
- package/dist/utils/preferLocal.d.ts +18 -0
- package/dist/utils/preferLocal.js +24 -0
- package/dist/views/ActionConfirmDialog.d.ts +1 -1
- package/dist/views/ActionConfirmDialog.js +3 -1
- package/dist/views/ActionParamDialog.d.ts +6 -1
- package/dist/views/ActionParamDialog.js +9 -3
- package/dist/views/ActionResultDialog.d.ts +13 -0
- package/dist/views/ActionResultDialog.js +134 -0
- package/dist/views/ComponentNavView.d.ts +14 -1
- package/dist/views/CreateViewDialog.d.ts +1 -1
- package/dist/views/DashboardConfigPanel.d.ts +28 -0
- package/dist/views/DashboardConfigPanel.js +81 -0
- package/dist/views/DashboardView.d.ts +4 -3
- package/dist/views/DashboardView.js +38 -239
- package/dist/views/FlowRunner.d.ts +59 -0
- package/dist/views/FlowRunner.js +153 -0
- package/dist/views/InterfaceListPage.d.ts +49 -0
- package/dist/views/InterfaceListPage.js +347 -0
- package/dist/views/MetadataInspector.d.ts +2 -2
- package/dist/views/ObjectView.d.ts +1 -1
- package/dist/views/ObjectView.js +209 -532
- package/dist/views/PageView.d.ts +8 -3
- package/dist/views/PageView.js +45 -32
- package/dist/views/RecordDetailView.d.ts +1 -1
- package/dist/views/RecordDetailView.js +363 -148
- package/dist/views/RecordFormPage.d.ts +1 -1
- package/dist/views/RecordFormPage.js +26 -1
- package/dist/views/ReportConfigPanel.d.ts +37 -0
- package/dist/views/ReportConfigPanel.js +85 -0
- package/dist/views/ReportView.d.ts +1 -1
- package/dist/views/ReportView.js +116 -7
- package/dist/views/RuntimeDraftBar.d.ts +30 -0
- package/dist/views/RuntimeDraftBar.js +112 -0
- package/dist/views/SearchResultsPage.d.ts +1 -1
- package/dist/views/SearchResultsPage.js +8 -18
- package/dist/views/ViewConfigPanel.d.ts +24 -17
- package/dist/views/ViewConfigPanel.js +121 -77
- package/dist/views/index.d.ts +1 -1
- package/dist/views/index.js +1 -1
- package/dist/views/metadata-admin/AuditPanel.d.ts +28 -0
- package/dist/views/metadata-admin/AuditPanel.js +79 -0
- package/dist/views/metadata-admin/DiagnosticsPage.d.ts +20 -0
- package/dist/views/metadata-admin/DiagnosticsPage.js +69 -0
- package/dist/views/metadata-admin/DirectoryPage.d.ts +16 -1
- package/dist/views/metadata-admin/DirectoryPage.js +113 -24
- package/dist/views/metadata-admin/DraftReviewPanel.d.ts +33 -0
- package/dist/views/metadata-admin/DraftReviewPanel.js +77 -0
- package/dist/views/metadata-admin/EmbeddedItemEditor.d.ts +17 -1
- package/dist/views/metadata-admin/EmbeddedItemEditor.js +15 -8
- package/dist/views/metadata-admin/JsonSourceEditor.d.ts +37 -0
- package/dist/views/metadata-admin/JsonSourceEditor.js +178 -0
- package/dist/views/metadata-admin/LayeredDiff.d.ts +39 -1
- package/dist/views/metadata-admin/LayeredDiff.js +171 -5
- package/dist/views/metadata-admin/MetadataDetailDrawer.d.ts +15 -1
- package/dist/views/metadata-admin/MetadataTypeActions.d.ts +48 -0
- package/dist/views/metadata-admin/MetadataTypeActions.js +165 -0
- package/dist/views/metadata-admin/PackagesPage.d.ts +18 -0
- package/dist/views/metadata-admin/PackagesPage.js +395 -0
- package/dist/views/metadata-admin/PageShell.d.ts +1 -1
- package/dist/views/metadata-admin/PageShell.js +9 -4
- package/dist/views/metadata-admin/PermissionMatrixEditor.d.ts +35 -1
- package/dist/views/metadata-admin/QuickFind.d.ts +21 -1
- package/dist/views/metadata-admin/QuickFind.js +6 -3
- package/dist/views/metadata-admin/RelatedPanel.d.ts +24 -1
- package/dist/views/metadata-admin/RelatedPanel.js +20 -18
- package/dist/views/metadata-admin/ResourceEditPage.d.ts +40 -1
- package/dist/views/metadata-admin/ResourceEditPage.js +1223 -60
- package/dist/views/metadata-admin/ResourceHistoryPage.d.ts +39 -1
- package/dist/views/metadata-admin/ResourceHistoryPage.js +66 -16
- package/dist/views/metadata-admin/ResourceListPage.d.ts +13 -1
- package/dist/views/metadata-admin/ResourceListPage.js +266 -30
- package/dist/views/metadata-admin/ResourceRouter.d.ts +23 -1
- package/dist/views/metadata-admin/SchemaForm.d.ts +34 -1
- package/dist/views/metadata-admin/SchemaForm.js +559 -49
- package/dist/views/metadata-admin/StudioHomePage.d.ts +22 -0
- package/dist/views/metadata-admin/StudioHomePage.js +213 -0
- package/dist/views/metadata-admin/anchors.js +237 -24
- package/dist/views/metadata-admin/clientValidation.d.ts +50 -0
- package/dist/views/metadata-admin/clientValidation.js +169 -0
- package/dist/views/metadata-admin/color-variant-field.d.ts +30 -0
- package/dist/views/metadata-admin/color-variant-field.js +38 -0
- package/dist/views/metadata-admin/createDerive.d.ts +75 -0
- package/dist/views/metadata-admin/createDerive.js +179 -0
- package/dist/views/metadata-admin/dashboard-schema.d.ts +12 -0
- package/dist/views/metadata-admin/dashboard-schema.js +80 -0
- package/dist/views/metadata-admin/datasource/DatasourceResourcePage.d.ts +35 -0
- package/dist/views/metadata-admin/datasource/DatasourceResourcePage.js +327 -0
- package/dist/views/metadata-admin/datasource/register.d.ts +1 -0
- package/dist/views/metadata-admin/datasource/register.js +24 -0
- package/dist/views/metadata-admin/default-inspector-registry.d.ts +49 -0
- package/dist/views/metadata-admin/default-inspector-registry.js +8 -0
- package/dist/views/metadata-admin/default-schemas.js +115 -10
- package/dist/views/metadata-admin/external/ExternalDatasourcePanel.d.ts +27 -0
- package/dist/views/metadata-admin/external/ExternalDatasourcePanel.js +69 -0
- package/dist/views/metadata-admin/external/ImportObjectDialog.d.ts +27 -0
- package/dist/views/metadata-admin/external/ImportObjectDialog.js +77 -0
- package/dist/views/metadata-admin/external/SchemaBrowser.d.ts +16 -0
- package/dist/views/metadata-admin/external/SchemaBrowser.js +74 -0
- package/dist/views/metadata-admin/external/ValidationPanel.d.ts +16 -0
- package/dist/views/metadata-admin/external/ValidationPanel.js +68 -0
- package/dist/views/metadata-admin/external/api.d.ts +100 -0
- package/dist/views/metadata-admin/external/api.js +124 -0
- package/dist/views/metadata-admin/i18n.d.ts +1 -0
- package/dist/views/metadata-admin/i18n.js +1166 -2
- package/dist/views/metadata-admin/index.d.ts +8 -5
- package/dist/views/metadata-admin/index.js +12 -2
- package/dist/views/metadata-admin/inspector-registry.d.ts +51 -0
- package/dist/views/metadata-admin/inspector-registry.js +11 -0
- package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.d.ts +30 -0
- package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.js +180 -0
- package/dist/views/metadata-admin/inspectors/AppNavInspector.d.ts +16 -0
- package/dist/views/metadata-admin/inspectors/AppNavInspector.js +110 -0
- package/dist/views/metadata-admin/inspectors/ConditionBuilder.d.ts +29 -0
- package/dist/views/metadata-admin/inspectors/ConditionBuilder.js +154 -0
- package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.d.ts +28 -0
- package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.js +110 -0
- package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.d.ts +18 -0
- package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.js +139 -0
- package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.js +107 -0
- package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.d.ts +16 -0
- package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.js +45 -0
- package/dist/views/metadata-admin/inspectors/FlowInspector.d.ts +12 -0
- package/dist/views/metadata-admin/inspectors/FlowInspector.js +9 -0
- package/dist/views/metadata-admin/inspectors/FlowKeyValueField.d.ts +30 -0
- package/dist/views/metadata-admin/inspectors/FlowKeyValueField.js +125 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.d.ts +18 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.js +40 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeInspector.d.ts +14 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeInspector.js +140 -0
- package/dist/views/metadata-admin/inspectors/FlowObjectListField.d.ts +26 -0
- package/dist/views/metadata-admin/inspectors/FlowObjectListField.js +105 -0
- package/dist/views/metadata-admin/inspectors/FlowReferenceField.d.ts +83 -0
- package/dist/views/metadata-admin/inspectors/FlowReferenceField.js +181 -0
- package/dist/views/metadata-admin/inspectors/FlowStringListField.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/FlowStringListField.js +60 -0
- package/dist/views/metadata-admin/inspectors/InspectorComboField.d.ts +40 -0
- package/dist/views/metadata-admin/inspectors/InspectorComboField.js +61 -0
- package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.js +54 -0
- package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.d.ts +23 -0
- package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.js +330 -0
- package/dist/views/metadata-admin/inspectors/PageBlockInspector.d.ts +48 -0
- package/dist/views/metadata-admin/inspectors/PageBlockInspector.js +332 -0
- package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.d.ts +58 -0
- package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.js +160 -0
- package/dist/views/metadata-admin/inspectors/ViewColumnInspector.d.ts +19 -0
- package/dist/views/metadata-admin/inspectors/ViewColumnInspector.js +144 -0
- package/dist/views/metadata-admin/inspectors/ViewInspector.d.ts +19 -0
- package/dist/views/metadata-admin/inspectors/ViewInspector.js +21 -0
- package/dist/views/metadata-admin/inspectors/ViewVariantInspector.d.ts +54 -0
- package/dist/views/metadata-admin/inspectors/ViewVariantInspector.js +191 -0
- package/dist/views/metadata-admin/inspectors/_shared.d.ts +124 -0
- package/dist/views/metadata-admin/inspectors/_shared.js +113 -0
- package/dist/views/metadata-admin/inspectors/expression-validate.d.ts +26 -0
- package/dist/views/metadata-admin/inspectors/expression-validate.js +66 -0
- package/dist/views/metadata-admin/inspectors/flow-node-config.d.ts +143 -0
- package/dist/views/metadata-admin/inspectors/flow-node-config.js +461 -0
- package/dist/views/metadata-admin/inspectors/index.d.ts +1 -0
- package/dist/views/metadata-admin/inspectors/index.js +45 -0
- package/dist/views/metadata-admin/inspectors/json-schema-to-fields.d.ts +40 -0
- package/dist/views/metadata-admin/inspectors/json-schema-to-fields.js +227 -0
- package/dist/views/metadata-admin/inspectors/useDatasetFields.d.ts +72 -0
- package/dist/views/metadata-admin/inspectors/useDatasetFields.js +0 -0
- package/dist/views/metadata-admin/mergeServerFields.d.ts +65 -0
- package/dist/views/metadata-admin/mergeServerFields.js +56 -0
- package/dist/views/metadata-admin/preview-registry.d.ts +55 -0
- package/dist/views/metadata-admin/previews/ActionPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/ActionPreview.js +238 -0
- package/dist/views/metadata-admin/previews/AddWidgetPicker.d.ts +12 -0
- package/dist/views/metadata-admin/previews/AddWidgetPicker.js +56 -0
- package/dist/views/metadata-admin/previews/AgentPreview.d.ts +24 -0
- package/dist/views/metadata-admin/previews/AgentPreview.js +100 -0
- package/dist/views/metadata-admin/previews/AppNavCanvas.d.ts +31 -0
- package/dist/views/metadata-admin/previews/AppNavCanvas.js +260 -0
- package/dist/views/metadata-admin/previews/AppPreview.d.ts +16 -1
- package/dist/views/metadata-admin/previews/AppPreview.js +23 -14
- package/dist/views/metadata-admin/previews/BookPreview.d.ts +20 -0
- package/dist/views/metadata-admin/previews/BookPreview.js +132 -0
- package/dist/views/metadata-admin/previews/DashboardPreview.d.ts +16 -1
- package/dist/views/metadata-admin/previews/DashboardPreview.js +110 -8
- package/dist/views/metadata-admin/previews/DatasetPreview.d.ts +18 -0
- package/dist/views/metadata-admin/previews/DatasetPreview.js +89 -0
- package/dist/views/metadata-admin/previews/DatasourcePreview.d.ts +23 -0
- package/dist/views/metadata-admin/previews/DatasourcePreview.js +68 -0
- package/dist/views/metadata-admin/previews/EmailTemplatePreview.d.ts +14 -1
- package/dist/views/metadata-admin/previews/FieldStub.d.ts +30 -0
- package/dist/views/metadata-admin/previews/FieldStub.js +104 -0
- package/dist/views/metadata-admin/previews/FieldsListEditor.d.ts +50 -0
- package/dist/views/metadata-admin/previews/FieldsListEditor.js +97 -0
- package/dist/views/metadata-admin/previews/FlowCanvas.d.ts +43 -0
- package/dist/views/metadata-admin/previews/FlowCanvas.js +328 -0
- package/dist/views/metadata-admin/previews/FlowPreview.d.ts +20 -0
- package/dist/views/metadata-admin/previews/FlowPreview.js +92 -0
- package/dist/views/metadata-admin/previews/FlowRunsPanel.d.ts +46 -0
- package/dist/views/metadata-admin/previews/FlowRunsPanel.js +97 -0
- package/dist/views/metadata-admin/previews/FlowSimulatorPanel.d.ts +25 -0
- package/dist/views/metadata-admin/previews/FlowSimulatorPanel.js +170 -0
- package/dist/views/metadata-admin/previews/JobPreview.d.ts +28 -0
- package/dist/views/metadata-admin/previews/JobPreview.js +290 -0
- package/dist/views/metadata-admin/previews/ObjectFormCanvas.d.ts +30 -0
- package/dist/views/metadata-admin/previews/ObjectFormCanvas.js +547 -0
- package/dist/views/metadata-admin/previews/ObjectPreview.d.ts +14 -1
- package/dist/views/metadata-admin/previews/ObjectPreview.js +5 -30
- package/dist/views/metadata-admin/previews/OutlineStrip.d.ts +32 -0
- package/dist/views/metadata-admin/previews/OutlineStrip.js +8 -0
- package/dist/views/metadata-admin/previews/PageBlockCanvas.d.ts +49 -0
- package/dist/views/metadata-admin/previews/PageBlockCanvas.js +510 -0
- package/dist/views/metadata-admin/previews/PagePreview.d.ts +10 -1
- package/dist/views/metadata-admin/previews/PagePreview.js +90 -4
- package/dist/views/metadata-admin/previews/PermissionPreview.d.ts +27 -0
- package/dist/views/metadata-admin/previews/PermissionPreview.js +115 -0
- package/dist/views/metadata-admin/previews/PreviewShell.d.ts +29 -6
- package/dist/views/metadata-admin/previews/PreviewShell.js +16 -3
- package/dist/views/metadata-admin/previews/ReportPreview.d.ts +18 -1
- package/dist/views/metadata-admin/previews/ReportPreview.js +23 -15
- package/dist/views/metadata-admin/previews/RolePreview.d.ts +19 -0
- package/dist/views/metadata-admin/previews/RolePreview.js +14 -0
- package/dist/views/metadata-admin/previews/SkillPreview.d.ts +22 -0
- package/dist/views/metadata-admin/previews/SkillPreview.js +34 -0
- package/dist/views/metadata-admin/previews/ToolPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/ToolPreview.js +122 -0
- package/dist/views/metadata-admin/previews/TranslationPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/TranslationPreview.js +52 -0
- package/dist/views/metadata-admin/previews/ValidationPreview.d.ts +27 -0
- package/dist/views/metadata-admin/previews/ValidationPreview.js +110 -0
- package/dist/views/metadata-admin/previews/ViewColumnPanes.d.ts +62 -0
- package/dist/views/metadata-admin/previews/ViewColumnPanes.js +140 -0
- package/dist/views/metadata-admin/previews/ViewPreview.d.ts +23 -1
- package/dist/views/metadata-admin/previews/ViewPreview.js +101 -73
- package/dist/views/metadata-admin/previews/block-config.d.ts +82 -0
- package/dist/views/metadata-admin/previews/block-config.js +324 -0
- package/dist/views/metadata-admin/previews/block-types.d.ts +40 -0
- package/dist/views/metadata-admin/previews/block-types.js +110 -0
- package/dist/views/metadata-admin/previews/field-types.d.ts +53 -0
- package/dist/views/metadata-admin/previews/field-types.js +97 -0
- package/dist/views/metadata-admin/previews/flow-canvas-layout.d.ts +88 -0
- package/dist/views/metadata-admin/previews/flow-canvas-layout.js +190 -0
- package/dist/views/metadata-admin/previews/flow-canvas-parts.d.ts +88 -0
- package/dist/views/metadata-admin/previews/flow-canvas-parts.js +358 -0
- package/dist/views/metadata-admin/previews/form-preview.d.ts +24 -0
- package/dist/views/metadata-admin/previews/form-preview.js +29 -0
- package/dist/views/metadata-admin/previews/index.js +43 -0
- package/dist/views/metadata-admin/previews/object-fields-bridge.d.ts +66 -0
- package/dist/views/metadata-admin/previews/object-fields-bridge.js +171 -0
- package/dist/views/metadata-admin/previews/object-fields-io.d.ts +109 -0
- package/dist/views/metadata-admin/previews/object-fields-io.js +208 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-types.d.ts +91 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-types.js +2 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.d.ts +8 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.js +113 -0
- package/dist/views/metadata-admin/previews/simulator/flow-simulator.d.ts +44 -0
- package/dist/views/metadata-admin/previews/simulator/flow-simulator.js +316 -0
- package/dist/views/metadata-admin/previews/useDatasetCatalog.d.ts +47 -0
- package/dist/views/metadata-admin/previews/useDatasetCatalog.js +133 -0
- package/dist/views/metadata-admin/previews/useFlowNodePalette.d.ts +44 -0
- package/dist/views/metadata-admin/previews/useFlowNodePalette.js +124 -0
- package/dist/views/metadata-admin/previews/useMetaOptions.d.ts +8 -0
- package/dist/views/metadata-admin/previews/useMetaOptions.js +50 -0
- package/dist/views/metadata-admin/previews/useObjectFields.d.ts +23 -0
- package/dist/views/metadata-admin/previews/useObjectFields.js +79 -0
- package/dist/views/metadata-admin/previews/useObjectOptions.d.ts +8 -0
- package/dist/views/metadata-admin/previews/useObjectOptions.js +43 -0
- package/dist/views/metadata-admin/previews/view-column-io.d.ts +42 -0
- package/dist/views/metadata-admin/previews/view-column-io.js +73 -0
- package/dist/views/metadata-admin/previews/widget-types.d.ts +24 -0
- package/dist/views/metadata-admin/previews/widget-types.js +40 -0
- package/dist/views/metadata-admin/registry.d.ts +140 -19
- package/dist/views/metadata-admin/report-schema.d.ts +26 -0
- package/dist/views/metadata-admin/report-schema.js +121 -0
- package/dist/views/metadata-admin/useMetadata.d.ts +100 -2
- package/dist/views/metadata-admin/useMetadata.js +155 -4
- package/dist/views/metadata-admin/view-item-normalize.d.ts +20 -0
- package/dist/views/metadata-admin/view-item-normalize.js +68 -0
- package/dist/views/metadata-admin/view-schema.d.ts +16 -0
- package/dist/views/metadata-admin/view-schema.js +107 -0
- package/dist/views/metadata-admin/view-variant-model.d.ts +23 -0
- package/dist/views/metadata-admin/view-variant-model.js +64 -0
- package/dist/views/metadata-admin/widgets.d.ts +89 -1
- package/dist/views/metadata-admin/widgets.js +491 -17
- package/dist/views/runtime-metadata-persistence.d.ts +78 -0
- package/dist/views/runtime-metadata-persistence.js +89 -0
- package/dist/views/useOpenRecordList.d.ts +18 -0
- package/dist/views/useOpenRecordList.js +36 -0
- package/dist/views/userFilterUrlState.d.ts +15 -0
- package/dist/views/userFilterUrlState.js +53 -0
- package/dist/views/view-config-adapter.d.ts +38 -0
- package/dist/views/view-config-adapter.js +80 -0
- package/package.json +52 -34
- package/dist/views/DesignDrawer.d.ts +0 -28
- package/dist/views/DesignDrawer.js +0 -51
- package/dist/views/metadata-admin/DesignerEditorWrapper.d.ts +0 -68
- package/dist/views/metadata-admin/DesignerEditorWrapper.js +0 -158
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-0034 — Runtime metadata persistence seam.
|
|
3
|
+
*
|
|
4
|
+
* Runtime editing of **views / reports / dashboards** is unified with studio's
|
|
5
|
+
* `/meta` per-item **draft → publish → version** model. A runtime edit stages a
|
|
6
|
+
* per-item **draft** (invisible to other users, live in the editor's own
|
|
7
|
+
* preview); an explicit **publish** promotes it to the active overlay and
|
|
8
|
+
* records a version.
|
|
9
|
+
*
|
|
10
|
+
* This module is the single seam every runtime persistence call flows through,
|
|
11
|
+
* so the call sites (ObjectView / ReportView / DashboardView / RuntimeDraftBar)
|
|
12
|
+
* stay decoupled from the `MetadataClient` shape.
|
|
13
|
+
*
|
|
14
|
+
* The bespoke per-type tables (`sys_view` / `sys_report` / `sys_dashboard`) and
|
|
15
|
+
* their shape adapters have been retired — there is no longer a feature flag or
|
|
16
|
+
* a legacy write path here.
|
|
17
|
+
*/
|
|
18
|
+
/** The runtime-editable artifact types ADR-0034 unifies. `page` (a record
|
|
19
|
+
* `PageSchema`) joins the original three (#1541): a record page is edited in
|
|
20
|
+
* the browser and staged/published through the same `/meta` draft model. */
|
|
21
|
+
export type RuntimeArtifactType = 'view' | 'report' | 'dashboard' | 'page';
|
|
22
|
+
/**
|
|
23
|
+
* The metadata `name` (the `:name` in `/meta/page/:name`) for an object's
|
|
24
|
+
* record page. Prefer an already-assigned record page's name; otherwise mint
|
|
25
|
+
* the convention `<object>_record`. Editing the synthesized default for the
|
|
26
|
+
* first time materialises a real named page under this key so it has something
|
|
27
|
+
* to draft / publish / version against.
|
|
28
|
+
*/
|
|
29
|
+
export declare function recordPageName(objectName: string, existingName?: string | null): string;
|
|
30
|
+
/**
|
|
31
|
+
* Wrap an edited `PageSchema` as a persistable **record page** body: ensures the
|
|
32
|
+
* `name` / `object` / `pageType: 'record'` / `kind: 'full'` identity fields the
|
|
33
|
+
* resolver (`usePageAssignment`) matches on, so a published page overrides the
|
|
34
|
+
* synthesized default for that object on the next render.
|
|
35
|
+
*/
|
|
36
|
+
export declare function recordPageEnvelope(objectName: string, schema: Record<string, any>, name?: string): Record<string, any>;
|
|
37
|
+
/** Everything the seam needs to persist any of the three artifact types. */
|
|
38
|
+
export interface RuntimePersistCtx {
|
|
39
|
+
/** Studio metadata client — the `/meta` draft/publish/version API. */
|
|
40
|
+
metadataClient: any;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Unwrap a `?state=draft` GET response into its bare body, or `null` when
|
|
44
|
+
* there is nothing pending.
|
|
45
|
+
*
|
|
46
|
+
* The framework wraps draft reads in a `{ type, name, item }` envelope; a
|
|
47
|
+
* published read is the bare body. This accepts either shape and returns
|
|
48
|
+
* `null` for an empty/absent draft so `!!readRuntimeDraft(...)` is a reliable
|
|
49
|
+
* "has pending changes" check. Mirrors studio's `extractDraftBody`.
|
|
50
|
+
*/
|
|
51
|
+
export declare function unwrapDraftBody(resp: unknown): Record<string, unknown> | null;
|
|
52
|
+
/**
|
|
53
|
+
* Persist a runtime edit of a view / report / dashboard as a per-item DRAFT
|
|
54
|
+
* (invisible to other users until {@link publishRuntimeMetadata}).
|
|
55
|
+
*/
|
|
56
|
+
export declare function persistRuntimeMetadata(type: RuntimeArtifactType, name: string, body: any, ctx: RuntimePersistCtx): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Create a NEW runtime artifact as a per-item draft. Returns its name (for the
|
|
59
|
+
* caller's auto-activation). UI-layer concerns (default columns, kanban/gallery
|
|
60
|
+
* sub-config, auto-activation) stay in the call site.
|
|
61
|
+
*/
|
|
62
|
+
export declare function createRuntimeMetadata(type: RuntimeArtifactType, name: string, body: any, ctx: RuntimePersistCtx): Promise<string | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Read the pending draft body for a runtime artifact (for the "unpublished
|
|
65
|
+
* changes" indicator and resume-on-open). Returns the bare body, or `null`
|
|
66
|
+
* when nothing is pending.
|
|
67
|
+
*/
|
|
68
|
+
export declare function readRuntimeDraft<T = Record<string, unknown>>(type: RuntimeArtifactType, name: string, ctx: RuntimePersistCtx): Promise<T | null>;
|
|
69
|
+
/**
|
|
70
|
+
* Discard the pending draft of a runtime artifact (Studio's "Discard draft").
|
|
71
|
+
* The published overlay is untouched.
|
|
72
|
+
*/
|
|
73
|
+
export declare function discardRuntimeDraft(type: RuntimeArtifactType, name: string, ctx: RuntimePersistCtx): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Publish a previously-staged runtime edit: promote the pending draft to the
|
|
76
|
+
* active overlay and record a version.
|
|
77
|
+
*/
|
|
78
|
+
export declare function publishRuntimeMetadata(type: RuntimeArtifactType, name: string, ctx: RuntimePersistCtx): Promise<void>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* The metadata `name` (the `:name` in `/meta/page/:name`) for an object's
|
|
4
|
+
* record page. Prefer an already-assigned record page's name; otherwise mint
|
|
5
|
+
* the convention `<object>_record`. Editing the synthesized default for the
|
|
6
|
+
* first time materialises a real named page under this key so it has something
|
|
7
|
+
* to draft / publish / version against.
|
|
8
|
+
*/
|
|
9
|
+
export function recordPageName(objectName, existingName) {
|
|
10
|
+
return existingName || `${objectName}_record`;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Wrap an edited `PageSchema` as a persistable **record page** body: ensures the
|
|
14
|
+
* `name` / `object` / `pageType: 'record'` / `kind: 'full'` identity fields the
|
|
15
|
+
* resolver (`usePageAssignment`) matches on, so a published page overrides the
|
|
16
|
+
* synthesized default for that object on the next render.
|
|
17
|
+
*/
|
|
18
|
+
export function recordPageEnvelope(objectName, schema, name) {
|
|
19
|
+
return {
|
|
20
|
+
...schema,
|
|
21
|
+
type: 'page',
|
|
22
|
+
name: recordPageName(objectName, name ?? schema?.name),
|
|
23
|
+
object: objectName,
|
|
24
|
+
pageType: 'record',
|
|
25
|
+
kind: 'full',
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Unwrap a `?state=draft` GET response into its bare body, or `null` when
|
|
30
|
+
* there is nothing pending.
|
|
31
|
+
*
|
|
32
|
+
* The framework wraps draft reads in a `{ type, name, item }` envelope; a
|
|
33
|
+
* published read is the bare body. This accepts either shape and returns
|
|
34
|
+
* `null` for an empty/absent draft so `!!readRuntimeDraft(...)` is a reliable
|
|
35
|
+
* "has pending changes" check. Mirrors studio's `extractDraftBody`.
|
|
36
|
+
*/
|
|
37
|
+
export function unwrapDraftBody(resp) {
|
|
38
|
+
if (!resp || typeof resp !== 'object')
|
|
39
|
+
return null;
|
|
40
|
+
const env = resp;
|
|
41
|
+
if ('item' in env) {
|
|
42
|
+
const body = env.item;
|
|
43
|
+
if (!body || typeof body !== 'object')
|
|
44
|
+
return null;
|
|
45
|
+
return Object.keys(body).length > 0
|
|
46
|
+
? body
|
|
47
|
+
: null;
|
|
48
|
+
}
|
|
49
|
+
return Object.keys(env).length > 0 ? env : null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Persist a runtime edit of a view / report / dashboard as a per-item DRAFT
|
|
53
|
+
* (invisible to other users until {@link publishRuntimeMetadata}).
|
|
54
|
+
*/
|
|
55
|
+
export async function persistRuntimeMetadata(type, name, body, ctx) {
|
|
56
|
+
await ctx.metadataClient.save(type, name, body, { mode: 'draft' });
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create a NEW runtime artifact as a per-item draft. Returns its name (for the
|
|
60
|
+
* caller's auto-activation). UI-layer concerns (default columns, kanban/gallery
|
|
61
|
+
* sub-config, auto-activation) stay in the call site.
|
|
62
|
+
*/
|
|
63
|
+
export async function createRuntimeMetadata(type, name, body, ctx) {
|
|
64
|
+
await ctx.metadataClient.save(type, name, body, { mode: 'draft' });
|
|
65
|
+
return name;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Read the pending draft body for a runtime artifact (for the "unpublished
|
|
69
|
+
* changes" indicator and resume-on-open). Returns the bare body, or `null`
|
|
70
|
+
* when nothing is pending.
|
|
71
|
+
*/
|
|
72
|
+
export async function readRuntimeDraft(type, name, ctx) {
|
|
73
|
+
const resp = await ctx.metadataClient.get(type, name, { state: 'draft' });
|
|
74
|
+
return unwrapDraftBody(resp);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Discard the pending draft of a runtime artifact (Studio's "Discard draft").
|
|
78
|
+
* The published overlay is untouched.
|
|
79
|
+
*/
|
|
80
|
+
export async function discardRuntimeDraft(type, name, ctx) {
|
|
81
|
+
await ctx.metadataClient.reset(type, name, { state: 'draft' });
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Publish a previously-staged runtime edit: promote the pending draft to the
|
|
85
|
+
* active overlay and record a version.
|
|
86
|
+
*/
|
|
87
|
+
export async function publishRuntimeMetadata(type, name, ctx) {
|
|
88
|
+
await ctx.metadataClient.publish(type, name);
|
|
89
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* `useOpenRecordList` — the console's implementation of the drill "escape
|
|
10
|
+
* hatch" (`DrillNavigationContext.openRecordList`).
|
|
11
|
+
*
|
|
12
|
+
* Navigates to an object's full list page, scoped by a record filter, using the
|
|
13
|
+
* console's `/apps/:appName/:object?filter[field]=value` route shape (the same
|
|
14
|
+
* format `ReportView`'s drill navigation uses). Wire it into a
|
|
15
|
+
* `DrillNavigationProvider` so the dashboard/report drill drawers can offer
|
|
16
|
+
* "Open in list →" and honor `drillDown.target: 'navigate'`.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useOpenRecordList(): (objectName: string, filter?: Record<string, unknown>) => void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
import { useCallback } from 'react';
|
|
9
|
+
import { useNavigate, useParams } from 'react-router-dom';
|
|
10
|
+
/**
|
|
11
|
+
* `useOpenRecordList` — the console's implementation of the drill "escape
|
|
12
|
+
* hatch" (`DrillNavigationContext.openRecordList`).
|
|
13
|
+
*
|
|
14
|
+
* Navigates to an object's full list page, scoped by a record filter, using the
|
|
15
|
+
* console's `/apps/:appName/:object?filter[field]=value` route shape (the same
|
|
16
|
+
* format `ReportView`'s drill navigation uses). Wire it into a
|
|
17
|
+
* `DrillNavigationProvider` so the dashboard/report drill drawers can offer
|
|
18
|
+
* "Open in list →" and honor `drillDown.target: 'navigate'`.
|
|
19
|
+
*/
|
|
20
|
+
export function useOpenRecordList() {
|
|
21
|
+
const navigate = useNavigate();
|
|
22
|
+
const { appName } = useParams();
|
|
23
|
+
return useCallback((objectName, filter) => {
|
|
24
|
+
const params = new URLSearchParams();
|
|
25
|
+
if (filter) {
|
|
26
|
+
for (const [field, value] of Object.entries(filter)) {
|
|
27
|
+
if (value == null)
|
|
28
|
+
continue;
|
|
29
|
+
params.set(`filter[${field}]`, String(value));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const qs = params.toString();
|
|
33
|
+
const base = appName ? `/apps/${appName}` : '';
|
|
34
|
+
navigate(`${base}/${objectName}${qs ? `?${qs}` : ''}`);
|
|
35
|
+
}, [navigate, appName]);
|
|
36
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/** Read `uf_*` params into the UserFilters `initialSelections` shape. */
|
|
9
|
+
export declare function parseUserFilterParams(searchParams: URLSearchParams): Record<string, string[]> | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Mirror a selections payload into a copy of the given params. Only the
|
|
12
|
+
* fields present in `selections` are touched — empty value lists delete
|
|
13
|
+
* their param. Returns the next URLSearchParams (caller decides replace).
|
|
14
|
+
*/
|
|
15
|
+
export declare function applyUserFilterParams(prev: URLSearchParams, selections: Record<string, Array<string | number | boolean>>): URLSearchParams;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* URL persistence for end-user filter selections (ADR-0047).
|
|
10
|
+
*
|
|
11
|
+
* Selections live in `uf_<field>` search params (comma-joined values,
|
|
12
|
+
* each URI-encoded so literal commas survive); the active tab preset is
|
|
13
|
+
* carried as `uf__tab=<tabId>` via the reserved `_tab` key. Mirroring the
|
|
14
|
+
* state into the URL makes filter selections survive a reload and makes
|
|
15
|
+
* filtered lists shareable as links — Airtable Interfaces parity.
|
|
16
|
+
*/
|
|
17
|
+
const PREFIX = 'uf_';
|
|
18
|
+
/** Read `uf_*` params into the UserFilters `initialSelections` shape. */
|
|
19
|
+
export function parseUserFilterParams(searchParams) {
|
|
20
|
+
const out = {};
|
|
21
|
+
searchParams.forEach((value, key) => {
|
|
22
|
+
if (key.startsWith(PREFIX) && value !== '') {
|
|
23
|
+
const field = key.slice(PREFIX.length);
|
|
24
|
+
out[field] = value.split(',').map(v => {
|
|
25
|
+
try {
|
|
26
|
+
return decodeURIComponent(v);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return v;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Mirror a selections payload into a copy of the given params. Only the
|
|
38
|
+
* fields present in `selections` are touched — empty value lists delete
|
|
39
|
+
* their param. Returns the next URLSearchParams (caller decides replace).
|
|
40
|
+
*/
|
|
41
|
+
export function applyUserFilterParams(prev, selections) {
|
|
42
|
+
const next = new URLSearchParams(prev);
|
|
43
|
+
for (const [field, values] of Object.entries(selections)) {
|
|
44
|
+
const key = PREFIX + field;
|
|
45
|
+
if (values && values.length > 0) {
|
|
46
|
+
next.set(key, values.map(v => encodeURIComponent(String(v))).join(','));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
next.delete(key);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return next;
|
|
53
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Runtime flat view — the shape ObjectView's `activeView` carries. */
|
|
2
|
+
export interface RuntimeView {
|
|
3
|
+
id: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
type?: string;
|
|
6
|
+
columns?: unknown[];
|
|
7
|
+
filter?: unknown[];
|
|
8
|
+
sort?: unknown[];
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
/** Studio ViewItem draft — the shape {@link ViewVariantInspector} consumes. */
|
|
12
|
+
export interface InspectorViewDraft {
|
|
13
|
+
name: string;
|
|
14
|
+
object: string;
|
|
15
|
+
viewKind: 'list' | 'form';
|
|
16
|
+
label?: string;
|
|
17
|
+
config: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Convert a flat runtime view into a studio inspector draft.
|
|
21
|
+
*
|
|
22
|
+
* The whole flat view is denormalised into `config` (so view-type sub-blocks,
|
|
23
|
+
* filter, sort, toolbar flags, … all round-trip), with the bound object
|
|
24
|
+
* mirrored into `config.data.object` — the list body's render binding the
|
|
25
|
+
* inspector reads first. `id` maps to the draft's `name`; the top-level
|
|
26
|
+
* `object` is the canonical FK both list and form inspectors fall back to.
|
|
27
|
+
*/
|
|
28
|
+
export declare function runtimeViewToInspectorDraft(activeView: RuntimeView, objectName: string): InspectorViewDraft;
|
|
29
|
+
/**
|
|
30
|
+
* Flatten a studio inspector draft back into the runtime flat view the
|
|
31
|
+
* ObjectView save / update / create handlers consume.
|
|
32
|
+
*
|
|
33
|
+
* The inspector-only `data` wrapper is dropped (the runtime view binds its
|
|
34
|
+
* object via `objectName`, not `config.data.object`); everything else in
|
|
35
|
+
* `config` is preserved. `id` is restored from `draft.name`, and the label
|
|
36
|
+
* prefers the canonical top-level value.
|
|
37
|
+
*/
|
|
38
|
+
export declare function inspectorDraftToRuntimeView(draft: InspectorViewDraft): RuntimeView;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* view-config-adapter — bridges the runtime ObjectView's flat view shape and
|
|
4
|
+
* the studio inspector's ViewItem draft shape.
|
|
5
|
+
*
|
|
6
|
+
* The runtime ObjectView keeps the active view as a FLAT NamedListView:
|
|
7
|
+
*
|
|
8
|
+
* { id, label, type, columns, filter, sort, … }
|
|
9
|
+
*
|
|
10
|
+
* (read from the metadata overlay via the adapter's `listViews`).
|
|
11
|
+
*
|
|
12
|
+
* The studio {@link ViewVariantInspector} authors a canonical ViewItem draft
|
|
13
|
+
* (ADR-0017, "Object has-many View"):
|
|
14
|
+
*
|
|
15
|
+
* { name, object, viewKind: 'list' | 'form', label, config: { type, … } }
|
|
16
|
+
*
|
|
17
|
+
* where the inspector reads/writes the view BODY under `draft.config` and the
|
|
18
|
+
* bound object additionally lives at `config.data.object` for list views.
|
|
19
|
+
*
|
|
20
|
+
* This adapter converts both ways so the runtime panel can host the studio
|
|
21
|
+
* inspector: edits are kept as a ViewItem draft while the panel is open, then
|
|
22
|
+
* flattened back to the runtime view shape on update / save / create (which
|
|
23
|
+
* persist via the metadata draft/publish model).
|
|
24
|
+
*/
|
|
25
|
+
/** View `type`s that belong to the FORM family (no column list). */
|
|
26
|
+
const FORM_FAMILY_TYPES = new Set(['form', 'detail']);
|
|
27
|
+
/** True when a view `type` denotes a form-family view. */
|
|
28
|
+
function isFormFamilyType(type) {
|
|
29
|
+
return typeof type === 'string' && FORM_FAMILY_TYPES.has(type);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Convert a flat runtime view into a studio inspector draft.
|
|
33
|
+
*
|
|
34
|
+
* The whole flat view is denormalised into `config` (so view-type sub-blocks,
|
|
35
|
+
* filter, sort, toolbar flags, … all round-trip), with the bound object
|
|
36
|
+
* mirrored into `config.data.object` — the list body's render binding the
|
|
37
|
+
* inspector reads first. `id` maps to the draft's `name`; the top-level
|
|
38
|
+
* `object` is the canonical FK both list and form inspectors fall back to.
|
|
39
|
+
*/
|
|
40
|
+
export function runtimeViewToInspectorDraft(activeView, objectName) {
|
|
41
|
+
const type = activeView.type || 'grid';
|
|
42
|
+
const viewKind = isFormFamilyType(type) ? 'form' : 'list';
|
|
43
|
+
const label = activeView.label;
|
|
44
|
+
const existingData = activeView.data && typeof activeView.data === 'object'
|
|
45
|
+
? activeView.data
|
|
46
|
+
: undefined;
|
|
47
|
+
return {
|
|
48
|
+
name: activeView.id,
|
|
49
|
+
object: objectName,
|
|
50
|
+
viewKind,
|
|
51
|
+
label,
|
|
52
|
+
config: {
|
|
53
|
+
...activeView,
|
|
54
|
+
type,
|
|
55
|
+
label,
|
|
56
|
+
columns: Array.isArray(activeView.columns) ? activeView.columns : [],
|
|
57
|
+
data: { ...existingData, object: objectName },
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Flatten a studio inspector draft back into the runtime flat view the
|
|
63
|
+
* ObjectView save / update / create handlers consume.
|
|
64
|
+
*
|
|
65
|
+
* The inspector-only `data` wrapper is dropped (the runtime view binds its
|
|
66
|
+
* object via `objectName`, not `config.data.object`); everything else in
|
|
67
|
+
* `config` is preserved. `id` is restored from `draft.name`, and the label
|
|
68
|
+
* prefers the canonical top-level value.
|
|
69
|
+
*/
|
|
70
|
+
export function inspectorDraftToRuntimeView(draft) {
|
|
71
|
+
const config = (draft.config ?? {});
|
|
72
|
+
// Drop the inspector-only `data` wrapper; keep every other body field.
|
|
73
|
+
const body = { ...config };
|
|
74
|
+
delete body.data;
|
|
75
|
+
return {
|
|
76
|
+
...body,
|
|
77
|
+
id: draft.name,
|
|
78
|
+
label: draft.label ?? config.label,
|
|
79
|
+
};
|
|
80
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/app-shell",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Minimal application shell for ObjectUI - framework-agnostic rendering engine",
|
|
@@ -25,50 +25,68 @@
|
|
|
25
25
|
"./styles.css": "./src/styles.css"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@
|
|
29
|
-
"
|
|
28
|
+
"@monaco-editor/react": "^4.7.0",
|
|
29
|
+
"@objectstack/spec": "^10.0.0",
|
|
30
|
+
"@sentry/react": "^10.59.0",
|
|
31
|
+
"jsonc-parser": "^3.3.1",
|
|
32
|
+
"lucide-react": "^1.21.0",
|
|
33
|
+
"qrcode": "^1.5.4",
|
|
30
34
|
"sonner": "^2.0.7",
|
|
31
|
-
"
|
|
32
|
-
"@object-ui/
|
|
33
|
-
"@object-ui/
|
|
34
|
-
"@object-ui/
|
|
35
|
-
"@object-ui/core": "
|
|
36
|
-
"@object-ui/data-objectstack": "
|
|
37
|
-
"@object-ui/fields": "
|
|
38
|
-
"@object-ui/i18n": "
|
|
39
|
-
"@object-ui/layout": "
|
|
40
|
-
"@object-ui/permissions": "
|
|
41
|
-
"@object-ui/
|
|
42
|
-
"@object-ui/
|
|
43
|
-
"@object-ui/
|
|
35
|
+
"zod": "^4.4.3",
|
|
36
|
+
"@object-ui/auth": "7.0.0",
|
|
37
|
+
"@object-ui/collaboration": "7.0.0",
|
|
38
|
+
"@object-ui/components": "7.0.0",
|
|
39
|
+
"@object-ui/core": "7.0.0",
|
|
40
|
+
"@object-ui/data-objectstack": "7.0.0",
|
|
41
|
+
"@object-ui/fields": "7.0.0",
|
|
42
|
+
"@object-ui/i18n": "7.0.0",
|
|
43
|
+
"@object-ui/layout": "7.0.0",
|
|
44
|
+
"@object-ui/permissions": "7.0.0",
|
|
45
|
+
"@object-ui/plugin-editor": "7.0.0",
|
|
46
|
+
"@object-ui/providers": "7.0.0",
|
|
47
|
+
"@object-ui/react": "7.0.0",
|
|
48
|
+
"@object-ui/types": "7.0.0"
|
|
44
49
|
},
|
|
45
50
|
"peerDependencies": {
|
|
46
51
|
"react": "^18.0.0 || ^19.0.0",
|
|
47
52
|
"react-dom": "^18.0.0 || ^19.0.0",
|
|
48
53
|
"react-router-dom": "^6.0.0 || ^7.0.0",
|
|
49
|
-
"@object-ui/plugin-calendar": "^
|
|
50
|
-
"@object-ui/plugin-charts": "^
|
|
51
|
-
"@object-ui/plugin-chatbot": "^
|
|
52
|
-
"@object-ui/plugin-dashboard": "^
|
|
53
|
-
"@object-ui/plugin-designer": "^
|
|
54
|
-
"@object-ui/plugin-detail": "^
|
|
55
|
-
"@object-ui/plugin-form": "^
|
|
56
|
-
"@object-ui/plugin-grid": "^
|
|
57
|
-
"@object-ui/plugin-kanban": "^
|
|
58
|
-
"@object-ui/plugin-list": "^
|
|
59
|
-
"@object-ui/plugin-report": "^
|
|
60
|
-
"@object-ui/plugin-view": "^
|
|
54
|
+
"@object-ui/plugin-calendar": "^7.0.0",
|
|
55
|
+
"@object-ui/plugin-charts": "^7.0.0",
|
|
56
|
+
"@object-ui/plugin-chatbot": "^7.0.0",
|
|
57
|
+
"@object-ui/plugin-dashboard": "^7.0.0",
|
|
58
|
+
"@object-ui/plugin-designer": "^7.0.0",
|
|
59
|
+
"@object-ui/plugin-detail": "^7.0.0",
|
|
60
|
+
"@object-ui/plugin-form": "^7.0.0",
|
|
61
|
+
"@object-ui/plugin-grid": "^7.0.0",
|
|
62
|
+
"@object-ui/plugin-kanban": "^7.0.0",
|
|
63
|
+
"@object-ui/plugin-list": "^7.0.0",
|
|
64
|
+
"@object-ui/plugin-report": "^7.0.0",
|
|
65
|
+
"@object-ui/plugin-view": "^7.0.0"
|
|
61
66
|
},
|
|
62
67
|
"devDependencies": {
|
|
63
|
-
"@types/node": "^
|
|
64
|
-
"@types/
|
|
68
|
+
"@types/node": "^26.0.0",
|
|
69
|
+
"@types/qrcode": "^1.5.6",
|
|
70
|
+
"@types/react": "19.2.17",
|
|
65
71
|
"@types/react-dom": "19.2.3",
|
|
66
|
-
"react": "19.2.
|
|
67
|
-
"react-dom": "19.2.
|
|
68
|
-
"react-router-dom": "^7.
|
|
72
|
+
"react": "19.2.7",
|
|
73
|
+
"react-dom": "19.2.7",
|
|
74
|
+
"react-router-dom": "^7.18.0",
|
|
69
75
|
"sonner": "^2.0.7",
|
|
70
76
|
"typescript": "^6.0.3",
|
|
71
|
-
"vite": "^8.0.
|
|
77
|
+
"vite": "^8.0.16",
|
|
78
|
+
"@object-ui/plugin-calendar": "7.0.0",
|
|
79
|
+
"@object-ui/plugin-charts": "7.0.0",
|
|
80
|
+
"@object-ui/plugin-chatbot": "7.0.0",
|
|
81
|
+
"@object-ui/plugin-dashboard": "7.0.0",
|
|
82
|
+
"@object-ui/plugin-designer": "7.0.0",
|
|
83
|
+
"@object-ui/plugin-detail": "7.0.0",
|
|
84
|
+
"@object-ui/plugin-form": "7.0.0",
|
|
85
|
+
"@object-ui/plugin-grid": "7.0.0",
|
|
86
|
+
"@object-ui/plugin-kanban": "7.0.0",
|
|
87
|
+
"@object-ui/plugin-list": "7.0.0",
|
|
88
|
+
"@object-ui/plugin-report": "7.0.0",
|
|
89
|
+
"@object-ui/plugin-view": "7.0.0"
|
|
72
90
|
},
|
|
73
91
|
"keywords": [
|
|
74
92
|
"objectui",
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DesignDrawer
|
|
3
|
-
*
|
|
4
|
-
* A right-side drawer that hosts visual editors (PageCanvasEditor / DashboardEditor)
|
|
5
|
-
* for inline editing with real-time preview. Uses the Shadcn Sheet primitive so the
|
|
6
|
-
* main workspace remains visible while the user edits.
|
|
7
|
-
*/
|
|
8
|
-
export interface DesignDrawerProps {
|
|
9
|
-
/** Whether the drawer is open */
|
|
10
|
-
open: boolean;
|
|
11
|
-
/** Called when the drawer requests close */
|
|
12
|
-
onOpenChange: (open: boolean) => void;
|
|
13
|
-
/** Human-readable title shown in the drawer header */
|
|
14
|
-
title: string;
|
|
15
|
-
/** Optional description */
|
|
16
|
-
description?: string;
|
|
17
|
-
/** The current schema (PageSchema | DashboardSchema) */
|
|
18
|
-
schema: any;
|
|
19
|
-
/** Called when the editor modifies the schema — parent updates its own state for live preview */
|
|
20
|
-
onSchemaChange: (updated: any) => void;
|
|
21
|
-
/** sys_page | sys_dashboard */
|
|
22
|
-
collection: string;
|
|
23
|
-
/** Record key for the update call */
|
|
24
|
-
recordName: string;
|
|
25
|
-
/** Render prop: receives (schema, onChange) and returns the editor JSX */
|
|
26
|
-
children: (schema: any, onChange: (updated: any) => void) => React.ReactNode;
|
|
27
|
-
}
|
|
28
|
-
export declare function DesignDrawer({ open, onOpenChange, title, description, schema, onSchemaChange, collection, recordName, children, }: DesignDrawerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* DesignDrawer
|
|
4
|
-
*
|
|
5
|
-
* A right-side drawer that hosts visual editors (PageCanvasEditor / DashboardEditor)
|
|
6
|
-
* for inline editing with real-time preview. Uses the Shadcn Sheet primitive so the
|
|
7
|
-
* main workspace remains visible while the user edits.
|
|
8
|
-
*/
|
|
9
|
-
import { useCallback, useEffect, useRef } from 'react';
|
|
10
|
-
import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, } from '@object-ui/components';
|
|
11
|
-
import { toast } from 'sonner';
|
|
12
|
-
import { useAdapter } from '../providers/AdapterProvider';
|
|
13
|
-
export function DesignDrawer({ open, onOpenChange, title, description, schema, onSchemaChange, collection, recordName, children, }) {
|
|
14
|
-
const dataSource = useAdapter();
|
|
15
|
-
const schemaRef = useRef(schema);
|
|
16
|
-
schemaRef.current = schema;
|
|
17
|
-
const saveSchema = useCallback(async (toSave) => {
|
|
18
|
-
try {
|
|
19
|
-
if (dataSource) {
|
|
20
|
-
await dataSource.update(collection, recordName, toSave);
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
console.warn('[DesignDrawer] Auto-save failed:', err);
|
|
26
|
-
// Save errors are non-blocking; user can retry via Ctrl+S
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
}, [dataSource, collection, recordName]);
|
|
30
|
-
const handleChange = useCallback(async (updated) => {
|
|
31
|
-
onSchemaChange(updated);
|
|
32
|
-
await saveSchema(updated);
|
|
33
|
-
}, [onSchemaChange, saveSchema]);
|
|
34
|
-
// Ctrl+S / Cmd+S keyboard shortcut to explicitly save while drawer is open
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
if (!open)
|
|
37
|
-
return;
|
|
38
|
-
const handleKeyDown = (e) => {
|
|
39
|
-
if ((e.ctrlKey || e.metaKey) && e.key === 's') {
|
|
40
|
-
e.preventDefault();
|
|
41
|
-
saveSchema(schemaRef.current).then((ok) => {
|
|
42
|
-
if (ok)
|
|
43
|
-
toast.success(`${title} saved`);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
window.addEventListener('keydown', handleKeyDown);
|
|
48
|
-
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
49
|
-
}, [open, saveSchema, title]);
|
|
50
|
-
return (_jsx(Sheet, { open: open, onOpenChange: onOpenChange, modal: false, children: _jsxs(SheetContent, { side: "right", hideOverlay: true, className: "w-full sm:w-[540px] sm:max-w-[540px] lg:w-[640px] lg:max-w-[640px] p-0 flex flex-col", "data-testid": "design-drawer", children: [_jsxs(SheetHeader, { className: "px-4 py-3 border-b shrink-0", children: [_jsx(SheetTitle, { children: title }), _jsx(SheetDescription, { className: description ? '' : 'sr-only', children: description || `Visual editor — configure and preview ${title}` })] }), _jsx("div", { className: "flex-1 overflow-auto p-4", children: children(schema, handleChange) })] }) }));
|
|
51
|
-
}
|