@object-ui/app-shell 6.2.3 → 7.1.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.
Files changed (486) hide show
  1. package/CHANGELOG.md +1229 -0
  2. package/README.md +292 -0
  3. package/dist/assistant/assistantBus.d.ts +72 -0
  4. package/dist/assistant/assistantBus.js +133 -0
  5. package/dist/chrome/CommandPalette.d.ts +1 -1
  6. package/dist/chrome/CommandPalette.js +26 -22
  7. package/dist/chrome/ConditionalAuthWrapper.d.ts +1 -1
  8. package/dist/chrome/ConsoleToaster.d.ts +1 -1
  9. package/dist/chrome/ConsoleToaster.js +3 -1
  10. package/dist/chrome/ErrorBoundary.d.ts +1 -1
  11. package/dist/chrome/KeyboardShortcutsDialog.d.ts +1 -1
  12. package/dist/chrome/KeyboardShortcutsDialog.js +16 -5
  13. package/dist/chrome/LoadingScreen.d.ts +1 -1
  14. package/dist/chrome/LoadingScreen.js +22 -26
  15. package/dist/chrome/RouteFader.d.ts +1 -1
  16. package/dist/chrome/ThemeProvider.d.ts +1 -1
  17. package/dist/components/ManagedByBadge.d.ts +1 -1
  18. package/dist/console/AppContent.d.ts +1 -1
  19. package/dist/console/AppContent.js +184 -39
  20. package/dist/console/ConsoleShell.d.ts +7 -7
  21. package/dist/console/ConsoleShell.js +32 -3
  22. package/dist/console/ai/AiChatPage.d.ts +88 -1
  23. package/dist/console/ai/AiChatPage.js +747 -66
  24. package/dist/console/ai/ConversationsSidebar.d.ts +26 -1
  25. package/dist/console/ai/ConversationsSidebar.js +149 -34
  26. package/dist/console/ai/LiveCanvas.d.ts +28 -0
  27. package/dist/console/ai/LiveCanvas.js +80 -0
  28. package/dist/console/ai/reconcileTurn.d.ts +8 -0
  29. package/dist/console/ai/reconcileTurn.js +20 -0
  30. package/dist/console/auth/AuthPageLayout.d.ts +1 -1
  31. package/dist/console/auth/ForgotPasswordPage.d.ts +1 -1
  32. package/dist/console/auth/LoginPage.d.ts +1 -1
  33. package/dist/console/auth/RegisterPage.d.ts +1 -1
  34. package/dist/console/auth/RegisterPage.js +23 -3
  35. package/dist/console/cloud-connection/CloudConnectionPanel.d.ts +1 -0
  36. package/dist/console/cloud-connection/CloudConnectionPanel.js +169 -0
  37. package/dist/console/home/AppCard.d.ts +1 -1
  38. package/dist/console/home/AppCard.js +6 -12
  39. package/dist/console/home/HomeAppsStrip.d.ts +8 -0
  40. package/dist/console/home/HomeAppsStrip.js +61 -0
  41. package/dist/console/home/HomeLayout.d.ts +1 -1
  42. package/dist/console/home/HomeLayout.js +3 -1
  43. package/dist/console/home/HomePage.d.ts +1 -2
  44. package/dist/console/home/HomePage.js +149 -21
  45. package/dist/console/home/HomeRail.d.ts +22 -0
  46. package/dist/console/home/HomeRail.js +62 -0
  47. package/dist/console/home/QuickActions.d.ts +1 -1
  48. package/dist/console/home/QuickActions.js +3 -11
  49. package/dist/console/home/RecentApps.d.ts +1 -1
  50. package/dist/console/home/RecentApps.js +2 -2
  51. package/dist/console/home/StarredApps.d.ts +1 -1
  52. package/dist/console/home/StarredApps.js +2 -2
  53. package/dist/console/marketplace/InstalledListWidget.d.ts +1 -0
  54. package/dist/console/marketplace/InstalledListWidget.js +93 -0
  55. package/dist/console/marketplace/MarkdownText.d.ts +1 -1
  56. package/dist/console/marketplace/MarketplaceAccessDenied.d.ts +1 -1
  57. package/dist/console/marketplace/MarketplaceInstalledPage.d.ts +8 -14
  58. package/dist/console/marketplace/MarketplaceInstalledPage.js +14 -66
  59. package/dist/console/marketplace/MarketplacePackagePage.d.ts +1 -1
  60. package/dist/console/marketplace/MarketplacePackagePage.js +249 -8
  61. package/dist/console/marketplace/MarketplacePage.d.ts +1 -1
  62. package/dist/console/marketplace/MarketplacePage.js +60 -3
  63. package/dist/console/marketplace/PackageIcon.d.ts +1 -1
  64. package/dist/console/marketplace/PluginDisclosure.d.ts +14 -0
  65. package/dist/console/marketplace/PluginDisclosure.js +38 -0
  66. package/dist/console/marketplace/marketplaceApi.d.ts +123 -0
  67. package/dist/console/marketplace/marketplaceApi.js +254 -1
  68. package/dist/console/organizations/CreateWorkspaceDialog.d.ts +1 -1
  69. package/dist/console/organizations/OrganizationsLayout.d.ts +1 -1
  70. package/dist/console/organizations/OrganizationsPage.d.ts +1 -1
  71. package/dist/console/organizations/manage/AcceptInvitationPage.d.ts +1 -1
  72. package/dist/console/organizations/manage/InvitationsPage.d.ts +1 -1
  73. package/dist/console/organizations/manage/InviteMemberDialog.d.ts +1 -1
  74. package/dist/console/organizations/manage/MembersPage.d.ts +1 -1
  75. package/dist/console/organizations/manage/OrganizationLayout.d.ts +1 -1
  76. package/dist/console/organizations/manage/SettingsPage.d.ts +1 -1
  77. package/dist/context/CommandPaletteProvider.d.ts +44 -0
  78. package/dist/context/CommandPaletteProvider.js +71 -0
  79. package/dist/context/FavoritesProvider.d.ts +1 -1
  80. package/dist/context/NavigationContext.d.ts +1 -1
  81. package/dist/context/RecentItemsProvider.d.ts +2 -2
  82. package/dist/context/UserStateAdapters.d.ts +1 -1
  83. package/dist/context/index.d.ts +2 -0
  84. package/dist/context/index.js +1 -0
  85. package/dist/hooks/index.d.ts +5 -2
  86. package/dist/hooks/index.js +4 -1
  87. package/dist/hooks/useActionModal.d.ts +53 -0
  88. package/dist/hooks/useActionModal.js +111 -0
  89. package/dist/hooks/useChatConversation.d.ts +137 -4
  90. package/dist/hooks/useChatConversation.js +316 -25
  91. package/dist/hooks/useConsoleActionRuntime.d.ts +70 -0
  92. package/dist/hooks/useConsoleActionRuntime.js +564 -0
  93. package/dist/hooks/useConversationList.js +61 -3
  94. package/dist/hooks/useHomeInbox.d.ts +13 -0
  95. package/dist/hooks/useHomeInbox.js +142 -0
  96. package/dist/hooks/useNavPins.js +17 -23
  97. package/dist/hooks/useNavigationSync.d.ts +33 -0
  98. package/dist/hooks/useNavigationSync.js +98 -12
  99. package/dist/hooks/useReconcileOnError.d.ts +40 -0
  100. package/dist/hooks/useReconcileOnError.js +37 -0
  101. package/dist/hooks/useRecordApprovals.d.ts +18 -19
  102. package/dist/hooks/useRecordApprovals.js +24 -40
  103. package/dist/hooks/useResponsiveSidebar.js +14 -5
  104. package/dist/hooks/useSettleSignal.d.ts +19 -0
  105. package/dist/hooks/useSettleSignal.js +20 -0
  106. package/dist/hooks/useTrackRouteAsRecent.js +35 -0
  107. package/dist/hooks/useUrlOverlay.d.ts +62 -0
  108. package/dist/hooks/useUrlOverlay.js +88 -0
  109. package/dist/index.d.ts +18 -8
  110. package/dist/index.js +17 -5
  111. package/dist/layout/ActivityFeed.d.ts +1 -1
  112. package/dist/layout/AppHeader.d.ts +3 -2
  113. package/dist/layout/AppHeader.js +237 -72
  114. package/dist/layout/AppSidebar.d.ts +2 -1
  115. package/dist/layout/AppSidebar.js +26 -46
  116. package/dist/layout/AppSwitcher.d.ts +2 -1
  117. package/dist/layout/AppSwitcher.js +9 -5
  118. package/dist/layout/AuthPageLayout.d.ts +1 -1
  119. package/dist/layout/ConnectionStatus.d.ts +1 -1
  120. package/dist/layout/ConnectionStatus.js +9 -6
  121. package/dist/layout/ConsoleChatbotFab.d.ts +19 -1
  122. package/dist/layout/ConsoleChatbotFab.js +16 -2
  123. package/dist/layout/ConsoleFloatingChatbot.d.ts +34 -2
  124. package/dist/layout/ConsoleFloatingChatbot.js +391 -41
  125. package/dist/layout/ConsoleLayout.d.ts +1 -1
  126. package/dist/layout/ConsoleLayout.js +27 -11
  127. package/dist/layout/ContextSelectors.d.ts +44 -0
  128. package/dist/layout/ContextSelectors.js +242 -0
  129. package/dist/layout/InboxPopover.d.ts +6 -1
  130. package/dist/layout/InboxPopover.js +25 -6
  131. package/dist/layout/LocaleSwitcher.d.ts +1 -1
  132. package/dist/layout/LocalizedSidebarTrigger.d.ts +2 -0
  133. package/dist/layout/LocalizedSidebarTrigger.js +15 -0
  134. package/dist/layout/MobileViewSwitcherContext.d.ts +1 -1
  135. package/dist/layout/ModeToggle.d.ts +1 -1
  136. package/dist/layout/PageHeader.d.ts +1 -1
  137. package/dist/layout/UnifiedSidebar.d.ts +2 -1
  138. package/dist/layout/UnifiedSidebar.js +116 -15
  139. package/dist/layout/agentPicker.d.ts +56 -0
  140. package/dist/layout/agentPicker.js +40 -0
  141. package/dist/observability/index.d.ts +1 -0
  142. package/dist/observability/index.js +1 -0
  143. package/dist/observability/settleSignal.d.ts +64 -0
  144. package/dist/observability/settleSignal.js +131 -0
  145. package/dist/preview/CommitTimeline.d.ts +15 -0
  146. package/dist/preview/CommitTimeline.js +82 -0
  147. package/dist/preview/DraftChangesPanel.d.ts +19 -0
  148. package/dist/preview/DraftChangesPanel.js +114 -0
  149. package/dist/preview/DraftPreviewBar.d.ts +8 -0
  150. package/dist/preview/DraftPreviewBar.js +86 -0
  151. package/dist/preview/PreviewDraftEmptyState.d.ts +16 -0
  152. package/dist/preview/PreviewDraftEmptyState.js +47 -0
  153. package/dist/preview/PreviewModeContext.d.ts +57 -0
  154. package/dist/preview/PreviewModeContext.js +99 -0
  155. package/dist/preview/UnpublishedAppBar.d.ts +8 -0
  156. package/dist/preview/UnpublishedAppBar.js +83 -0
  157. package/dist/preview/commitHistory.d.ts +28 -0
  158. package/dist/preview/commitHistory.js +48 -0
  159. package/dist/preview/draftStatus.d.ts +20 -0
  160. package/dist/preview/draftStatus.js +27 -0
  161. package/dist/preview/usePublishAllDrafts.d.ts +18 -0
  162. package/dist/preview/usePublishAllDrafts.js +106 -0
  163. package/dist/providers/AdapterProvider.d.ts +1 -1
  164. package/dist/providers/AdapterProvider.js +6 -1
  165. package/dist/providers/ExpressionProvider.d.ts +1 -1
  166. package/dist/providers/MetadataProvider.d.ts +17 -2
  167. package/dist/providers/MetadataProvider.js +192 -12
  168. package/dist/runtime-config.d.ts +46 -2
  169. package/dist/runtime-config.js +39 -2
  170. package/dist/services/builtinComponents.js +68 -59
  171. package/dist/skeletons/SkeletonDashboard.d.ts +1 -1
  172. package/dist/skeletons/SkeletonDetail.d.ts +1 -1
  173. package/dist/skeletons/SkeletonGrid.d.ts +1 -1
  174. package/dist/utils/appRoute.d.ts +21 -0
  175. package/dist/utils/appRoute.js +25 -0
  176. package/dist/utils/deriveRelatedLists.d.ts +54 -0
  177. package/dist/utils/deriveRelatedLists.js +91 -0
  178. package/dist/utils/index.d.ts +4 -0
  179. package/dist/utils/index.js +3 -0
  180. package/dist/utils/managedByEmptyState.d.ts +8 -1
  181. package/dist/utils/managedByEmptyState.js +13 -7
  182. package/dist/utils/preferLocal.d.ts +18 -0
  183. package/dist/utils/preferLocal.js +24 -0
  184. package/dist/views/ActionConfirmDialog.d.ts +1 -1
  185. package/dist/views/ActionConfirmDialog.js +3 -1
  186. package/dist/views/ActionParamDialog.d.ts +6 -1
  187. package/dist/views/ActionParamDialog.js +9 -3
  188. package/dist/views/ActionResultDialog.d.ts +13 -0
  189. package/dist/views/ActionResultDialog.js +134 -0
  190. package/dist/views/ComponentNavView.d.ts +14 -1
  191. package/dist/views/CreateViewDialog.d.ts +1 -1
  192. package/dist/views/DashboardConfigPanel.d.ts +28 -0
  193. package/dist/views/DashboardConfigPanel.js +81 -0
  194. package/dist/views/DashboardView.d.ts +4 -3
  195. package/dist/views/DashboardView.js +38 -239
  196. package/dist/views/FlowRunner.d.ts +31 -0
  197. package/dist/views/FlowRunner.js +121 -0
  198. package/dist/views/InterfaceListPage.d.ts +49 -0
  199. package/dist/views/InterfaceListPage.js +347 -0
  200. package/dist/views/MetadataInspector.d.ts +2 -2
  201. package/dist/views/ObjectView.d.ts +1 -1
  202. package/dist/views/ObjectView.js +209 -532
  203. package/dist/views/PageView.d.ts +8 -3
  204. package/dist/views/PageView.js +45 -32
  205. package/dist/views/RecordDetailView.d.ts +1 -1
  206. package/dist/views/RecordDetailView.js +363 -148
  207. package/dist/views/RecordFormPage.d.ts +1 -1
  208. package/dist/views/RecordFormPage.js +26 -1
  209. package/dist/views/ReportConfigPanel.d.ts +37 -0
  210. package/dist/views/ReportConfigPanel.js +85 -0
  211. package/dist/views/ReportView.d.ts +1 -1
  212. package/dist/views/ReportView.js +116 -7
  213. package/dist/views/RuntimeDraftBar.d.ts +30 -0
  214. package/dist/views/RuntimeDraftBar.js +112 -0
  215. package/dist/views/ScreenView.d.ts +70 -0
  216. package/dist/views/ScreenView.js +73 -0
  217. package/dist/views/SearchResultsPage.d.ts +1 -1
  218. package/dist/views/SearchResultsPage.js +8 -18
  219. package/dist/views/ViewConfigPanel.d.ts +24 -17
  220. package/dist/views/ViewConfigPanel.js +121 -77
  221. package/dist/views/index.d.ts +1 -1
  222. package/dist/views/index.js +1 -1
  223. package/dist/views/metadata-admin/AuditPanel.d.ts +28 -0
  224. package/dist/views/metadata-admin/AuditPanel.js +79 -0
  225. package/dist/views/metadata-admin/DiagnosticsPage.d.ts +20 -0
  226. package/dist/views/metadata-admin/DiagnosticsPage.js +69 -0
  227. package/dist/views/metadata-admin/DirectoryPage.d.ts +16 -1
  228. package/dist/views/metadata-admin/DirectoryPage.js +101 -24
  229. package/dist/views/metadata-admin/DraftReviewPanel.d.ts +33 -0
  230. package/dist/views/metadata-admin/DraftReviewPanel.js +77 -0
  231. package/dist/views/metadata-admin/EmbeddedItemEditor.d.ts +17 -1
  232. package/dist/views/metadata-admin/EmbeddedItemEditor.js +15 -8
  233. package/dist/views/metadata-admin/JsonSourceEditor.d.ts +39 -0
  234. package/dist/views/metadata-admin/JsonSourceEditor.js +196 -0
  235. package/dist/views/metadata-admin/LayeredDiff.d.ts +39 -1
  236. package/dist/views/metadata-admin/LayeredDiff.js +171 -5
  237. package/dist/views/metadata-admin/MetadataDetailDrawer.d.ts +15 -1
  238. package/dist/views/metadata-admin/MetadataTypeActions.d.ts +48 -0
  239. package/dist/views/metadata-admin/MetadataTypeActions.js +165 -0
  240. package/dist/views/metadata-admin/PackagesPage.d.ts +18 -0
  241. package/dist/views/metadata-admin/PackagesPage.js +403 -0
  242. package/dist/views/metadata-admin/PageShell.d.ts +1 -1
  243. package/dist/views/metadata-admin/PageShell.js +9 -4
  244. package/dist/views/metadata-admin/PermissionMatrixEditor.d.ts +35 -1
  245. package/dist/views/metadata-admin/QuickFind.d.ts +21 -1
  246. package/dist/views/metadata-admin/QuickFind.js +6 -3
  247. package/dist/views/metadata-admin/RelatedPanel.d.ts +24 -1
  248. package/dist/views/metadata-admin/RelatedPanel.js +20 -18
  249. package/dist/views/metadata-admin/ResourceEditPage.d.ts +40 -1
  250. package/dist/views/metadata-admin/ResourceEditPage.js +1250 -60
  251. package/dist/views/metadata-admin/ResourceHistoryPage.d.ts +39 -1
  252. package/dist/views/metadata-admin/ResourceHistoryPage.js +66 -16
  253. package/dist/views/metadata-admin/ResourceListPage.d.ts +13 -1
  254. package/dist/views/metadata-admin/ResourceListPage.js +258 -30
  255. package/dist/views/metadata-admin/ResourceRouter.d.ts +23 -1
  256. package/dist/views/metadata-admin/SchemaForm.d.ts +34 -1
  257. package/dist/views/metadata-admin/SchemaForm.js +559 -49
  258. package/dist/views/metadata-admin/StudioHomePage.d.ts +22 -0
  259. package/dist/views/metadata-admin/StudioHomePage.js +205 -0
  260. package/dist/views/metadata-admin/anchors.js +255 -24
  261. package/dist/views/metadata-admin/clientValidation.d.ts +50 -0
  262. package/dist/views/metadata-admin/clientValidation.js +169 -0
  263. package/dist/views/metadata-admin/color-variant-field.d.ts +30 -0
  264. package/dist/views/metadata-admin/color-variant-field.js +38 -0
  265. package/dist/views/metadata-admin/createDerive.d.ts +75 -0
  266. package/dist/views/metadata-admin/createDerive.js +179 -0
  267. package/dist/views/metadata-admin/dashboard-schema.d.ts +12 -0
  268. package/dist/views/metadata-admin/dashboard-schema.js +80 -0
  269. package/dist/views/metadata-admin/datasource/DatasourceResourcePage.d.ts +35 -0
  270. package/dist/views/metadata-admin/datasource/DatasourceResourcePage.js +327 -0
  271. package/dist/views/metadata-admin/datasource/register.d.ts +1 -0
  272. package/dist/views/metadata-admin/datasource/register.js +24 -0
  273. package/dist/views/metadata-admin/default-inspector-registry.d.ts +49 -0
  274. package/dist/views/metadata-admin/default-inspector-registry.js +8 -0
  275. package/dist/views/metadata-admin/default-schemas.js +115 -10
  276. package/dist/views/metadata-admin/external/ExternalDatasourcePanel.d.ts +27 -0
  277. package/dist/views/metadata-admin/external/ExternalDatasourcePanel.js +69 -0
  278. package/dist/views/metadata-admin/external/ImportObjectDialog.d.ts +27 -0
  279. package/dist/views/metadata-admin/external/ImportObjectDialog.js +77 -0
  280. package/dist/views/metadata-admin/external/SchemaBrowser.d.ts +16 -0
  281. package/dist/views/metadata-admin/external/SchemaBrowser.js +74 -0
  282. package/dist/views/metadata-admin/external/ValidationPanel.d.ts +16 -0
  283. package/dist/views/metadata-admin/external/ValidationPanel.js +68 -0
  284. package/dist/views/metadata-admin/external/api.d.ts +100 -0
  285. package/dist/views/metadata-admin/external/api.js +124 -0
  286. package/dist/views/metadata-admin/i18n.d.ts +1 -0
  287. package/dist/views/metadata-admin/i18n.js +1252 -2
  288. package/dist/views/metadata-admin/index.d.ts +8 -5
  289. package/dist/views/metadata-admin/index.js +12 -2
  290. package/dist/views/metadata-admin/inspector-registry.d.ts +51 -0
  291. package/dist/views/metadata-admin/inspector-registry.js +11 -0
  292. package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.d.ts +30 -0
  293. package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.js +180 -0
  294. package/dist/views/metadata-admin/inspectors/AppNavInspector.d.ts +16 -0
  295. package/dist/views/metadata-admin/inspectors/AppNavInspector.js +110 -0
  296. package/dist/views/metadata-admin/inspectors/ConditionBuilder.d.ts +29 -0
  297. package/dist/views/metadata-admin/inspectors/ConditionBuilder.js +154 -0
  298. package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.d.ts +28 -0
  299. package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.js +110 -0
  300. package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.d.ts +18 -0
  301. package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.js +139 -0
  302. package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.d.ts +21 -0
  303. package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.js +221 -0
  304. package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.d.ts +16 -0
  305. package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.js +126 -0
  306. package/dist/views/metadata-admin/inspectors/FlowInspector.d.ts +12 -0
  307. package/dist/views/metadata-admin/inspectors/FlowInspector.js +9 -0
  308. package/dist/views/metadata-admin/inspectors/FlowKeyValueField.d.ts +30 -0
  309. package/dist/views/metadata-admin/inspectors/FlowKeyValueField.js +125 -0
  310. package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.d.ts +18 -0
  311. package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.js +40 -0
  312. package/dist/views/metadata-admin/inspectors/FlowNodeInspector.d.ts +14 -0
  313. package/dist/views/metadata-admin/inspectors/FlowNodeInspector.js +205 -0
  314. package/dist/views/metadata-admin/inspectors/FlowObjectListField.d.ts +26 -0
  315. package/dist/views/metadata-admin/inspectors/FlowObjectListField.js +105 -0
  316. package/dist/views/metadata-admin/inspectors/FlowReferenceField.d.ts +83 -0
  317. package/dist/views/metadata-admin/inspectors/FlowReferenceField.js +181 -0
  318. package/dist/views/metadata-admin/inspectors/FlowStringListField.d.ts +21 -0
  319. package/dist/views/metadata-admin/inspectors/FlowStringListField.js +60 -0
  320. package/dist/views/metadata-admin/inspectors/InspectorComboField.d.ts +40 -0
  321. package/dist/views/metadata-admin/inspectors/InspectorComboField.js +61 -0
  322. package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.d.ts +21 -0
  323. package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.js +55 -0
  324. package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.d.ts +23 -0
  325. package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.js +365 -0
  326. package/dist/views/metadata-admin/inspectors/PageBlockInspector.d.ts +48 -0
  327. package/dist/views/metadata-admin/inspectors/PageBlockInspector.js +332 -0
  328. package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.d.ts +58 -0
  329. package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.js +218 -0
  330. package/dist/views/metadata-admin/inspectors/ViewColumnInspector.d.ts +19 -0
  331. package/dist/views/metadata-admin/inspectors/ViewColumnInspector.js +144 -0
  332. package/dist/views/metadata-admin/inspectors/ViewInspector.d.ts +19 -0
  333. package/dist/views/metadata-admin/inspectors/ViewInspector.js +21 -0
  334. package/dist/views/metadata-admin/inspectors/ViewVariantInspector.d.ts +54 -0
  335. package/dist/views/metadata-admin/inspectors/ViewVariantInspector.js +191 -0
  336. package/dist/views/metadata-admin/inspectors/_shared.d.ts +128 -0
  337. package/dist/views/metadata-admin/inspectors/_shared.js +113 -0
  338. package/dist/views/metadata-admin/inspectors/datasetFilterCondition.d.ts +24 -0
  339. package/dist/views/metadata-admin/inspectors/datasetFilterCondition.js +97 -0
  340. package/dist/views/metadata-admin/inspectors/expression-validate.d.ts +26 -0
  341. package/dist/views/metadata-admin/inspectors/expression-validate.js +66 -0
  342. package/dist/views/metadata-admin/inspectors/flow-node-config.d.ts +143 -0
  343. package/dist/views/metadata-admin/inspectors/flow-node-config.js +506 -0
  344. package/dist/views/metadata-admin/inspectors/index.d.ts +1 -0
  345. package/dist/views/metadata-admin/inspectors/index.js +45 -0
  346. package/dist/views/metadata-admin/inspectors/json-schema-to-fields.d.ts +40 -0
  347. package/dist/views/metadata-admin/inspectors/json-schema-to-fields.js +227 -0
  348. package/dist/views/metadata-admin/inspectors/useDatasetFields.d.ts +72 -0
  349. package/dist/views/metadata-admin/inspectors/useDatasetFields.js +0 -0
  350. package/dist/views/metadata-admin/issuePath.d.ts +22 -0
  351. package/dist/views/metadata-admin/issuePath.js +65 -0
  352. package/dist/views/metadata-admin/mergeServerFields.d.ts +65 -0
  353. package/dist/views/metadata-admin/mergeServerFields.js +56 -0
  354. package/dist/views/metadata-admin/package-scope.d.ts +26 -0
  355. package/dist/views/metadata-admin/package-scope.js +43 -0
  356. package/dist/views/metadata-admin/preview-registry.d.ts +55 -0
  357. package/dist/views/metadata-admin/previews/ActionPreview.d.ts +25 -0
  358. package/dist/views/metadata-admin/previews/ActionPreview.js +238 -0
  359. package/dist/views/metadata-admin/previews/AddWidgetPicker.d.ts +12 -0
  360. package/dist/views/metadata-admin/previews/AddWidgetPicker.js +56 -0
  361. package/dist/views/metadata-admin/previews/AgentPreview.d.ts +24 -0
  362. package/dist/views/metadata-admin/previews/AgentPreview.js +100 -0
  363. package/dist/views/metadata-admin/previews/AppNavCanvas.d.ts +31 -0
  364. package/dist/views/metadata-admin/previews/AppNavCanvas.js +260 -0
  365. package/dist/views/metadata-admin/previews/AppPreview.d.ts +16 -1
  366. package/dist/views/metadata-admin/previews/AppPreview.js +23 -14
  367. package/dist/views/metadata-admin/previews/BookPreview.d.ts +20 -0
  368. package/dist/views/metadata-admin/previews/BookPreview.js +132 -0
  369. package/dist/views/metadata-admin/previews/DashboardPreview.d.ts +16 -1
  370. package/dist/views/metadata-admin/previews/DashboardPreview.js +110 -8
  371. package/dist/views/metadata-admin/previews/DatasetPreview.d.ts +18 -0
  372. package/dist/views/metadata-admin/previews/DatasetPreview.js +105 -0
  373. package/dist/views/metadata-admin/previews/DatasourcePreview.d.ts +23 -0
  374. package/dist/views/metadata-admin/previews/DatasourcePreview.js +68 -0
  375. package/dist/views/metadata-admin/previews/EmailTemplatePreview.d.ts +14 -1
  376. package/dist/views/metadata-admin/previews/FieldStub.d.ts +30 -0
  377. package/dist/views/metadata-admin/previews/FieldStub.js +104 -0
  378. package/dist/views/metadata-admin/previews/FieldsListEditor.d.ts +50 -0
  379. package/dist/views/metadata-admin/previews/FieldsListEditor.js +97 -0
  380. package/dist/views/metadata-admin/previews/FlowCanvas.d.ts +49 -0
  381. package/dist/views/metadata-admin/previews/FlowCanvas.js +416 -0
  382. package/dist/views/metadata-admin/previews/FlowPreview.d.ts +20 -0
  383. package/dist/views/metadata-admin/previews/FlowPreview.js +120 -0
  384. package/dist/views/metadata-admin/previews/FlowRunsPanel.d.ts +46 -0
  385. package/dist/views/metadata-admin/previews/FlowRunsPanel.js +97 -0
  386. package/dist/views/metadata-admin/previews/FlowSimulatorPanel.d.ts +25 -0
  387. package/dist/views/metadata-admin/previews/FlowSimulatorPanel.js +204 -0
  388. package/dist/views/metadata-admin/previews/JobPreview.d.ts +28 -0
  389. package/dist/views/metadata-admin/previews/JobPreview.js +290 -0
  390. package/dist/views/metadata-admin/previews/ObjectFormCanvas.d.ts +30 -0
  391. package/dist/views/metadata-admin/previews/ObjectFormCanvas.js +547 -0
  392. package/dist/views/metadata-admin/previews/ObjectPreview.d.ts +14 -1
  393. package/dist/views/metadata-admin/previews/ObjectPreview.js +5 -30
  394. package/dist/views/metadata-admin/previews/OutlineStrip.d.ts +32 -0
  395. package/dist/views/metadata-admin/previews/OutlineStrip.js +8 -0
  396. package/dist/views/metadata-admin/previews/PageBlockCanvas.d.ts +49 -0
  397. package/dist/views/metadata-admin/previews/PageBlockCanvas.js +510 -0
  398. package/dist/views/metadata-admin/previews/PagePreview.d.ts +10 -1
  399. package/dist/views/metadata-admin/previews/PagePreview.js +200 -5
  400. package/dist/views/metadata-admin/previews/PermissionPreview.d.ts +27 -0
  401. package/dist/views/metadata-admin/previews/PermissionPreview.js +115 -0
  402. package/dist/views/metadata-admin/previews/PreviewShell.d.ts +29 -6
  403. package/dist/views/metadata-admin/previews/PreviewShell.js +16 -3
  404. package/dist/views/metadata-admin/previews/ReportPreview.d.ts +18 -1
  405. package/dist/views/metadata-admin/previews/ReportPreview.js +23 -15
  406. package/dist/views/metadata-admin/previews/RolePreview.d.ts +19 -0
  407. package/dist/views/metadata-admin/previews/RolePreview.js +14 -0
  408. package/dist/views/metadata-admin/previews/ScreenPreview.d.ts +38 -0
  409. package/dist/views/metadata-admin/previews/ScreenPreview.js +61 -0
  410. package/dist/views/metadata-admin/previews/SkillPreview.d.ts +22 -0
  411. package/dist/views/metadata-admin/previews/SkillPreview.js +34 -0
  412. package/dist/views/metadata-admin/previews/ToolPreview.d.ts +25 -0
  413. package/dist/views/metadata-admin/previews/ToolPreview.js +122 -0
  414. package/dist/views/metadata-admin/previews/TranslationPreview.d.ts +25 -0
  415. package/dist/views/metadata-admin/previews/TranslationPreview.js +52 -0
  416. package/dist/views/metadata-admin/previews/ValidationPreview.d.ts +27 -0
  417. package/dist/views/metadata-admin/previews/ValidationPreview.js +110 -0
  418. package/dist/views/metadata-admin/previews/ViewColumnPanes.d.ts +62 -0
  419. package/dist/views/metadata-admin/previews/ViewColumnPanes.js +140 -0
  420. package/dist/views/metadata-admin/previews/ViewPreview.d.ts +23 -1
  421. package/dist/views/metadata-admin/previews/ViewPreview.js +101 -73
  422. package/dist/views/metadata-admin/previews/block-config.d.ts +82 -0
  423. package/dist/views/metadata-admin/previews/block-config.js +324 -0
  424. package/dist/views/metadata-admin/previews/block-types.d.ts +40 -0
  425. package/dist/views/metadata-admin/previews/block-types.js +110 -0
  426. package/dist/views/metadata-admin/previews/field-types.d.ts +53 -0
  427. package/dist/views/metadata-admin/previews/field-types.js +97 -0
  428. package/dist/views/metadata-admin/previews/flow-canvas-layout.d.ts +102 -0
  429. package/dist/views/metadata-admin/previews/flow-canvas-layout.js +227 -0
  430. package/dist/views/metadata-admin/previews/flow-canvas-parts.d.ts +96 -0
  431. package/dist/views/metadata-admin/previews/flow-canvas-parts.js +373 -0
  432. package/dist/views/metadata-admin/previews/form-preview.d.ts +24 -0
  433. package/dist/views/metadata-admin/previews/form-preview.js +29 -0
  434. package/dist/views/metadata-admin/previews/index.js +43 -0
  435. package/dist/views/metadata-admin/previews/object-fields-bridge.d.ts +66 -0
  436. package/dist/views/metadata-admin/previews/object-fields-bridge.js +171 -0
  437. package/dist/views/metadata-admin/previews/object-fields-io.d.ts +130 -0
  438. package/dist/views/metadata-admin/previews/object-fields-io.js +243 -0
  439. package/dist/views/metadata-admin/previews/screen-spec.d.ts +43 -0
  440. package/dist/views/metadata-admin/previews/screen-spec.js +108 -0
  441. package/dist/views/metadata-admin/previews/simulator/flow-sim-types.d.ts +102 -0
  442. package/dist/views/metadata-admin/previews/simulator/flow-sim-types.js +2 -0
  443. package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.d.ts +15 -0
  444. package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.js +185 -0
  445. package/dist/views/metadata-admin/previews/simulator/flow-simulator.d.ts +73 -0
  446. package/dist/views/metadata-admin/previews/simulator/flow-simulator.js +426 -0
  447. package/dist/views/metadata-admin/previews/useDatasetCatalog.d.ts +47 -0
  448. package/dist/views/metadata-admin/previews/useDatasetCatalog.js +133 -0
  449. package/dist/views/metadata-admin/previews/useFlowNodePalette.d.ts +44 -0
  450. package/dist/views/metadata-admin/previews/useFlowNodePalette.js +124 -0
  451. package/dist/views/metadata-admin/previews/useMetaOptions.d.ts +8 -0
  452. package/dist/views/metadata-admin/previews/useMetaOptions.js +50 -0
  453. package/dist/views/metadata-admin/previews/useObjectFields.d.ts +23 -0
  454. package/dist/views/metadata-admin/previews/useObjectFields.js +79 -0
  455. package/dist/views/metadata-admin/previews/useObjectOptions.d.ts +8 -0
  456. package/dist/views/metadata-admin/previews/useObjectOptions.js +43 -0
  457. package/dist/views/metadata-admin/previews/view-column-io.d.ts +42 -0
  458. package/dist/views/metadata-admin/previews/view-column-io.js +73 -0
  459. package/dist/views/metadata-admin/previews/widget-types.d.ts +24 -0
  460. package/dist/views/metadata-admin/previews/widget-types.js +40 -0
  461. package/dist/views/metadata-admin/registry.d.ts +140 -19
  462. package/dist/views/metadata-admin/report-schema.d.ts +26 -0
  463. package/dist/views/metadata-admin/report-schema.js +121 -0
  464. package/dist/views/metadata-admin/useMetadata.d.ts +100 -2
  465. package/dist/views/metadata-admin/useMetadata.js +155 -4
  466. package/dist/views/metadata-admin/view-item-normalize.d.ts +20 -0
  467. package/dist/views/metadata-admin/view-item-normalize.js +68 -0
  468. package/dist/views/metadata-admin/view-schema.d.ts +16 -0
  469. package/dist/views/metadata-admin/view-schema.js +107 -0
  470. package/dist/views/metadata-admin/view-variant-model.d.ts +23 -0
  471. package/dist/views/metadata-admin/view-variant-model.js +64 -0
  472. package/dist/views/metadata-admin/widgets.d.ts +89 -1
  473. package/dist/views/metadata-admin/widgets.js +491 -17
  474. package/dist/views/runtime-metadata-persistence.d.ts +78 -0
  475. package/dist/views/runtime-metadata-persistence.js +89 -0
  476. package/dist/views/useOpenRecordList.d.ts +18 -0
  477. package/dist/views/useOpenRecordList.js +36 -0
  478. package/dist/views/userFilterUrlState.d.ts +15 -0
  479. package/dist/views/userFilterUrlState.js +53 -0
  480. package/dist/views/view-config-adapter.d.ts +38 -0
  481. package/dist/views/view-config-adapter.js +80 -0
  482. package/package.json +52 -34
  483. package/dist/views/DesignDrawer.d.ts +0 -28
  484. package/dist/views/DesignDrawer.js +0 -51
  485. package/dist/views/metadata-admin/DesignerEditorWrapper.d.ts +0 -68
  486. 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": "6.2.3",
3
+ "version": "7.1.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
- "@sentry/react": "^10.53.1",
29
- "lucide-react": "^1.16.0",
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
- "@object-ui/auth": "6.2.3",
32
- "@object-ui/collaboration": "6.2.3",
33
- "@object-ui/components": "6.2.3",
34
- "@object-ui/plugin-editor": "6.2.3",
35
- "@object-ui/core": "6.2.3",
36
- "@object-ui/data-objectstack": "6.2.3",
37
- "@object-ui/fields": "6.2.3",
38
- "@object-ui/i18n": "6.2.3",
39
- "@object-ui/layout": "6.2.3",
40
- "@object-ui/permissions": "6.2.3",
41
- "@object-ui/providers": "6.2.3",
42
- "@object-ui/react": "6.2.3",
43
- "@object-ui/types": "6.2.3"
35
+ "zod": "^4.4.3",
36
+ "@object-ui/auth": "7.1.0",
37
+ "@object-ui/collaboration": "7.1.0",
38
+ "@object-ui/components": "7.1.0",
39
+ "@object-ui/core": "7.1.0",
40
+ "@object-ui/data-objectstack": "7.1.0",
41
+ "@object-ui/fields": "7.1.0",
42
+ "@object-ui/i18n": "7.1.0",
43
+ "@object-ui/layout": "7.1.0",
44
+ "@object-ui/permissions": "7.1.0",
45
+ "@object-ui/plugin-editor": "7.1.0",
46
+ "@object-ui/providers": "7.1.0",
47
+ "@object-ui/react": "7.1.0",
48
+ "@object-ui/types": "7.1.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": "^6.2.3",
50
- "@object-ui/plugin-charts": "^6.2.3",
51
- "@object-ui/plugin-chatbot": "^6.2.3",
52
- "@object-ui/plugin-dashboard": "^6.2.3",
53
- "@object-ui/plugin-designer": "^6.2.3",
54
- "@object-ui/plugin-detail": "^6.2.3",
55
- "@object-ui/plugin-form": "^6.2.3",
56
- "@object-ui/plugin-grid": "^6.2.3",
57
- "@object-ui/plugin-kanban": "^6.2.3",
58
- "@object-ui/plugin-list": "^6.2.3",
59
- "@object-ui/plugin-report": "^6.2.3",
60
- "@object-ui/plugin-view": "^6.2.3"
54
+ "@object-ui/plugin-calendar": "^7.1.0",
55
+ "@object-ui/plugin-charts": "^7.1.0",
56
+ "@object-ui/plugin-chatbot": "^7.1.0",
57
+ "@object-ui/plugin-dashboard": "^7.1.0",
58
+ "@object-ui/plugin-designer": "^7.1.0",
59
+ "@object-ui/plugin-detail": "^7.1.0",
60
+ "@object-ui/plugin-form": "^7.1.0",
61
+ "@object-ui/plugin-grid": "^7.1.0",
62
+ "@object-ui/plugin-kanban": "^7.1.0",
63
+ "@object-ui/plugin-list": "^7.1.0",
64
+ "@object-ui/plugin-report": "^7.1.0",
65
+ "@object-ui/plugin-view": "^7.1.0"
61
66
  },
62
67
  "devDependencies": {
63
- "@types/node": "^25.9.1",
64
- "@types/react": "19.2.15",
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.6",
67
- "react-dom": "19.2.6",
68
- "react-router-dom": "^7.15.0",
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.14"
77
+ "vite": "^8.0.16",
78
+ "@object-ui/plugin-calendar": "7.1.0",
79
+ "@object-ui/plugin-charts": "7.1.0",
80
+ "@object-ui/plugin-chatbot": "7.1.0",
81
+ "@object-ui/plugin-dashboard": "7.1.0",
82
+ "@object-ui/plugin-designer": "7.1.0",
83
+ "@object-ui/plugin-detail": "7.1.0",
84
+ "@object-ui/plugin-form": "7.1.0",
85
+ "@object-ui/plugin-grid": "7.1.0",
86
+ "@object-ui/plugin-kanban": "7.1.0",
87
+ "@object-ui/plugin-list": "7.1.0",
88
+ "@object-ui/plugin-report": "7.1.0",
89
+ "@object-ui/plugin-view": "7.1.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
- }