@object-ui/app-shell 6.2.3 → 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 +948 -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,358 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
3
|
+
/**
|
|
4
|
+
* flow-canvas-parts — presentational building blocks for `FlowCanvas.tsx`:
|
|
5
|
+
* the per-node-type icon/tone mapping, the node card, and the add-node
|
|
6
|
+
* palette popover. Kept dependency-free and Shadcn-native (Tailwind + lucide).
|
|
7
|
+
*/
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { Code, CircleDot, CircleStop, Diamond, FilePen, FilePlus, FileSearch, FileX, GitFork, Globe, ListChecks, MonitorSmartphone, Play, Plug, Plus, Repeat, ShieldAlert, TimerReset, UserCheck, Variable, Workflow, Zap, } from 'lucide-react';
|
|
10
|
+
import { cn } from '@object-ui/components';
|
|
11
|
+
import { NODE_W, NODE_H } from './flow-canvas-layout';
|
|
12
|
+
export function nodeIcon(type) {
|
|
13
|
+
switch (type) {
|
|
14
|
+
case 'start':
|
|
15
|
+
return Play;
|
|
16
|
+
case 'end':
|
|
17
|
+
return CircleStop;
|
|
18
|
+
case 'decision':
|
|
19
|
+
case 'branch':
|
|
20
|
+
case 'gateway':
|
|
21
|
+
return Diamond;
|
|
22
|
+
case 'wait':
|
|
23
|
+
case 'timer':
|
|
24
|
+
case 'delay':
|
|
25
|
+
return TimerReset;
|
|
26
|
+
case 'boundary_event':
|
|
27
|
+
case 'signal':
|
|
28
|
+
return Zap;
|
|
29
|
+
case 'subflow':
|
|
30
|
+
case 'flow':
|
|
31
|
+
return Workflow;
|
|
32
|
+
case 'create_record':
|
|
33
|
+
return FilePlus;
|
|
34
|
+
case 'update_record':
|
|
35
|
+
return FilePen;
|
|
36
|
+
case 'delete_record':
|
|
37
|
+
return FileX;
|
|
38
|
+
case 'get_record':
|
|
39
|
+
return FileSearch;
|
|
40
|
+
case 'http_request':
|
|
41
|
+
case 'webhook':
|
|
42
|
+
return Globe;
|
|
43
|
+
case 'script':
|
|
44
|
+
case 'script_task':
|
|
45
|
+
return Code;
|
|
46
|
+
case 'screen':
|
|
47
|
+
case 'user_task':
|
|
48
|
+
return MonitorSmartphone;
|
|
49
|
+
case 'approval':
|
|
50
|
+
return UserCheck;
|
|
51
|
+
case 'connector_action':
|
|
52
|
+
case 'service_task':
|
|
53
|
+
return Plug;
|
|
54
|
+
case 'assignment':
|
|
55
|
+
return Variable;
|
|
56
|
+
case 'loop':
|
|
57
|
+
case 'for_each':
|
|
58
|
+
return Repeat;
|
|
59
|
+
case 'map':
|
|
60
|
+
return ListChecks;
|
|
61
|
+
case 'parallel_gateway':
|
|
62
|
+
case 'join_gateway':
|
|
63
|
+
case 'parallel':
|
|
64
|
+
return GitFork;
|
|
65
|
+
case 'try_catch':
|
|
66
|
+
return ShieldAlert;
|
|
67
|
+
default:
|
|
68
|
+
return CircleDot;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const TONES = {
|
|
72
|
+
start: {
|
|
73
|
+
icon: 'text-emerald-600 dark:text-emerald-400',
|
|
74
|
+
accent: 'border-l-emerald-500',
|
|
75
|
+
label: 'text-emerald-600 dark:text-emerald-400',
|
|
76
|
+
chip: 'bg-emerald-500/10 ring-1 ring-inset ring-emerald-500/20 dark:bg-emerald-400/10',
|
|
77
|
+
},
|
|
78
|
+
end: {
|
|
79
|
+
icon: 'text-rose-600 dark:text-rose-400',
|
|
80
|
+
accent: 'border-l-rose-500',
|
|
81
|
+
label: 'text-rose-600 dark:text-rose-400',
|
|
82
|
+
chip: 'bg-rose-500/10 ring-1 ring-inset ring-rose-500/20 dark:bg-rose-400/10',
|
|
83
|
+
},
|
|
84
|
+
decision: {
|
|
85
|
+
icon: 'text-amber-600 dark:text-amber-400',
|
|
86
|
+
accent: 'border-l-amber-500',
|
|
87
|
+
label: 'text-amber-600 dark:text-amber-400',
|
|
88
|
+
chip: 'bg-amber-500/10 ring-1 ring-inset ring-amber-500/20 dark:bg-amber-400/10',
|
|
89
|
+
},
|
|
90
|
+
wait: {
|
|
91
|
+
icon: 'text-blue-600 dark:text-blue-400',
|
|
92
|
+
accent: 'border-l-blue-500',
|
|
93
|
+
label: 'text-blue-600 dark:text-blue-400',
|
|
94
|
+
chip: 'bg-blue-500/10 ring-1 ring-inset ring-blue-500/20 dark:bg-blue-400/10',
|
|
95
|
+
},
|
|
96
|
+
signal: {
|
|
97
|
+
icon: 'text-violet-600 dark:text-violet-400',
|
|
98
|
+
accent: 'border-l-violet-500',
|
|
99
|
+
label: 'text-violet-600 dark:text-violet-400',
|
|
100
|
+
chip: 'bg-violet-500/10 ring-1 ring-inset ring-violet-500/20 dark:bg-violet-400/10',
|
|
101
|
+
},
|
|
102
|
+
subflow: {
|
|
103
|
+
icon: 'text-indigo-600 dark:text-indigo-400',
|
|
104
|
+
accent: 'border-l-indigo-500',
|
|
105
|
+
label: 'text-indigo-600 dark:text-indigo-400',
|
|
106
|
+
chip: 'bg-indigo-500/10 ring-1 ring-inset ring-indigo-500/20 dark:bg-indigo-400/10',
|
|
107
|
+
},
|
|
108
|
+
task: {
|
|
109
|
+
icon: 'text-slate-500 dark:text-slate-400',
|
|
110
|
+
accent: 'border-l-slate-400',
|
|
111
|
+
label: 'text-slate-500 dark:text-slate-400',
|
|
112
|
+
chip: 'bg-slate-500/10 ring-1 ring-inset ring-slate-500/20 dark:bg-slate-400/10',
|
|
113
|
+
},
|
|
114
|
+
record: {
|
|
115
|
+
icon: 'text-cyan-600 dark:text-cyan-400',
|
|
116
|
+
accent: 'border-l-cyan-500',
|
|
117
|
+
label: 'text-cyan-600 dark:text-cyan-400',
|
|
118
|
+
chip: 'bg-cyan-500/10 ring-1 ring-inset ring-cyan-500/20 dark:bg-cyan-400/10',
|
|
119
|
+
},
|
|
120
|
+
integration: {
|
|
121
|
+
icon: 'text-fuchsia-600 dark:text-fuchsia-400',
|
|
122
|
+
accent: 'border-l-fuchsia-500',
|
|
123
|
+
label: 'text-fuchsia-600 dark:text-fuchsia-400',
|
|
124
|
+
chip: 'bg-fuchsia-500/10 ring-1 ring-inset ring-fuchsia-500/20 dark:bg-fuchsia-400/10',
|
|
125
|
+
},
|
|
126
|
+
approval: {
|
|
127
|
+
icon: 'text-teal-600 dark:text-teal-400',
|
|
128
|
+
accent: 'border-l-teal-500',
|
|
129
|
+
label: 'text-teal-600 dark:text-teal-400',
|
|
130
|
+
chip: 'bg-teal-500/10 ring-1 ring-inset ring-teal-500/20 dark:bg-teal-400/10',
|
|
131
|
+
},
|
|
132
|
+
loop: {
|
|
133
|
+
icon: 'text-sky-600 dark:text-sky-400',
|
|
134
|
+
accent: 'border-l-sky-500',
|
|
135
|
+
label: 'text-sky-600 dark:text-sky-400',
|
|
136
|
+
chip: 'bg-sky-500/10 ring-1 ring-inset ring-sky-500/20 dark:bg-sky-400/10',
|
|
137
|
+
},
|
|
138
|
+
screen: {
|
|
139
|
+
icon: 'text-pink-600 dark:text-pink-400',
|
|
140
|
+
accent: 'border-l-pink-500',
|
|
141
|
+
label: 'text-pink-600 dark:text-pink-400',
|
|
142
|
+
chip: 'bg-pink-500/10 ring-1 ring-inset ring-pink-500/20 dark:bg-pink-400/10',
|
|
143
|
+
},
|
|
144
|
+
assignment: {
|
|
145
|
+
icon: 'text-purple-600 dark:text-purple-400',
|
|
146
|
+
accent: 'border-l-purple-500',
|
|
147
|
+
label: 'text-purple-600 dark:text-purple-400',
|
|
148
|
+
chip: 'bg-purple-500/10 ring-1 ring-inset ring-purple-500/20 dark:bg-purple-400/10',
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
export function nodeTone(type) {
|
|
152
|
+
switch (type) {
|
|
153
|
+
case 'start':
|
|
154
|
+
return TONES.start;
|
|
155
|
+
case 'end':
|
|
156
|
+
return TONES.end;
|
|
157
|
+
case 'decision':
|
|
158
|
+
case 'branch':
|
|
159
|
+
case 'gateway':
|
|
160
|
+
case 'parallel_gateway':
|
|
161
|
+
case 'join_gateway':
|
|
162
|
+
case 'parallel':
|
|
163
|
+
return TONES.decision;
|
|
164
|
+
case 'wait':
|
|
165
|
+
case 'timer':
|
|
166
|
+
case 'delay':
|
|
167
|
+
return TONES.wait;
|
|
168
|
+
case 'boundary_event':
|
|
169
|
+
case 'signal':
|
|
170
|
+
case 'try_catch':
|
|
171
|
+
return TONES.signal;
|
|
172
|
+
case 'subflow':
|
|
173
|
+
case 'flow':
|
|
174
|
+
return TONES.subflow;
|
|
175
|
+
case 'approval':
|
|
176
|
+
return TONES.approval;
|
|
177
|
+
case 'loop':
|
|
178
|
+
case 'for_each':
|
|
179
|
+
case 'map':
|
|
180
|
+
return TONES.loop;
|
|
181
|
+
case 'screen':
|
|
182
|
+
case 'user_task':
|
|
183
|
+
return TONES.screen;
|
|
184
|
+
case 'assignment':
|
|
185
|
+
return TONES.assignment;
|
|
186
|
+
case 'create_record':
|
|
187
|
+
case 'update_record':
|
|
188
|
+
case 'delete_record':
|
|
189
|
+
case 'get_record':
|
|
190
|
+
return TONES.record;
|
|
191
|
+
case 'http_request':
|
|
192
|
+
case 'connector_action':
|
|
193
|
+
case 'script':
|
|
194
|
+
case 'webhook':
|
|
195
|
+
case 'service_task':
|
|
196
|
+
case 'script_task':
|
|
197
|
+
return TONES.integration;
|
|
198
|
+
default:
|
|
199
|
+
return TONES.task;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Renders the glyph for a node type. Uses `createElement` (rather than binding
|
|
204
|
+
* the resolved icon to a capitalized local) so the renderer stays a stable
|
|
205
|
+
* module-scope component instead of one re-created on every parent render.
|
|
206
|
+
*/
|
|
207
|
+
export function NodeTypeIcon({ type, className }) {
|
|
208
|
+
return React.createElement(nodeIcon(type), { className, 'aria-hidden': true });
|
|
209
|
+
}
|
|
210
|
+
/** Display order of the palette's category sections. */
|
|
211
|
+
export const NODE_CATEGORY_ORDER = ['Data', 'Logic', 'Human', 'Integration', 'Flow'];
|
|
212
|
+
/**
|
|
213
|
+
* Category for a node type — drives palette grouping and gives engine-only
|
|
214
|
+
* (plugin-contributed) types a sensible section. Mirrors the `nodeTone`
|
|
215
|
+
* families so color and grouping stay consistent.
|
|
216
|
+
*/
|
|
217
|
+
export function nodeCategory(type) {
|
|
218
|
+
switch (type) {
|
|
219
|
+
case 'create_record':
|
|
220
|
+
case 'update_record':
|
|
221
|
+
case 'delete_record':
|
|
222
|
+
case 'get_record':
|
|
223
|
+
return 'Data';
|
|
224
|
+
case 'decision':
|
|
225
|
+
case 'branch':
|
|
226
|
+
case 'gateway':
|
|
227
|
+
case 'loop':
|
|
228
|
+
case 'for_each':
|
|
229
|
+
case 'map':
|
|
230
|
+
case 'assignment':
|
|
231
|
+
case 'parallel_gateway':
|
|
232
|
+
case 'join_gateway':
|
|
233
|
+
case 'parallel':
|
|
234
|
+
case 'try_catch':
|
|
235
|
+
return 'Logic';
|
|
236
|
+
case 'approval':
|
|
237
|
+
case 'screen':
|
|
238
|
+
case 'user_task':
|
|
239
|
+
return 'Human';
|
|
240
|
+
case 'http_request':
|
|
241
|
+
case 'connector_action':
|
|
242
|
+
case 'script':
|
|
243
|
+
case 'webhook':
|
|
244
|
+
case 'service_task':
|
|
245
|
+
case 'script_task':
|
|
246
|
+
return 'Integration';
|
|
247
|
+
default:
|
|
248
|
+
// subflow, wait, boundary_event, end, and anything unknown → Flow control.
|
|
249
|
+
return 'Flow';
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/** Node types offered by the add-node palette (spec `FlowNodeAction`). */
|
|
253
|
+
export const NODE_PALETTE = [
|
|
254
|
+
{ type: 'create_record', label: 'Create record', hint: 'Insert a new record', category: 'Data' },
|
|
255
|
+
{ type: 'update_record', label: 'Update record', hint: 'Modify an existing record', category: 'Data' },
|
|
256
|
+
{ type: 'get_record', label: 'Get record', hint: 'Query records', category: 'Data' },
|
|
257
|
+
{ type: 'delete_record', label: 'Delete record', hint: 'Remove matching records', category: 'Data' },
|
|
258
|
+
{ type: 'decision', label: 'Decision', hint: 'Branch on a condition', category: 'Logic' },
|
|
259
|
+
{ type: 'loop', label: 'Loop', hint: 'Iterate over a collection', category: 'Logic' },
|
|
260
|
+
{ type: 'assignment', label: 'Set variables', hint: 'Assign flow variables', category: 'Logic' },
|
|
261
|
+
// ADR-0031: authors get the structured constructs (well-formed by
|
|
262
|
+
// construction); the BPMN `parallel_gateway` / `join_gateway` pair is an
|
|
263
|
+
// import/export representation only — the engine has no executor for it.
|
|
264
|
+
{ type: 'parallel', label: 'Parallel', hint: 'Run branches concurrently, join at end', category: 'Logic' },
|
|
265
|
+
{ type: 'try_catch', label: 'Try / Catch', hint: 'Protect steps with error handling and retry', category: 'Logic' },
|
|
266
|
+
{ type: 'approval', label: 'Approval', hint: 'Pause for a human decision', category: 'Human' },
|
|
267
|
+
{ type: 'screen', label: 'Screen', hint: 'Collect input from a user', category: 'Human' },
|
|
268
|
+
{ type: 'http_request', label: 'HTTP request', hint: 'Call an external API', category: 'Integration' },
|
|
269
|
+
{ type: 'connector_action', label: 'Connector', hint: 'Run an integration action', category: 'Integration' },
|
|
270
|
+
{ type: 'script', label: 'Script', hint: 'Run custom code', category: 'Integration' },
|
|
271
|
+
{ type: 'subflow', label: 'Subflow', hint: 'Invoke another flow', category: 'Flow' },
|
|
272
|
+
{ type: 'wait', label: 'Wait', hint: 'Pause for an event or timer', category: 'Flow' },
|
|
273
|
+
{ type: 'end', label: 'End', hint: 'Terminate the flow', category: 'Flow' },
|
|
274
|
+
];
|
|
275
|
+
/** Human-friendly default label for a newly created node of `type`. */
|
|
276
|
+
export function defaultNodeLabel(type) {
|
|
277
|
+
const item = NODE_PALETTE.find((p) => p.type === type);
|
|
278
|
+
if (item)
|
|
279
|
+
return item.label;
|
|
280
|
+
return type
|
|
281
|
+
.split('_')
|
|
282
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
283
|
+
.join(' ');
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Spec-valid seed fields for a newly created node, so structured blocks start
|
|
287
|
+
* in a valid-ish shape (e.g. a wait node already has a timer eventType) rather
|
|
288
|
+
* than an empty intermediate state. Returns extra node props to spread in.
|
|
289
|
+
*/
|
|
290
|
+
export function defaultNodeExtras(type) {
|
|
291
|
+
switch (type) {
|
|
292
|
+
case 'start':
|
|
293
|
+
return {};
|
|
294
|
+
case 'wait':
|
|
295
|
+
return { waitEventConfig: { eventType: 'timer', onTimeout: 'fail' } };
|
|
296
|
+
case 'connector_action':
|
|
297
|
+
return { connectorConfig: { connectorId: '', actionId: '', input: {} } };
|
|
298
|
+
case 'boundary_event':
|
|
299
|
+
return { boundaryConfig: { attachedToNodeId: '', eventType: 'error', interrupting: true } };
|
|
300
|
+
case 'approval':
|
|
301
|
+
// Seed a node-model approval: at least one approver + spec defaults. The
|
|
302
|
+
// author wires the out-edges with labels `approve` / `reject`.
|
|
303
|
+
return { config: { approvers: [{ type: 'manager' }], behavior: 'first_response', lockRecord: true } };
|
|
304
|
+
case 'http_request':
|
|
305
|
+
return { config: { method: 'GET' } };
|
|
306
|
+
case 'script':
|
|
307
|
+
return {};
|
|
308
|
+
default:
|
|
309
|
+
return {};
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* A single draggable flow node rendered at an absolute canvas coordinate.
|
|
314
|
+
* The card body drives selection + reposition; a dedicated bottom "+" handle
|
|
315
|
+
* (edit mode only) appends a connected child without ambiguity.
|
|
316
|
+
*/
|
|
317
|
+
export function NodeCard({ type, label, summary, position, selected, editable, runState, dimmed, onPointerDown, onSelect, onAppend, }) {
|
|
318
|
+
const tone = nodeTone(type);
|
|
319
|
+
return (_jsxs("div", { className: "absolute transition-opacity duration-200", style: { left: position.x, top: position.y, width: NODE_W, height: NODE_H, opacity: dimmed ? 0.35 : 1 }, children: [_jsxs("div", { role: "button", tabIndex: 0, "aria-pressed": selected, onPointerDown: onPointerDown, onClick: (e) => {
|
|
320
|
+
e.stopPropagation();
|
|
321
|
+
onSelect?.();
|
|
322
|
+
}, onKeyDown: (e) => {
|
|
323
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
324
|
+
e.preventDefault();
|
|
325
|
+
onSelect?.();
|
|
326
|
+
}
|
|
327
|
+
}, className: cn('group flex h-full w-full items-center gap-3 rounded-xl border bg-card px-2.5 py-2 text-left shadow-sm outline-none', 'transition-[transform,box-shadow,border-color] duration-150 ease-out will-change-transform', 'hover:-translate-y-0.5 hover:shadow-lg hover:shadow-foreground/[0.06] focus-visible:ring-2 focus-visible:ring-primary/40', editable ? 'cursor-grab active:cursor-grabbing' : 'cursor-pointer', runState === 'active'
|
|
328
|
+
? 'border-sky-500 shadow-md shadow-sky-500/20 ring-2 ring-sky-400/60'
|
|
329
|
+
: runState === 'visited'
|
|
330
|
+
? 'border-emerald-500/70 ring-1 ring-emerald-400/40'
|
|
331
|
+
: selected
|
|
332
|
+
? 'border-primary shadow-md ring-2 ring-primary/30'
|
|
333
|
+
: 'border-border/80'), children: [_jsx("div", { className: cn('flex h-9 w-9 shrink-0 items-center justify-center rounded-lg transition-transform duration-150 group-hover:scale-105', tone.chip, runState === 'active' && 'animate-pulse'), children: _jsx(NodeTypeIcon, { type: type, className: cn('h-[18px] w-[18px]', tone.icon) }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { title: label, className: "truncate text-[13px] font-semibold leading-tight text-foreground", children: label }), _jsxs("div", { className: "mt-1 flex items-baseline gap-1.5 leading-tight", children: [_jsx("span", { className: cn('shrink-0 text-[10px] font-semibold uppercase tracking-[0.08em]', tone.label), children: type }), summary && (_jsx("span", { className: "min-w-0 truncate font-mono text-[10px] text-muted-foreground", title: summary, children: summary }))] })] })] }), editable && type !== 'end' && (_jsx("button", { type: "button", title: "Add connected node", "aria-label": "Add connected node", onPointerDown: (e) => e.stopPropagation(), onClick: (e) => {
|
|
334
|
+
e.stopPropagation();
|
|
335
|
+
onAppend?.();
|
|
336
|
+
}, className: cn('absolute left-1/2 -bottom-3 z-10 inline-flex h-6 w-6 -translate-x-1/2 items-center justify-center rounded-full border bg-background text-muted-foreground shadow-sm transition-colors', 'opacity-0 hover:border-primary hover:text-primary group-hover:opacity-100 focus-visible:opacity-100'), children: _jsx(Plus, { className: "h-3.5 w-3.5" }) }))] }));
|
|
337
|
+
}
|
|
338
|
+
/** Compact popover listing the node types an author can add, grouped by category. */
|
|
339
|
+
export function NodePalette({ items = NODE_PALETTE, onPick, onClose }) {
|
|
340
|
+
// Bucket items by category (falling back to the type's inferred category, so
|
|
341
|
+
// engine-only / plugin nodes still land in a sensible section), then render
|
|
342
|
+
// sections in the canonical order. Empty sections are skipped.
|
|
343
|
+
const grouped = React.useMemo(() => {
|
|
344
|
+
const buckets = new Map();
|
|
345
|
+
for (const item of items) {
|
|
346
|
+
const cat = item.category ?? nodeCategory(item.type);
|
|
347
|
+
const list = buckets.get(cat) ?? [];
|
|
348
|
+
list.push(item);
|
|
349
|
+
buckets.set(cat, list);
|
|
350
|
+
}
|
|
351
|
+
return NODE_CATEGORY_ORDER.map((cat) => [cat, buckets.get(cat) ?? []]).filter(([, list]) => list.length > 0);
|
|
352
|
+
}, [items]);
|
|
353
|
+
const renderItem = (item) => {
|
|
354
|
+
const tone = nodeTone(item.type);
|
|
355
|
+
return (_jsxs("button", { type: "button", onClick: () => onPick(item.type), className: "flex w-full items-center gap-2.5 rounded-lg px-2 py-1.5 text-left transition-colors hover:bg-accent", children: [_jsx("span", { className: cn('flex h-7 w-7 shrink-0 items-center justify-center rounded-md', tone.chip), children: _jsx(NodeTypeIcon, { type: item.type, className: cn('h-[15px] w-[15px]', tone.icon) }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-[13px] font-medium", children: item.label }), item.hint && _jsx("div", { className: "truncate text-[11px] text-muted-foreground", children: item.hint })] })] }, item.type));
|
|
356
|
+
};
|
|
357
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-20", onClick: onClose, "aria-hidden": true }), _jsx("div", { className: "absolute right-0 top-full z-30 mt-1.5 max-h-[66vh] w-60 overflow-y-auto rounded-xl border bg-popover/95 p-1.5 shadow-xl shadow-foreground/[0.08] ring-1 ring-black/[0.03] backdrop-blur-md", children: grouped.map(([category, list], gi) => (_jsxs("div", { className: cn(gi > 0 && 'mt-1 border-t border-border/60 pt-1'), children: [_jsx("div", { className: "px-2 pb-1 pt-1 text-[10px] font-semibold uppercase tracking-[0.08em] text-muted-foreground", children: category }), list.map(renderItem)] }, category))) })] }));
|
|
358
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* form-preview — shared classifier for rendering form blocks/views on a design
|
|
3
|
+
* or preview surface (ViewPreview, the page-designer canvas).
|
|
4
|
+
*
|
|
5
|
+
* Overlay form types (`drawer` / `modal`) render their body through a portal as
|
|
6
|
+
* a modal Sheet/Dialog. On a preview canvas that overlay escapes the layout and
|
|
7
|
+
* locks the whole editor — Radix sets body `pointer-events:none` and traps focus
|
|
8
|
+
* while open — which reads as a frozen UI. Preview surfaces neutralise overlay
|
|
9
|
+
* types to an inline form before handing the schema to SchemaRenderer.
|
|
10
|
+
*
|
|
11
|
+
* This is the schema-level layer; `DrawerForm`/`ModalForm` also self-guard via
|
|
12
|
+
* `PreviewModeProvider` (rendering inline under preview), so a form rendered live
|
|
13
|
+
* can never lock the page even if a surface forgets to coerce. Keep the single
|
|
14
|
+
* source of truth here so the two preview surfaces never drift apart.
|
|
15
|
+
*/
|
|
16
|
+
/** Form types that render inline (no portalled overlay). */
|
|
17
|
+
export declare const INLINE_FORM_TYPES: Set<string>;
|
|
18
|
+
/** Form types that render as a portalled, page-locking overlay. */
|
|
19
|
+
export declare const OVERLAY_FORM_TYPES: Set<string>;
|
|
20
|
+
/** True when `t` is a form type that would mount a page-locking overlay. */
|
|
21
|
+
export declare function isOverlayFormType(t: unknown): boolean;
|
|
22
|
+
/** Map any form type to an inline one: overlay types collapse to `simple`,
|
|
23
|
+
* inline types pass through, unknown/missing falls back to `simple`. */
|
|
24
|
+
export declare function toInlineFormType(t: unknown): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* form-preview — shared classifier for rendering form blocks/views on a design
|
|
4
|
+
* or preview surface (ViewPreview, the page-designer canvas).
|
|
5
|
+
*
|
|
6
|
+
* Overlay form types (`drawer` / `modal`) render their body through a portal as
|
|
7
|
+
* a modal Sheet/Dialog. On a preview canvas that overlay escapes the layout and
|
|
8
|
+
* locks the whole editor — Radix sets body `pointer-events:none` and traps focus
|
|
9
|
+
* while open — which reads as a frozen UI. Preview surfaces neutralise overlay
|
|
10
|
+
* types to an inline form before handing the schema to SchemaRenderer.
|
|
11
|
+
*
|
|
12
|
+
* This is the schema-level layer; `DrawerForm`/`ModalForm` also self-guard via
|
|
13
|
+
* `PreviewModeProvider` (rendering inline under preview), so a form rendered live
|
|
14
|
+
* can never lock the page even if a surface forgets to coerce. Keep the single
|
|
15
|
+
* source of truth here so the two preview surfaces never drift apart.
|
|
16
|
+
*/
|
|
17
|
+
/** Form types that render inline (no portalled overlay). */
|
|
18
|
+
export const INLINE_FORM_TYPES = new Set(['simple', 'tabbed', 'wizard', 'split']);
|
|
19
|
+
/** Form types that render as a portalled, page-locking overlay. */
|
|
20
|
+
export const OVERLAY_FORM_TYPES = new Set(['drawer', 'modal']);
|
|
21
|
+
/** True when `t` is a form type that would mount a page-locking overlay. */
|
|
22
|
+
export function isOverlayFormType(t) {
|
|
23
|
+
return typeof t === 'string' && OVERLAY_FORM_TYPES.has(t);
|
|
24
|
+
}
|
|
25
|
+
/** Map any form type to an inline one: overlay types collapse to `simple`,
|
|
26
|
+
* inline types pass through, unknown/missing falls back to `simple`. */
|
|
27
|
+
export function toInlineFormType(t) {
|
|
28
|
+
return typeof t === 'string' && INLINE_FORM_TYPES.has(t) ? t : 'simple';
|
|
29
|
+
}
|
|
@@ -15,12 +15,55 @@ import { ReportPreview } from './ReportPreview';
|
|
|
15
15
|
import { AppPreview } from './AppPreview';
|
|
16
16
|
import { ObjectPreview } from './ObjectPreview';
|
|
17
17
|
import { EmailTemplatePreview } from './EmailTemplatePreview';
|
|
18
|
+
import { FlowPreview } from './FlowPreview';
|
|
19
|
+
import { AgentPreview } from './AgentPreview';
|
|
20
|
+
import { ToolPreview } from './ToolPreview';
|
|
21
|
+
import { PermissionPreview } from './PermissionPreview';
|
|
22
|
+
import { ActionPreview } from './ActionPreview';
|
|
23
|
+
import { JobPreview } from './JobPreview';
|
|
24
|
+
import { TranslationPreview } from './TranslationPreview';
|
|
25
|
+
import { RolePreview } from './RolePreview';
|
|
26
|
+
import { SkillPreview } from './SkillPreview';
|
|
27
|
+
import { DatasourcePreview } from './DatasourcePreview';
|
|
28
|
+
import { ValidationPreview } from './ValidationPreview';
|
|
29
|
+
import { DatasetPreview } from './DatasetPreview';
|
|
30
|
+
import { BookPreview } from './BookPreview';
|
|
18
31
|
export function registerBuiltinPreviews() {
|
|
32
|
+
// UI surfaces
|
|
19
33
|
registerMetadataPreview('page', PagePreview);
|
|
20
34
|
registerMetadataPreview('view', ViewPreview);
|
|
21
35
|
registerMetadataPreview('dashboard', DashboardPreview);
|
|
22
36
|
registerMetadataPreview('report', ReportPreview);
|
|
23
37
|
registerMetadataPreview('app', AppPreview);
|
|
38
|
+
registerMetadataPreview('action', ActionPreview);
|
|
39
|
+
// Data
|
|
24
40
|
registerMetadataPreview('object', ObjectPreview);
|
|
41
|
+
registerMetadataPreview('datasource', DatasourcePreview);
|
|
42
|
+
registerMetadataPreview('validation', ValidationPreview);
|
|
43
|
+
// Analytics (ADR-0021): live cross-object dataset preview.
|
|
44
|
+
registerMetadataPreview('dataset', DatasetPreview);
|
|
45
|
+
// System
|
|
25
46
|
registerMetadataPreview('email_template', EmailTemplatePreview);
|
|
47
|
+
registerMetadataPreview('translation', TranslationPreview);
|
|
48
|
+
// Documentation navigation spine (ADR-0046 §6): ordered groups with
|
|
49
|
+
// derived membership over docs.
|
|
50
|
+
registerMetadataPreview('book', BookPreview);
|
|
51
|
+
// Automation
|
|
52
|
+
// Approval is a flow node (`type: 'approval'`) since ADR-0019 — it renders on
|
|
53
|
+
// the Flow canvas with its `approve` / `reject` branches; no standalone
|
|
54
|
+
// approval-process preview.
|
|
55
|
+
registerMetadataPreview('flow', FlowPreview);
|
|
56
|
+
// ADR-0020: `workflow` retired as a metadata type — record state machines
|
|
57
|
+
// are now a `state_machine` validation rule (rendered by ValidationPreview)
|
|
58
|
+
// and side-effecting automation is a Flow. No standalone workflow preview.
|
|
59
|
+
registerMetadataPreview('job', JobPreview);
|
|
60
|
+
// AI
|
|
61
|
+
registerMetadataPreview('agent', AgentPreview);
|
|
62
|
+
registerMetadataPreview('tool', ToolPreview);
|
|
63
|
+
registerMetadataPreview('skill', SkillPreview);
|
|
64
|
+
// Security & Identity
|
|
65
|
+
// `profile` is a PermissionSet with `isProfile: true` — reuse the same preview.
|
|
66
|
+
registerMetadataPreview('permission', PermissionPreview);
|
|
67
|
+
registerMetadataPreview('profile', PermissionPreview);
|
|
68
|
+
registerMetadataPreview('role', RolePreview);
|
|
26
69
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge between framework metadata `Object.fields` (a record of rich
|
|
3
|
+
* 48-type field definitions) and the lighter `DesignerFieldDefinition[]`
|
|
4
|
+
* shape consumed by `@object-ui/plugin-designer`'s `FieldDesigner`.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists: the designer ships with a curated subset (27 types,
|
|
7
|
+
* no `master_detail`, no `tree`, no `multiselect`, etc.). Letting it
|
|
8
|
+
* own the full draft would silently drop properties on round-trip. So
|
|
9
|
+
* the bridge:
|
|
10
|
+
*
|
|
11
|
+
* - converts the supported subset for editing,
|
|
12
|
+
* - quarantines unknown types into a "preserved" bucket keyed by
|
|
13
|
+
* field name, and
|
|
14
|
+
* - reassembles the full record on commit, putting preserved entries
|
|
15
|
+
* back in their original order/shape so nothing the user can't see
|
|
16
|
+
* is destroyed.
|
|
17
|
+
*/
|
|
18
|
+
import type { DesignerFieldDefinition } from '@object-ui/types';
|
|
19
|
+
interface FrameworkFieldDef {
|
|
20
|
+
type?: string;
|
|
21
|
+
label?: string;
|
|
22
|
+
required?: boolean;
|
|
23
|
+
unique?: boolean;
|
|
24
|
+
readonly?: boolean;
|
|
25
|
+
hidden?: boolean;
|
|
26
|
+
description?: string;
|
|
27
|
+
default?: unknown;
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
options?: Array<{
|
|
30
|
+
label?: string;
|
|
31
|
+
value: string;
|
|
32
|
+
color?: string;
|
|
33
|
+
}>;
|
|
34
|
+
reference?: string;
|
|
35
|
+
formula?: string;
|
|
36
|
+
group?: string;
|
|
37
|
+
[k: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
export interface FieldsBridgeResult {
|
|
40
|
+
/** Editable subset shaped for FieldDesigner. */
|
|
41
|
+
designerFields: DesignerFieldDefinition[];
|
|
42
|
+
/**
|
|
43
|
+
* Preserves the original framework definitions for fields the
|
|
44
|
+
* designer can't edit losslessly. Keyed by field name. Round-tripped
|
|
45
|
+
* verbatim on commit.
|
|
46
|
+
*/
|
|
47
|
+
preserved: Map<string, FrameworkFieldDef>;
|
|
48
|
+
/**
|
|
49
|
+
* Captured input shape (`'record'` or `'array'`) so we commit back
|
|
50
|
+
* in the same shape we received.
|
|
51
|
+
*/
|
|
52
|
+
inputShape: 'record' | 'array';
|
|
53
|
+
/**
|
|
54
|
+
* Ordered list of all field names as they appeared on input; the
|
|
55
|
+
* commit function uses it to preserve user-visible ordering.
|
|
56
|
+
*/
|
|
57
|
+
originalOrder: string[];
|
|
58
|
+
}
|
|
59
|
+
export declare function bridgeFromDraft(fieldsInput: unknown): FieldsBridgeResult;
|
|
60
|
+
/**
|
|
61
|
+
* Reassemble the framework-shape fields record from designer output.
|
|
62
|
+
* Preserved fields are spliced back in their original order. Newly
|
|
63
|
+
* added fields land at the end.
|
|
64
|
+
*/
|
|
65
|
+
export declare function commitToDraft(designerFields: DesignerFieldDefinition[], prev: FieldsBridgeResult): Record<string, FrameworkFieldDef> | FrameworkFieldDef[];
|
|
66
|
+
export {};
|