@vertesia/ui 1.5.0-dev.20260807.073259Z → 1.5.0-dev.20260826.064249Z
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -7
- package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js +1 -1
- package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
- package/lib/core/components/shadcn/filters/filter/dateFilter.d.ts.map +1 -1
- package/lib/core/components/shadcn/filters/filter/dateFilter.js +1 -1
- package/lib/core/components/shadcn/filters/filter/dateFilter.js.map +1 -1
- package/lib/core/components/shadcn/filters/filters.d.ts.map +1 -1
- package/lib/core/components/shadcn/filters/filters.js +1 -1
- package/lib/core/components/shadcn/filters/filters.js.map +1 -1
- package/lib/core/components/shadcn/index.d.ts +1 -0
- package/lib/core/components/shadcn/index.d.ts.map +1 -1
- package/lib/core/components/shadcn/index.js +1 -0
- package/lib/core/components/shadcn/index.js.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.d.ts.map +1 -1
- package/lib/core/components/shadcn/modal/dialog.js +1 -3
- package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
- package/lib/core/components/shadcn/overflowTabs.d.ts +59 -0
- package/lib/core/components/shadcn/overflowTabs.d.ts.map +1 -0
- package/lib/core/components/shadcn/overflowTabs.js +173 -0
- package/lib/core/components/shadcn/overflowTabs.js.map +1 -0
- package/lib/core/components/shadcn/selectBox.js +2 -2
- package/lib/core/components/shadcn/selectBox.js.map +1 -1
- package/lib/core/components/shadcn/theme/ThemeProvider.d.ts +3 -1
- package/lib/core/components/shadcn/theme/ThemeProvider.d.ts.map +1 -1
- package/lib/core/components/shadcn/theme/ThemeProvider.js +8 -9
- package/lib/core/components/shadcn/theme/ThemeProvider.js.map +1 -1
- package/lib/core/utils/dayjs.d.ts +12 -0
- package/lib/core/utils/dayjs.d.ts.map +1 -0
- package/lib/core/utils/dayjs.js +16 -0
- package/lib/core/utils/dayjs.js.map +1 -0
- package/lib/env/index.d.ts +17 -0
- package/lib/env/index.d.ts.map +1 -1
- package/lib/env/index.js +18 -1
- package/lib/env/index.js.map +1 -1
- package/lib/features/agent/PayloadBuilder.d.ts +1 -0
- package/lib/features/agent/PayloadBuilder.d.ts.map +1 -1
- package/lib/features/agent/PayloadBuilder.js +22 -5
- package/lib/features/agent/PayloadBuilder.js.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.js +3 -135
- package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
- package/lib/features/agent/chat/ArtifactsTab.d.ts.map +1 -1
- package/lib/features/agent/chat/ArtifactsTab.js +1 -1
- package/lib/features/agent/chat/ArtifactsTab.js.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.js +19 -4
- package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.d.ts +6 -0
- package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.js +99 -29
- package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.js +10 -9
- package/lib/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +5 -8
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js +45 -4
- package/lib/features/agent/chat/ModernAgentOutput/AttachmentPreview.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/Header.js +3 -3
- package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +9 -121
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts +6 -0
- package/lib/features/agent/chat/ModernAgentOutput/utils.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/utils.js +19 -11
- package/lib/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
- package/lib/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
- package/lib/features/agent/chat/VegaLiteChart.js +11 -3
- package/lib/features/agent/chat/VegaLiteChart.js.map +1 -1
- package/lib/features/agent/chat/hooks/useAgentStream.d.ts.map +1 -1
- package/lib/features/agent/chat/hooks/useAgentStream.js +3 -0
- package/lib/features/agent/chat/hooks/useAgentStream.js.map +1 -1
- package/lib/features/document-viewer/UniversalDocumentViewer.d.ts.map +1 -1
- package/lib/features/document-viewer/UniversalDocumentViewer.js +1 -1
- package/lib/features/document-viewer/UniversalDocumentViewer.js.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.d.ts +14 -2
- package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.js +20 -2
- package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
- package/lib/features/facets/CollectionsFacetsNav.d.ts +3 -3
- package/lib/features/facets/CollectionsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/CollectionsFacetsNav.js +6 -1
- package/lib/features/facets/CollectionsFacetsNav.js.map +1 -1
- package/lib/features/facets/DocumentsFacetsNav.d.ts +3 -3
- package/lib/features/facets/DocumentsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/DocumentsFacetsNav.js +20 -8
- package/lib/features/facets/DocumentsFacetsNav.js.map +1 -1
- package/lib/features/facets/InteractionsFacetsNav.d.ts +3 -3
- package/lib/features/facets/InteractionsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/InteractionsFacetsNav.js +11 -1
- package/lib/features/facets/InteractionsFacetsNav.js.map +1 -1
- package/lib/features/facets/PromptsFacetsNav.d.ts +3 -3
- package/lib/features/facets/PromptsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/PromptsFacetsNav.js +6 -1
- package/lib/features/facets/PromptsFacetsNav.js.map +1 -1
- package/lib/features/facets/RunsFacetsNav.d.ts +4 -14
- package/lib/features/facets/RunsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/RunsFacetsNav.js +26 -15
- package/lib/features/facets/RunsFacetsNav.js.map +1 -1
- package/lib/features/facets/WorkflowExecutionsFacetsNav.d.ts +4 -3
- package/lib/features/facets/WorkflowExecutionsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/WorkflowExecutionsFacetsNav.js +18 -10
- package/lib/features/facets/WorkflowExecutionsFacetsNav.js.map +1 -1
- package/lib/features/facets/index.d.ts +1 -1
- package/lib/features/facets/index.d.ts.map +1 -1
- package/lib/features/facets/index.js.map +1 -1
- package/lib/features/facets/utils/SearchInterface.d.ts +4 -3
- package/lib/features/facets/utils/SearchInterface.d.ts.map +1 -1
- package/lib/features/facets/utils/SearchInterface.js +4 -0
- package/lib/features/facets/utils/SearchInterface.js.map +1 -1
- package/lib/features/layout/GenericPageNavHeader.d.ts +8 -1
- package/lib/features/layout/GenericPageNavHeader.d.ts.map +1 -1
- package/lib/features/layout/GenericPageNavHeader.js +9 -1
- package/lib/features/layout/GenericPageNavHeader.js.map +1 -1
- package/lib/features/magic-pdf/DownloadPopover.d.ts +3 -2
- package/lib/features/magic-pdf/DownloadPopover.d.ts.map +1 -1
- package/lib/features/magic-pdf/DownloadPopover.js.map +1 -1
- package/lib/features/magic-pdf/GroundedExtractionView.d.ts.map +1 -1
- package/lib/features/magic-pdf/GroundedExtractionView.js +51 -64
- package/lib/features/magic-pdf/GroundedExtractionView.js.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.d.ts +1 -1
- package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -1
- package/lib/features/oauth/McpConnectionsButton.js +2 -2
- package/lib/features/oauth/McpConnectionsButton.js.map +1 -1
- package/lib/features/oauth/McpConnectionsDialog.d.ts +1 -1
- package/lib/features/oauth/McpConnectionsDialog.js +2 -2
- package/lib/features/oauth/McpConnectionsDialog.js.map +1 -1
- package/lib/features/oauth/useMcpConnections.d.ts +4 -5
- package/lib/features/oauth/useMcpConnections.d.ts.map +1 -1
- package/lib/features/oauth/useMcpConnections.js +20 -4
- package/lib/features/oauth/useMcpConnections.js.map +1 -1
- package/lib/features/pdf-viewer/PdfPageRenderer.d.ts.map +1 -1
- package/lib/features/pdf-viewer/PdfPageRenderer.js +9 -11
- package/lib/features/pdf-viewer/PdfPageRenderer.js.map +1 -1
- package/lib/features/pdf-viewer/lazyReactPdf.d.ts +10 -0
- package/lib/features/pdf-viewer/lazyReactPdf.d.ts.map +1 -0
- package/lib/features/pdf-viewer/lazyReactPdf.js +25 -0
- package/lib/features/pdf-viewer/lazyReactPdf.js.map +1 -0
- package/lib/features/store/collections/CollectionsTable.d.ts.map +1 -1
- package/lib/features/store/collections/CollectionsTable.js +1 -3
- package/lib/features/store/collections/CollectionsTable.js.map +1 -1
- package/lib/features/store/collections/EditCollectionView.js +1 -1
- package/lib/features/store/collections/EditCollectionView.js.map +1 -1
- package/lib/features/store/objects/ExportPropertiesModal.d.ts +3 -1
- package/lib/features/store/objects/ExportPropertiesModal.d.ts.map +1 -1
- package/lib/features/store/objects/ExportPropertiesModal.js +5 -5
- package/lib/features/store/objects/ExportPropertiesModal.js.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.d.ts.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.js +4 -10
- package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/features/store/objects/components/TextEditorPanel.d.ts.map +1 -1
- package/lib/features/store/objects/components/TextEditorPanel.js +8 -3
- package/lib/features/store/objects/components/TextEditorPanel.js.map +1 -1
- package/lib/features/store/objects/layout/renderers.d.ts.map +1 -1
- package/lib/features/store/objects/layout/renderers.js +1 -5
- package/lib/features/store/objects/layout/renderers.js.map +1 -1
- package/lib/features/store/objects/search/DocumentSearchContext.d.ts +29 -62
- package/lib/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
- package/lib/features/store/objects/search/DocumentSearchContext.js +2 -0
- package/lib/features/store/objects/search/DocumentSearchContext.js.map +1 -1
- package/lib/features/store/objects/upload/DocumentUploadModal.d.ts +6 -1
- package/lib/features/store/objects/upload/DocumentUploadModal.d.ts.map +1 -1
- package/lib/features/store/objects/upload/DocumentUploadModal.js +4 -3
- package/lib/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
- package/lib/features/store/objects/upload/useSmartFileUploadProcessing.d.ts.map +1 -1
- package/lib/features/store/objects/upload/useSmartFileUploadProcessing.js +2 -2
- package/lib/features/store/objects/upload/useSmartFileUploadProcessing.js.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.js +1 -3
- package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
- package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -1
- package/lib/features/store/types/IntakePolicyEditor.js +11 -1
- package/lib/features/store/types/IntakePolicyEditor.js.map +1 -1
- package/lib/features/store/types/ObjectSchemaEditor.d.ts.map +1 -1
- package/lib/features/store/types/ObjectSchemaEditor.js +6 -2
- package/lib/features/store/types/ObjectSchemaEditor.js.map +1 -1
- package/lib/features/store/types/TableLayoutEditor.d.ts.map +1 -1
- package/lib/features/store/types/TableLayoutEditor.js +2 -0
- package/lib/features/store/types/TableLayoutEditor.js.map +1 -1
- package/lib/features/store/types/TypeRegistry.d.ts +272 -0
- package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
- package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +271 -0
- package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts.map +1 -1
- package/lib/features/user/UserInfo.d.ts.map +1 -1
- package/lib/features/user/UserInfo.js +2 -4
- package/lib/features/user/UserInfo.js.map +1 -1
- package/lib/features/views/ViewActions.d.ts +32 -0
- package/lib/features/views/ViewActions.d.ts.map +1 -0
- package/lib/features/views/ViewActions.js +186 -0
- package/lib/features/views/ViewActions.js.map +1 -0
- package/lib/features/views/ViewDropTarget.d.ts +15 -0
- package/lib/features/views/ViewDropTarget.d.ts.map +1 -0
- package/lib/features/views/ViewDropTarget.js +79 -0
- package/lib/features/views/ViewDropTarget.js.map +1 -0
- package/lib/features/views/ViewExperience.d.ts +3 -2
- package/lib/features/views/ViewExperience.d.ts.map +1 -1
- package/lib/features/views/ViewExperience.js +103 -12
- package/lib/features/views/ViewExperience.js.map +1 -1
- package/lib/features/views/ViewNavigation.d.ts +1 -1
- package/lib/features/views/ViewNavigation.d.ts.map +1 -1
- package/lib/features/views/ViewNavigation.js +14 -5
- package/lib/features/views/ViewNavigation.js.map +1 -1
- package/lib/features/views/ViewResults.d.ts +1 -1
- package/lib/features/views/ViewResults.d.ts.map +1 -1
- package/lib/features/views/ViewResults.js +124 -34
- package/lib/features/views/ViewResults.js.map +1 -1
- package/lib/features/views/index.d.ts +1 -0
- package/lib/features/views/index.d.ts.map +1 -1
- package/lib/features/views/index.js +1 -0
- package/lib/features/views/index.js.map +1 -1
- package/lib/features/views/types.d.ts +46 -1
- package/lib/features/views/types.d.ts.map +1 -1
- package/lib/features/views/viewState.d.ts.map +1 -1
- package/lib/features/views/viewState.js +34 -0
- package/lib/features/views/viewState.js.map +1 -1
- package/lib/i18n/LanguageProvider.d.ts +3 -1
- package/lib/i18n/LanguageProvider.d.ts.map +1 -1
- package/lib/i18n/LanguageProvider.js +9 -7
- package/lib/i18n/LanguageProvider.js.map +1 -1
- package/lib/i18n/instance.d.ts +2 -0
- package/lib/i18n/instance.d.ts.map +1 -1
- package/lib/i18n/instance.js +45 -26
- package/lib/i18n/instance.js.map +1 -1
- package/lib/i18n/locales/ar.json +261 -15
- package/lib/i18n/locales/de.json +259 -13
- package/lib/i18n/locales/en.json +30 -4
- package/lib/i18n/locales/es.json +260 -14
- package/lib/i18n/locales/fr.json +259 -13
- package/lib/i18n/locales/it.json +259 -13
- package/lib/i18n/locales/ja.json +257 -10
- package/lib/i18n/locales/ko.json +257 -10
- package/lib/i18n/locales/pt.json +259 -13
- package/lib/i18n/locales/ru.json +256 -10
- package/lib/i18n/locales/tr.json +256 -10
- package/lib/i18n/locales/zh-TW.json +257 -10
- package/lib/i18n/locales/zh.json +257 -10
- package/lib/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/session/UserSessionProvider.js +8 -16
- package/lib/session/UserSessionProvider.js.map +1 -1
- package/lib/session/auth/composable.d.ts.map +1 -1
- package/lib/session/auth/composable.js +25 -19
- package/lib/session/auth/composable.js.map +1 -1
- package/lib/session/auth/firebase.js +1 -1
- package/lib/session/auth/firebase.js.map +1 -1
- package/lib/shell/VertesiaShell.d.ts.map +1 -1
- package/lib/shell/VertesiaShell.js +2 -1
- package/lib/shell/VertesiaShell.js.map +1 -1
- package/lib/shell/apps/AppInstallationProvider.d.ts +4 -2
- package/lib/shell/apps/AppInstallationProvider.d.ts.map +1 -1
- package/lib/shell/apps/IframeAppContextSync.d.ts +3 -0
- package/lib/shell/apps/IframeAppContextSync.d.ts.map +1 -0
- package/lib/shell/apps/IframeAppContextSync.js +95 -0
- package/lib/shell/apps/IframeAppContextSync.js.map +1 -0
- package/lib/shell/apps/iframe-auth.d.ts +55 -0
- package/lib/shell/apps/iframe-auth.d.ts.map +1 -0
- package/lib/shell/apps/iframe-auth.js +154 -0
- package/lib/shell/apps/iframe-auth.js.map +1 -0
- package/lib/shell/apps/index.d.ts +2 -0
- package/lib/shell/apps/index.d.ts.map +1 -1
- package/lib/shell/apps/index.js +2 -0
- package/lib/shell/apps/index.js.map +1 -1
- package/lib/vertesia-ui-core.js +4 -4
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-env.js +1 -1
- package/lib/vertesia-ui-env.js.map +1 -1
- package/lib/vertesia-ui-features.js +32 -34
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-i18n.js +16 -16
- package/lib/vertesia-ui-i18n.js.map +1 -1
- package/lib/vertesia-ui-rich-text.js +4 -4
- package/lib/vertesia-ui-rich-text.js.map +1 -1
- package/lib/vertesia-ui-router.js +1 -1
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-session.js +1 -1
- package/lib/vertesia-ui-session.js.map +1 -1
- package/lib/vertesia-ui-shell.js +1 -1
- package/lib/vertesia-ui-shell.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +20 -20
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/lib/widgets/markdown/MarkdownRenderer.d.ts.map +1 -1
- package/lib/widgets/markdown/MarkdownRenderer.js +43 -2
- package/lib/widgets/markdown/MarkdownRenderer.js.map +1 -1
- package/lib/widgets/markdown/MermaidDiagram.d.ts.map +1 -1
- package/lib/widgets/markdown/MermaidDiagram.js +35 -22
- package/lib/widgets/markdown/MermaidDiagram.js.map +1 -1
- package/lib/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
- package/lib/widgets/monacoEditor/MonacoEditor.js +14 -10
- package/lib/widgets/monacoEditor/MonacoEditor.js.map +1 -1
- package/lib/widgets/xml-viewer/hooks/useCollapsible.d.ts +1 -1
- package/package.json +24 -29
- package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +1 -1
- package/src/core/components/shadcn/filters/filter/dateFilter.tsx +1 -1
- package/src/core/components/shadcn/filters/filters.tsx +1 -1
- package/src/core/components/shadcn/index.ts +1 -0
- package/src/core/components/shadcn/modal/dialog.test.tsx +35 -0
- package/src/core/components/shadcn/modal/dialog.tsx +0 -4
- package/src/core/components/shadcn/overflowTabs.tsx +320 -0
- package/src/core/components/shadcn/selectBox.tsx +2 -2
- package/src/core/components/shadcn/theme/ThemeProvider.tsx +10 -9
- package/src/core/utils/dayjs.ts +17 -0
- package/src/css/base.css +78 -0
- package/src/env/index.test.ts +94 -0
- package/src/env/index.ts +36 -1
- package/src/features/agent/PayloadBuilder.test.ts +68 -0
- package/src/features/agent/PayloadBuilder.tsx +28 -4
- package/src/features/agent/chat/AgentRightPanel.tsx +2 -252
- package/src/features/agent/chat/ArtifactsTab.tsx +1 -0
- package/src/features/agent/chat/AskUserWidget.test.tsx +20 -1
- package/src/features/agent/chat/AskUserWidget.tsx +22 -6
- package/src/features/agent/chat/ModernAgentConversation.test.tsx +160 -0
- package/src/features/agent/chat/ModernAgentConversation.tsx +111 -31
- package/src/features/agent/chat/ModernAgentOutput/ActiveWorkstreamsSummary.tsx +86 -67
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +90 -7
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +4 -6
- package/src/features/agent/chat/ModernAgentOutput/AttachmentPreview.test.ts +103 -1
- package/src/features/agent/chat/ModernAgentOutput/AttachmentPreview.tsx +50 -4
- package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +1 -1
- package/src/features/agent/chat/ModernAgentOutput/Header.tsx +18 -1
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +1 -1
- package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +1 -1
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +1 -1
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +37 -167
- package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +94 -0
- package/src/features/agent/chat/ModernAgentOutput/utils.ts +19 -10
- package/src/features/agent/chat/VegaLiteChart.tsx +32 -14
- package/src/features/agent/chat/hooks/useAgentStream.test.tsx +18 -0
- package/src/features/agent/chat/hooks/useAgentStream.ts +3 -0
- package/src/features/document-viewer/UniversalDocumentViewer.tsx +1 -1
- package/src/features/facets/AgentRunnerFacetsNav.tsx +44 -4
- package/src/features/facets/CollectionsFacetsNav.tsx +15 -4
- package/src/features/facets/DocumentsFacetsNav.tsx +25 -8
- package/src/features/facets/FacetQueryHandlers.test.ts +84 -0
- package/src/features/facets/InteractionsFacetsNav.tsx +20 -4
- package/src/features/facets/PromptsFacetsNav.tsx +15 -4
- package/src/features/facets/RunsFacetsNav.test.ts +59 -0
- package/src/features/facets/RunsFacetsNav.tsx +40 -30
- package/src/features/facets/WorkflowExecutionsFacetsNav.test.ts +57 -0
- package/src/features/facets/WorkflowExecutionsFacetsNav.tsx +36 -16
- package/src/features/facets/index.ts +1 -0
- package/src/features/facets/utils/SearchInterface.tsx +12 -3
- package/src/features/layout/GenericPageNavHeader.tsx +16 -0
- package/src/features/magic-pdf/DownloadPopover.tsx +1 -2
- package/src/features/magic-pdf/GroundedExtractionView.test.tsx +7 -1
- package/src/features/magic-pdf/GroundedExtractionView.tsx +162 -242
- package/src/features/oauth/McpConnectionsButton.test.tsx +18 -1
- package/src/features/oauth/McpConnectionsButton.tsx +6 -2
- package/src/features/oauth/McpConnectionsDialog.tsx +3 -3
- package/src/features/oauth/useMcpConnections.test.ts +1 -0
- package/src/features/oauth/useMcpConnections.ts +24 -7
- package/src/features/pdf-viewer/PdfPageRenderer.tsx +76 -71
- package/src/features/pdf-viewer/lazyReactPdf.ts +33 -0
- package/src/features/store/collections/CollectionsTable.tsx +1 -4
- package/src/features/store/collections/EditCollectionView.tsx +1 -1
- package/src/features/store/objects/ExportPropertiesModal.tsx +25 -16
- package/src/features/store/objects/components/ContentOverview.tsx +2 -28
- package/src/features/store/objects/components/TextEditorPanel.tsx +13 -3
- package/src/features/store/objects/layout/renderers.tsx +1 -6
- package/src/features/store/objects/search/DocumentSearchContext.ts +4 -2
- package/src/features/store/objects/upload/DocumentUploadModal.tsx +10 -3
- package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +15 -6
- package/src/features/store/types/ContentObjectTypesTable.tsx +1 -4
- package/src/features/store/types/IntakePolicyEditor.tsx +11 -1
- package/src/features/store/types/ObjectSchemaEditor.tsx +6 -2
- package/src/features/store/types/TableLayoutEditor.tsx +2 -0
- package/src/features/user/UserInfo.test.tsx +10 -0
- package/src/features/user/UserInfo.tsx +2 -7
- package/src/features/views/ViewActions.test.tsx +80 -0
- package/src/features/views/ViewActions.tsx +352 -0
- package/src/features/views/ViewDropTarget.test.tsx +150 -0
- package/src/features/views/ViewDropTarget.tsx +140 -0
- package/src/features/views/ViewExperience.test.tsx +72 -0
- package/src/features/views/ViewExperience.tsx +189 -22
- package/src/features/views/ViewMedia.test.tsx +180 -0
- package/src/features/views/ViewNavigation.test.tsx +42 -0
- package/src/features/views/ViewNavigation.tsx +43 -5
- package/src/features/views/ViewResults.tsx +243 -26
- package/src/features/views/index.ts +1 -0
- package/src/features/views/types.ts +50 -0
- package/src/features/views/viewState.test.ts +7 -1
- package/src/features/views/viewState.ts +32 -0
- package/src/i18n/LanguageProvider.tsx +15 -8
- package/src/i18n/instance.test.ts +30 -0
- package/src/i18n/instance.ts +67 -40
- package/src/i18n/locales/ar.json +1157 -911
- package/src/i18n/locales/de.json +1113 -867
- package/src/i18n/locales/en.json +30 -4
- package/src/i18n/locales/es.json +1124 -878
- package/src/i18n/locales/fr.json +1124 -878
- package/src/i18n/locales/it.json +1124 -878
- package/src/i18n/locales/ja.json +1113 -866
- package/src/i18n/locales/ko.json +1113 -866
- package/src/i18n/locales/pt.json +1124 -878
- package/src/i18n/locales/ru.json +1135 -889
- package/src/i18n/locales/tr.json +1113 -867
- package/src/i18n/locales/zh-TW.json +1113 -866
- package/src/i18n/locales/zh.json +1113 -866
- package/src/i18n/rtl.test.ts +16 -7
- package/src/rich-text/VertesiaRichTextEditor.test.tsx +33 -1
- package/src/session/UserSessionProvider.tsx +8 -20
- package/src/session/auth/composable.scope.test.ts +1 -1
- package/src/session/auth/composable.test.ts +61 -1
- package/src/session/auth/composable.ts +29 -23
- package/src/session/auth/firebase.ts +1 -1
- package/src/shell/VertesiaShell.tsx +2 -0
- package/src/shell/apps/IframeAppContextSync.test.tsx +196 -0
- package/src/shell/apps/IframeAppContextSync.tsx +101 -0
- package/src/shell/apps/iframe-auth.test.ts +118 -0
- package/src/shell/apps/iframe-auth.ts +193 -0
- package/src/shell/apps/index.ts +2 -0
- package/src/widgets/markdown/ArtifactEditingSurface.test.tsx +12 -3
- package/src/widgets/markdown/MarkdownRenderer.tsx +50 -2
- package/src/widgets/markdown/MermaidDiagram.tsx +38 -22
- package/src/widgets/monacoEditor/MonacoEditor.tsx +27 -20
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts +0 -25
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.d.ts.map +0 -1
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js +0 -42
- package/lib/features/magic-pdf/GroundedExtractionAssistantPanel.js.map +0 -1
- package/src/features/magic-pdf/GroundedExtractionAssistantPanel.tsx +0 -86
|
@@ -93,7 +93,7 @@ export function McpConnectionsButton({
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
|
-
* Inline MCP status list for forms. It shows all available
|
|
96
|
+
* Inline MCP status list for forms. It shows all available authenticated MCP groups
|
|
97
97
|
* without requiring the user to open the management dialog.
|
|
98
98
|
*/
|
|
99
99
|
export function McpConnectionsInlineList({
|
|
@@ -165,7 +165,7 @@ export function McpConnectionsInlineList({
|
|
|
165
165
|
>
|
|
166
166
|
<Spinner className="size-3" />
|
|
167
167
|
</Button>
|
|
168
|
-
) : (
|
|
168
|
+
) : group.authType === 'oauth' ? (
|
|
169
169
|
<RemoteMcpConnectionButton
|
|
170
170
|
appId={group.appId}
|
|
171
171
|
collectionId={group.representativeId}
|
|
@@ -176,6 +176,10 @@ export function McpConnectionsInlineList({
|
|
|
176
176
|
showDisconnect
|
|
177
177
|
readOnly={readOnly}
|
|
178
178
|
/>
|
|
179
|
+
) : (
|
|
180
|
+
<Badge variant="outline" className="h-6 w-32 justify-center px-2 text-xs">
|
|
181
|
+
{t('mcpConnections.apiKey')}
|
|
182
|
+
</Badge>
|
|
179
183
|
)}
|
|
180
184
|
{onChange && (
|
|
181
185
|
<div className="flex min-w-24 items-center justify-end gap-2 text-xs">
|
|
@@ -25,7 +25,7 @@ export interface McpConnectionsDialogProps {
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Dialog to manage the MCP servers available to an agent conversation.
|
|
28
|
-
*
|
|
28
|
+
* OAuth servers can be connected, and every server can be activated or deactivated for this run.
|
|
29
29
|
*/
|
|
30
30
|
export function McpConnectionsDialog({
|
|
31
31
|
isOpen,
|
|
@@ -102,7 +102,7 @@ export function McpConnectionsDialog({
|
|
|
102
102
|
>
|
|
103
103
|
<Spinner className="size-3" />
|
|
104
104
|
</Button>
|
|
105
|
-
) : (
|
|
105
|
+
) : group.authType === 'oauth' ? (
|
|
106
106
|
<RemoteMcpConnectionButton
|
|
107
107
|
appId={group.appId}
|
|
108
108
|
collectionId={group.representativeId}
|
|
@@ -113,7 +113,7 @@ export function McpConnectionsDialog({
|
|
|
113
113
|
showDisconnect
|
|
114
114
|
readOnly={readOnly}
|
|
115
115
|
/>
|
|
116
|
-
)}
|
|
116
|
+
) : null}
|
|
117
117
|
{onChange && (
|
|
118
118
|
<Switch
|
|
119
119
|
size="sm"
|
|
@@ -8,8 +8,7 @@ import { useUserSession } from '@vertesia/ui/session';
|
|
|
8
8
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* A group of MCP tool collections that share
|
|
12
|
-
* Connection/activation operations act on the whole group.
|
|
11
|
+
* A group of MCP tool collections that share authentication and activation state.
|
|
13
12
|
*/
|
|
14
13
|
export interface McpConnectionGroup {
|
|
15
14
|
key: string;
|
|
@@ -17,18 +16,18 @@ export interface McpConnectionGroup {
|
|
|
17
16
|
appName: string;
|
|
18
17
|
/** Display label: provider display_name, oauth_app name, or individual collection name */
|
|
19
18
|
label: string;
|
|
20
|
-
/** Representative collection ID used for
|
|
19
|
+
/** Representative collection ID used for status and, for OAuth groups, connection operations. */
|
|
21
20
|
representativeId: string;
|
|
22
21
|
/** All collection IDs in this group (used for per-conversation activation toggles) */
|
|
23
22
|
memberIds: string[];
|
|
24
23
|
/** Names of all collections in this group (for tooltip when > 1) */
|
|
25
24
|
memberNames: string[];
|
|
25
|
+
authType: 'oauth' | 'api_key';
|
|
26
26
|
authStatus?: OAuthAuthStatus;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* Loads the project's installed MCP tool collections
|
|
31
|
-
* shared OAuth provider/app, and resolves each group's current connection status.
|
|
30
|
+
* Loads the project's installed authenticated MCP tool collections and resolves their status.
|
|
32
31
|
*
|
|
33
32
|
* Shared by the MCP connections button (badge count) and dialog (list) so the data is
|
|
34
33
|
* fetched once and refreshed together after connect/disconnect.
|
|
@@ -56,9 +55,11 @@ export function useMcpConnections() {
|
|
|
56
55
|
|
|
57
56
|
if (!inst.manifest.tool_collections) continue;
|
|
58
57
|
|
|
59
|
-
const
|
|
58
|
+
const mcpCollections = inst.manifest.tool_collections
|
|
60
59
|
.map((c) => normalizeToolCollection(c))
|
|
61
|
-
.filter((c): c is MCPToolCollectionObject => c.type === 'mcp'
|
|
60
|
+
.filter((c): c is MCPToolCollectionObject => c.type === 'mcp');
|
|
61
|
+
const oauthCollections = mcpCollections.filter((c) => c.auth !== 'api_key' && oauthIds.includes(c.id));
|
|
62
|
+
const apiKeyCollections = mcpCollections.filter((c) => c.auth === 'api_key');
|
|
62
63
|
|
|
63
64
|
const providerMap = new Map<string, MCPToolCollectionObject[]>();
|
|
64
65
|
const oauthAppMap = new Map<string, MCPToolCollectionObject[]>();
|
|
@@ -87,6 +88,7 @@ export function useMcpConnections() {
|
|
|
87
88
|
representativeId: cols[0].id,
|
|
88
89
|
memberIds: cols.map((c) => c.id),
|
|
89
90
|
memberNames: cols.map((c) => c.name),
|
|
91
|
+
authType: 'oauth',
|
|
90
92
|
});
|
|
91
93
|
}
|
|
92
94
|
|
|
@@ -99,6 +101,7 @@ export function useMcpConnections() {
|
|
|
99
101
|
representativeId: cols[0].id,
|
|
100
102
|
memberIds: cols.map((c) => c.id),
|
|
101
103
|
memberNames: cols.map((c) => c.name),
|
|
104
|
+
authType: 'oauth',
|
|
102
105
|
});
|
|
103
106
|
}
|
|
104
107
|
|
|
@@ -111,6 +114,20 @@ export function useMcpConnections() {
|
|
|
111
114
|
representativeId: col.id,
|
|
112
115
|
memberIds: [col.id],
|
|
113
116
|
memberNames: [col.name],
|
|
117
|
+
authType: 'oauth',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
for (const col of apiKeyCollections) {
|
|
122
|
+
allGroups.push({
|
|
123
|
+
key: `${inst.id}:api-key:${col.id}`,
|
|
124
|
+
appId: inst.id,
|
|
125
|
+
appName: inst.manifest.title || inst.manifest.name,
|
|
126
|
+
label: col.name,
|
|
127
|
+
representativeId: col.id,
|
|
128
|
+
memberIds: [col.id],
|
|
129
|
+
memberNames: [col.name],
|
|
130
|
+
authType: 'api_key',
|
|
114
131
|
});
|
|
115
132
|
}
|
|
116
133
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { Loader2 } from 'lucide-react';
|
|
2
|
-
import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { Document, Page
|
|
4
|
-
|
|
5
|
-
// Configure PDF.js worker - use CDN for the worker
|
|
6
|
-
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;
|
|
2
|
+
import { createContext, Suspense, useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { Document, Page } from './lazyReactPdf';
|
|
7
4
|
|
|
8
5
|
// Loading spinner component
|
|
9
6
|
function LoadingSpinner({ className, size = 'md' }: { className?: string; size?: 'sm' | 'md' | 'lg' }) {
|
|
@@ -65,15 +62,17 @@ export function PdfPageRenderer({
|
|
|
65
62
|
return (
|
|
66
63
|
<div className={className}>
|
|
67
64
|
{loading && <LoadingSpinner className="py-4" size="md" />}
|
|
68
|
-
<
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
65
|
+
<Suspense fallback={null}>
|
|
66
|
+
<Document file={pdfUrl} onLoadSuccess={handleLoadSuccess} onLoadError={handleError} loading={null}>
|
|
67
|
+
<Page
|
|
68
|
+
pageNumber={pageNumber}
|
|
69
|
+
width={width}
|
|
70
|
+
renderTextLayer={renderTextLayer}
|
|
71
|
+
renderAnnotationLayer={renderAnnotationLayer}
|
|
72
|
+
loading={<LoadingSpinner className="py-4" size="sm" />}
|
|
73
|
+
/>
|
|
74
|
+
</Document>
|
|
75
|
+
</Suspense>
|
|
77
76
|
</div>
|
|
78
77
|
);
|
|
79
78
|
}
|
|
@@ -174,14 +173,16 @@ export function SharedPdfProvider({ pdfUrl, urlLoading = false, children, onLoad
|
|
|
174
173
|
return (
|
|
175
174
|
<SharedPdfContext.Provider value={value}>
|
|
176
175
|
{pdfUrl ? (
|
|
177
|
-
<
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
176
|
+
<Suspense fallback={<LoadingSpinner className="py-4" size="md" />}>
|
|
177
|
+
<Document
|
|
178
|
+
file={pdfUrl}
|
|
179
|
+
onLoadSuccess={handleLoadSuccess}
|
|
180
|
+
onLoadError={handleError}
|
|
181
|
+
loading={<LoadingSpinner className="py-4" size="md" />}
|
|
182
|
+
>
|
|
183
|
+
{children(renderPage)}
|
|
184
|
+
</Document>
|
|
185
|
+
</Suspense>
|
|
185
186
|
) : (
|
|
186
187
|
<LoadingSpinner className="py-4" size="md" />
|
|
187
188
|
)}
|
|
@@ -480,45 +481,47 @@ export function PdfThumbnailList({
|
|
|
480
481
|
|
|
481
482
|
return (
|
|
482
483
|
<div ref={containerRef}>
|
|
483
|
-
<
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
484
|
+
<Suspense fallback={<LoadingSpinner className="py-4" size="md" />}>
|
|
485
|
+
<Document
|
|
486
|
+
file={pdfUrl}
|
|
487
|
+
onLoadSuccess={handleLoadSuccess}
|
|
488
|
+
onLoadError={handleError}
|
|
489
|
+
loading={<LoadingSpinner className="py-4" size="md" />}
|
|
490
|
+
>
|
|
491
|
+
{hasAspectRatio ? (
|
|
492
|
+
<>
|
|
493
|
+
{/* Top spacer for pages above visible window */}
|
|
494
|
+
{topSpacerHeight > 0 && <div style={{ height: topSpacerHeight }} />}
|
|
495
|
+
|
|
496
|
+
{/* Only render pages within the visible window */}
|
|
497
|
+
{Array.from({ length: visibleRange.end - visibleRange.start }, (_, index) => {
|
|
498
|
+
const pageNumber = visibleRange.start + index + 1;
|
|
499
|
+
return (
|
|
500
|
+
<div
|
|
501
|
+
key={pageNumber}
|
|
502
|
+
data-page-index={pageNumber - 1}
|
|
503
|
+
style={{ height: itemHeight, overflow: 'hidden' }}
|
|
504
|
+
>
|
|
505
|
+
<VirtualizedThumbnail
|
|
506
|
+
pageNumber={pageNumber}
|
|
507
|
+
width={thumbnailWidth}
|
|
508
|
+
isSelected={pageNumber === currentPage}
|
|
509
|
+
onSelect={() => onPageSelect(pageNumber)}
|
|
510
|
+
renderThumbnail={renderThumbnail}
|
|
511
|
+
aspectRatio={effectiveAspectRatio}
|
|
512
|
+
/>
|
|
513
|
+
</div>
|
|
514
|
+
);
|
|
515
|
+
})}
|
|
516
|
+
|
|
517
|
+
{/* Bottom spacer for pages below visible window */}
|
|
518
|
+
{bottomSpacerHeight > 0 && <div style={{ height: bottomSpacerHeight }} />}
|
|
519
|
+
</>
|
|
520
|
+
) : (
|
|
521
|
+
<LoadingSpinner className="py-4" size="md" />
|
|
522
|
+
)}
|
|
523
|
+
</Document>
|
|
524
|
+
</Suspense>
|
|
522
525
|
</div>
|
|
523
526
|
);
|
|
524
527
|
}
|
|
@@ -575,16 +578,18 @@ export function PdfDocumentRenderer({
|
|
|
575
578
|
return (
|
|
576
579
|
<div className={className}>
|
|
577
580
|
{loading && <LoadingSpinner className="py-8" size="lg" />}
|
|
578
|
-
<
|
|
579
|
-
<
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
581
|
+
<Suspense fallback={null}>
|
|
582
|
+
<Document file={pdfUrl} onLoadSuccess={handleLoadSuccess} onLoadError={handleError} loading={null}>
|
|
583
|
+
<Page
|
|
584
|
+
pageNumber={Math.min(pageNumber, numPages || 1)}
|
|
585
|
+
width={width}
|
|
586
|
+
height={height}
|
|
587
|
+
renderTextLayer={renderTextLayer}
|
|
588
|
+
renderAnnotationLayer={renderAnnotationLayer}
|
|
589
|
+
loading={<LoadingSpinner className="py-8" size="md" />}
|
|
590
|
+
/>
|
|
591
|
+
</Document>
|
|
592
|
+
</Suspense>
|
|
588
593
|
</div>
|
|
589
594
|
);
|
|
590
595
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type LazyExoticComponent, lazy } from 'react';
|
|
2
|
+
|
|
3
|
+
type ReactPdf = typeof import('react-pdf');
|
|
4
|
+
|
|
5
|
+
let reactPdfPromise: Promise<ReactPdf> | undefined;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* react-pdf carries pdf.js with it, which is by far the heaviest dependency of this package and is
|
|
9
|
+
* only needed once a PDF is actually displayed. Loading it on demand keeps it out of the eager
|
|
10
|
+
* bundle of every consuming app. The pdf.js worker (served from a CDN) is configured as part of the
|
|
11
|
+
* same load, since it must be set before the first document is opened.
|
|
12
|
+
*/
|
|
13
|
+
function loadReactPdf(): Promise<ReactPdf> {
|
|
14
|
+
if (!reactPdfPromise) {
|
|
15
|
+
reactPdfPromise = import('react-pdf').then((reactPdf) => {
|
|
16
|
+
const { pdfjs } = reactPdf;
|
|
17
|
+
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;
|
|
18
|
+
return reactPdf;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return reactPdfPromise;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Drop-in replacements for react-pdf's `Document` and `Page`. Both resolve from the same load, so a
|
|
26
|
+
* single `Suspense` boundary around the `Document` also covers the `Page` elements inside it.
|
|
27
|
+
*/
|
|
28
|
+
export const Document: LazyExoticComponent<ReactPdf['Document']> = lazy(() =>
|
|
29
|
+
loadReactPdf().then(({ Document: component }) => ({ default: component })),
|
|
30
|
+
);
|
|
31
|
+
export const Page: LazyExoticComponent<ReactPdf['Page']> = lazy(() =>
|
|
32
|
+
loadReactPdf().then(({ Page: component }) => ({ default: component })),
|
|
33
|
+
);
|
|
@@ -14,14 +14,11 @@ import {
|
|
|
14
14
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
15
15
|
import { NavLink } from '@vertesia/ui/router';
|
|
16
16
|
import { useUserSession } from '@vertesia/ui/session';
|
|
17
|
-
import dayjs from 'dayjs';
|
|
18
|
-
import relativeTime from 'dayjs/plugin/relativeTime';
|
|
19
17
|
import { FolderClosed, Search, Trash2 } from 'lucide-react';
|
|
20
18
|
import { useEffect, useState } from 'react';
|
|
19
|
+
import dayjs from '../../../core/utils/dayjs.js';
|
|
21
20
|
import { CreateCollectionModal } from './CreateCollection';
|
|
22
21
|
|
|
23
|
-
dayjs.extend(relativeTime);
|
|
24
|
-
|
|
25
22
|
export function CollectionsTable() {
|
|
26
23
|
const { client } = useUserSession();
|
|
27
24
|
const toast = useToast();
|
|
@@ -23,8 +23,8 @@ import {
|
|
|
23
23
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
24
24
|
import { useUserSession } from '@vertesia/ui/session';
|
|
25
25
|
import { type EditorApi, GeneratedForm, ManagedObject, MonacoEditor, type Node } from '@vertesia/ui/widgets';
|
|
26
|
-
import dayjs from 'dayjs';
|
|
27
26
|
import { useContext, useMemo, useRef, useState } from 'react';
|
|
27
|
+
import dayjs from '../../../core/utils/dayjs.js';
|
|
28
28
|
import { UserInfo } from '../../user/UserInfo';
|
|
29
29
|
import { SearchContext } from '../objects/search/DocumentSearchContext';
|
|
30
30
|
import { SelectContentType, stringifyTableLayout } from '../types';
|
|
@@ -11,15 +11,22 @@ interface ExportPropertiesModalProps {
|
|
|
11
11
|
isExporting: boolean;
|
|
12
12
|
isOpen: boolean;
|
|
13
13
|
onClose: (exportType?: string | null | undefined, exportAll?: boolean) => void;
|
|
14
|
+
/** Hide the all-objects option when the caller can only export an explicit selection. */
|
|
15
|
+
allowExportAll?: boolean;
|
|
14
16
|
}
|
|
15
|
-
export function ExportPropertiesModal({
|
|
17
|
+
export function ExportPropertiesModal({
|
|
18
|
+
isExporting,
|
|
19
|
+
isOpen,
|
|
20
|
+
onClose,
|
|
21
|
+
allowExportAll = true,
|
|
22
|
+
}: ExportPropertiesModalProps) {
|
|
16
23
|
const title = 'Export Object Properties';
|
|
17
24
|
|
|
18
25
|
return (
|
|
19
26
|
<Modal onClose={() => onClose(undefined)} isOpen={isOpen}>
|
|
20
27
|
<ModalTitle>{title}</ModalTitle>
|
|
21
28
|
<ModalBody>
|
|
22
|
-
{!isExporting && <SelectPanel onClose={onClose} />}
|
|
29
|
+
{!isExporting && <SelectPanel onClose={onClose} allowExportAll={allowExportAll} />}
|
|
23
30
|
{isExporting && <WaitingPanel />}
|
|
24
31
|
</ModalBody>
|
|
25
32
|
</Modal>
|
|
@@ -28,13 +35,13 @@ export function ExportPropertiesModal({ isExporting, isOpen, onClose }: ExportPr
|
|
|
28
35
|
|
|
29
36
|
interface SelectPanelProps {
|
|
30
37
|
onClose: (exportType?: string | null, exportAll?: boolean) => void;
|
|
38
|
+
allowExportAll: boolean;
|
|
31
39
|
}
|
|
32
|
-
function SelectPanel({ onClose }: SelectPanelProps) {
|
|
40
|
+
function SelectPanel({ onClose, allowExportAll }: SelectPanelProps) {
|
|
33
41
|
const { t } = useUITranslation();
|
|
34
42
|
const [exportType, setExportType] = useState<string | undefined>(undefined);
|
|
35
|
-
const [exportAll, setExportAll] = useState<string | undefined>(undefined);
|
|
36
|
-
|
|
37
43
|
const selectionOption: string[] = ['Export selected objects', 'Export all objects'];
|
|
44
|
+
const [exportAll, setExportAll] = useState<string | undefined>(allowExportAll ? undefined : selectionOption[0]);
|
|
38
45
|
|
|
39
46
|
const exportAllBoolean = (option: string | undefined) => {
|
|
40
47
|
return option === selectionOption[1];
|
|
@@ -46,17 +53,19 @@ function SelectPanel({ onClose }: SelectPanelProps) {
|
|
|
46
53
|
|
|
47
54
|
return (
|
|
48
55
|
<ModalBody className="min-h-[104px] pt-0 flex flex-col gap-y-4">
|
|
49
|
-
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
{allowExportAll && (
|
|
57
|
+
<div className="h-1/3">
|
|
58
|
+
<SelectBox
|
|
59
|
+
options={selectionOption}
|
|
60
|
+
value={exportAll}
|
|
61
|
+
onChange={setExportAll}
|
|
62
|
+
placeholder={t('store.chooseWhatToExport')}
|
|
63
|
+
className="h-full w-full text-sm"
|
|
64
|
+
filterBy="name"
|
|
65
|
+
isClearable
|
|
66
|
+
/>
|
|
67
|
+
</div>
|
|
68
|
+
)}
|
|
60
69
|
<div className="h-1/2 flex flex-col gap-y-8 content-between">
|
|
61
70
|
<SelectBox
|
|
62
71
|
options={Object.values(ExportTypes)}
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
WorkflowExecutionStatus,
|
|
12
12
|
} from '@vertesia/common';
|
|
13
13
|
import {
|
|
14
|
-
Badge,
|
|
15
14
|
Button,
|
|
16
15
|
Dropdown,
|
|
17
16
|
MenuItem,
|
|
@@ -36,11 +35,7 @@ import {
|
|
|
36
35
|
UniversalDocumentViewer,
|
|
37
36
|
} from '../../../document-viewer/UniversalDocumentViewer.js';
|
|
38
37
|
import { MagicPdfView } from '../../../magic-pdf';
|
|
39
|
-
import {
|
|
40
|
-
GroundedExtractionView,
|
|
41
|
-
useGroundedExtractionAvailable,
|
|
42
|
-
useGroundedSummary,
|
|
43
|
-
} from '../../../magic-pdf/GroundedExtractionView.js';
|
|
38
|
+
import { GroundedExtractionView, useGroundedExtractionAvailable } from '../../../magic-pdf/GroundedExtractionView.js';
|
|
44
39
|
import { AudioPanel, ImagePanel, VideoPanel } from '../../../media-viewer';
|
|
45
40
|
import { SecureButton } from '../../../permissions/SecureButton.js';
|
|
46
41
|
import { getWorkflowStatusColor, getWorkflowStatusName, isPreviewableAsPdf } from '../../../utils/index.js';
|
|
@@ -348,7 +343,6 @@ function PropertiesPanel({
|
|
|
348
343
|
const { t } = useUITranslation();
|
|
349
344
|
const [viewCode, setViewCode] = useState(false);
|
|
350
345
|
const [isPropertiesModalOpen, setPropertiesModalOpen] = useState(false);
|
|
351
|
-
const groundedSummary = useGroundedSummary(object.id);
|
|
352
346
|
|
|
353
347
|
const handleOpenPropertiesModal = () => {
|
|
354
348
|
setPropertiesModalOpen(true);
|
|
@@ -408,26 +402,6 @@ function PropertiesPanel({
|
|
|
408
402
|
</div>
|
|
409
403
|
</div>
|
|
410
404
|
|
|
411
|
-
{groundedSummary && object.properties && (
|
|
412
|
-
<div className="flex items-center gap-2 px-2 pb-2">
|
|
413
|
-
{typeof groundedSummary.confidence === 'number' && (
|
|
414
|
-
<Badge
|
|
415
|
-
variant={groundedSummary.confidence >= 0.95 ? 'success' : 'attention'}
|
|
416
|
-
title={t('grounded.confidenceHint')}
|
|
417
|
-
>
|
|
418
|
-
{t('grounded.confidence', {
|
|
419
|
-
percent: Math.floor(groundedSummary.confidence * 100),
|
|
420
|
-
})}
|
|
421
|
-
</Badge>
|
|
422
|
-
)}
|
|
423
|
-
<Badge variant={groundedSummary.verified === groundedSummary.total ? 'success' : 'attention'}>
|
|
424
|
-
{t('grounded.verifiedOf', {
|
|
425
|
-
verified: groundedSummary.verified,
|
|
426
|
-
total: groundedSummary.total,
|
|
427
|
-
})}
|
|
428
|
-
</Badge>
|
|
429
|
-
</div>
|
|
430
|
-
)}
|
|
431
405
|
{object.properties ? (
|
|
432
406
|
<div className="flex-1 min-h-0 px-2">
|
|
433
407
|
<JSONDisplay value={object.properties} viewCode={viewCode} />
|
|
@@ -1229,7 +1203,7 @@ function PdfPreviewPanel({ object }: { object: ContentObject }) {
|
|
|
1229
1203
|
|
|
1230
1204
|
return (
|
|
1231
1205
|
<div className="h-full">
|
|
1232
|
-
<UniversalDocumentViewer source={source} className="h-full" />
|
|
1206
|
+
<UniversalDocumentViewer source={source} className="h-full" showHeader={false} />
|
|
1233
1207
|
</div>
|
|
1234
1208
|
);
|
|
1235
1209
|
}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import type { ContentObject } from '@vertesia/common';
|
|
2
2
|
import { Button, errorMessage, useTheme, useToast } from '@vertesia/ui/core';
|
|
3
3
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
4
|
-
import { VertesiaMarkdownDocumentEditor } from '@vertesia/ui/rich-text';
|
|
5
4
|
import { useNavigate } from '@vertesia/ui/router';
|
|
6
5
|
import { useUserSession } from '@vertesia/ui/session';
|
|
7
6
|
import { type IEditorApi, MonacoEditor } from '@vertesia/ui/widgets';
|
|
8
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
|
+
import { lazy, Suspense, useCallback, useEffect, useRef, useState } from 'react';
|
|
9
8
|
import { isMarkdownContentType } from './documentEditingRun.js';
|
|
10
9
|
import { SaveVersionConfirmModal } from './SaveVersionConfirmModal.js';
|
|
11
10
|
|
|
11
|
+
/**
|
|
12
|
+
* The rich-text editor carries the whole TipTap stack. Importing it statically here would defeat the
|
|
13
|
+
* lazy boundaries the markdown widgets already use, pulling TipTap into every app that can reach
|
|
14
|
+
* this panel — so it is loaded on demand, like the other consumers do.
|
|
15
|
+
*/
|
|
16
|
+
const MarkdownDocumentEditor = lazy(() =>
|
|
17
|
+
import('@vertesia/ui/rich-text').then((module) => ({ default: module.VertesiaMarkdownDocumentEditor })),
|
|
18
|
+
);
|
|
19
|
+
|
|
12
20
|
interface TextEditorPanelProps {
|
|
13
21
|
object: ContentObject;
|
|
14
22
|
text: string;
|
|
@@ -139,7 +147,9 @@ export function TextEditorPanel({ object, text, onClose, onSaved }: TextEditorPa
|
|
|
139
147
|
</div>
|
|
140
148
|
<div className="flex-1 min-h-0 border rounded-md overflow-hidden mx-2 mb-2">
|
|
141
149
|
{isMarkdown ? (
|
|
142
|
-
<
|
|
150
|
+
<Suspense fallback={<div className="h-full w-full" />}>
|
|
151
|
+
<MarkdownDocumentEditor value={editorText} onChange={handleMarkdownChange} />
|
|
152
|
+
</Suspense>
|
|
143
153
|
) : (
|
|
144
154
|
<MonacoEditor
|
|
145
155
|
value={text}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { Button, VTooltip } from '@vertesia/ui/core';
|
|
2
|
-
import dayjs from 'dayjs';
|
|
3
|
-
import LocalizedFormat from 'dayjs/plugin/localizedFormat';
|
|
4
|
-
import RelativeTime from 'dayjs/plugin/relativeTime';
|
|
5
2
|
import { ExternalLink, Eye } from 'lucide-react';
|
|
6
3
|
import type { ReactNode } from 'react';
|
|
4
|
+
import dayjs from '../../../../core/utils/dayjs.js';
|
|
7
5
|
import { shortId } from '../../../utils';
|
|
8
6
|
|
|
9
|
-
dayjs.extend(RelativeTime);
|
|
10
|
-
dayjs.extend(LocalizedFormat);
|
|
11
|
-
|
|
12
7
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
13
8
|
return typeof value === 'object' && value !== null;
|
|
14
9
|
}
|
|
@@ -118,12 +118,14 @@ export class DocumentSearch implements SearchInterface {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
_searchRequest(query: ComplexSearchQuery, limit: number, offset: number, includeFacets: boolean = true) {
|
|
121
|
-
|
|
121
|
+
// Keep this as `satisfies`: the full-object overload depends on preserving the literal
|
|
122
|
+
// `select?: undefined` shape rather than widening to a generic ComplexSearchPayload.
|
|
123
|
+
const payload = {
|
|
122
124
|
limit,
|
|
123
125
|
offset,
|
|
124
126
|
query,
|
|
125
127
|
facets: includeFacets ? this.facetSpecs : undefined,
|
|
126
|
-
};
|
|
128
|
+
} satisfies ComplexSearchPayload;
|
|
127
129
|
|
|
128
130
|
const request = this.collectionId
|
|
129
131
|
? this.client.collections.searchMembers(this.collectionId, payload)
|