@vertesia/ui 1.5.0-dev.20260806.125520Z → 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 +332 -0
- package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
- package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +331 -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 +25 -30
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertesia-ui-i18n.js","names":["ar","de","en","es","fr","it","ja","ko","pt","ru","tr","zh","zhTW","_jsx","_jsx"],"sources":["i18n/locales/ar.json","i18n/locales/de.json","i18n/locales/en.json","i18n/locales/es.json","i18n/locales/fr.json","i18n/locales/it.json","i18n/locales/ja.json","i18n/locales/ko.json","i18n/locales/pt.json","i18n/locales/ru.json","i18n/locales/tr.json","i18n/locales/zh.json","i18n/locales/zh-TW.json","i18n/instance.js","i18n/rtl.js","i18n/LanguageProvider.js","i18n/useLocaleFormat.js","i18n/index.js"],"sourcesContent":["","","","","","","","","","","","","","import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport ar from './locales/ar.json';\nimport de from './locales/de.json';\nimport en from './locales/en.json';\nimport es from './locales/es.json';\nimport fr from './locales/fr.json';\nimport it from './locales/it.json';\nimport ja from './locales/ja.json';\nimport ko from './locales/ko.json';\nimport pt from './locales/pt.json';\nimport ru from './locales/ru.json';\nimport tr from './locales/tr.json';\nimport zh from './locales/zh.json';\nimport zhTW from './locales/zh-TW.json';\nexport const NAMESPACE = 'vertesia.ui';\n// Scoped instance — does NOT touch the global i18next singleton\nconst i18nInstance = i18next.createInstance();\nvoid i18nInstance.use(initReactI18next).init({\n resources: {\n ar: { [NAMESPACE]: ar },\n de: { [NAMESPACE]: de },\n en: { [NAMESPACE]: en },\n es: { [NAMESPACE]: es },\n fr: { [NAMESPACE]: fr },\n it: { [NAMESPACE]: it },\n ja: { [NAMESPACE]: ja },\n ko: { [NAMESPACE]: ko },\n pt: { [NAMESPACE]: pt },\n ru: { [NAMESPACE]: ru },\n tr: { [NAMESPACE]: tr },\n zh: { [NAMESPACE]: zh },\n 'zh-TW': { [NAMESPACE]: zhTW },\n },\n fallbackLng: 'en',\n returnEmptyString: false,\n ns: [NAMESPACE],\n defaultNS: NAMESPACE,\n interpolation: {\n escapeValue: false, // React already escapes\n },\n react: {\n useSuspense: false, // Translations are bundled, no async loading\n },\n});\nexport { i18nInstance };\n//# sourceMappingURL=instance.js.map","/**\n * RTL detection and language resolution for the @vertesia/ui locale set.\n *\n * SUPPORTED_LANGUAGES is the single source of truth for what locales the\n * switcher offers, and must stay in sync with the resources registered in\n * `./instance.ts`. A divergence-guard test (`./rtl.test.ts`) fails the build\n * if the two diverge.\n *\n * RTL_LANGUAGES is deliberately broader than SUPPORTED_LANGUAGES so that\n * dir=\"rtl\" handling is forward-compatible when new RTL locales (he, fa, ur,\n * ...) are added to instance.ts later.\n */\nexport const SUPPORTED_LANGUAGES = [\n 'ar',\n 'de',\n 'en',\n 'es',\n 'fr',\n 'it',\n 'ja',\n 'ko',\n 'pt',\n 'ru',\n 'tr',\n 'zh',\n 'zh-TW',\n];\nexport const RTL_LANGUAGES = new Set(['ar', 'he', 'fa', 'ur']);\nexport function isRTL(lng) {\n if (!lng)\n return false;\n return RTL_LANGUAGES.has(lng.split('-')[0].toLowerCase());\n}\n/**\n * Resolve any raw language code (BCP-47 or bare) to a SupportedLanguage:\n * 1. exact match against SUPPORTED_LANGUAGES (preserves `zh-TW` vs `zh`)\n * 2. base-language fallback (`pt-BR` -> `pt`)\n * 3. `'en'` fallback\n *\n * The inline FOUC script in `index.html` must reimplement this same logic\n * verbatim (it cannot import ESM before bundle load).\n */\nexport function resolveLanguage(raw) {\n if (!raw)\n return 'en';\n const list = SUPPORTED_LANGUAGES;\n if (list.includes(raw))\n return raw;\n const base = raw.split('-')[0];\n if (list.includes(base))\n return base;\n return 'en';\n}\n//# sourceMappingURL=rtl.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { DirectionProvider } from '@radix-ui/react-direction';\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react';\nimport { isRTL, resolveLanguage } from './rtl.js';\nconst initialState = {\n language: 'en',\n setLanguage: () => null,\n isRTL: false,\n};\nconst LanguageProviderContext = createContext(initialState);\nexport { LanguageProviderContext };\nfunction readInitialLanguage(storageKey, defaultLanguage) {\n if (typeof window === 'undefined')\n return defaultLanguage;\n const stored = window.localStorage?.getItem(storageKey);\n if (stored)\n return resolveLanguage(stored);\n const nav = window.navigator?.language;\n if (nav)\n return resolveLanguage(nav);\n return defaultLanguage;\n}\nexport function LanguageProvider({ children, defaultLanguage = 'en', storageKey = 'vertesia-ui-language', ...props }) {\n const [language, setLanguage] = useState(() => readInitialLanguage(storageKey, defaultLanguage));\n const rtl = isRTL(language);\n useEffect(() => {\n const root = window.document.documentElement;\n root.lang = language;\n root.dir = rtl ? 'rtl' : 'ltr';\n }, [language, rtl]);\n const value = useMemo(() => ({\n language,\n isRTL: rtl,\n setLanguage: (next) => {\n window.localStorage?.setItem(storageKey, next);\n setLanguage(next);\n },\n }), [language, rtl, storageKey]);\n return (_jsx(LanguageProviderContext.Provider, { ...props, value: value, children: _jsx(DirectionProvider, { dir: rtl ? 'rtl' : 'ltr', children: children }) }));\n}\nexport function useLanguage() {\n const context = useContext(LanguageProviderContext);\n if (context === undefined) {\n throw new Error('useLanguage must be used within a LanguageProvider');\n }\n return context;\n}\n//# sourceMappingURL=LanguageProvider.js.map","import { useMemo } from 'react';\nimport { useLanguage } from './LanguageProvider.js';\nfunction toDate(input) {\n if (input == null)\n return null;\n const d = input instanceof Date ? input : new Date(input);\n return Number.isNaN(d.getTime()) ? null : d;\n}\nconst PLACEHOLDER = '—';\nconst RELATIVE_UNITS = [\n { unit: 'year', seconds: 31536000 },\n { unit: 'month', seconds: 2628000 },\n { unit: 'week', seconds: 604800 },\n { unit: 'day', seconds: 86400 },\n { unit: 'hour', seconds: 3600 },\n { unit: 'minute', seconds: 60 },\n { unit: 'second', seconds: 1 },\n];\nexport function useLocaleFormat() {\n const { language } = useLanguage();\n return useMemo(() => {\n // dateStyle: 'long' so each locale shows its native flavor — Japanese\n // gets 年月日 markers, English gets \"May 11, 2026\", Arabic gets month\n // names, etc. The 'short' style is too aggressively numeric (it\n // renders Japanese as \"2026/05/11\", which is correct per CLDR but\n // doesn't feel localized to users). Call sites that want compact\n // numeric output can pass `{ dateStyle: 'short' }` explicitly.\n const dateLong = new Intl.DateTimeFormat(language, { dateStyle: 'long' });\n const dateTimeLong = new Intl.DateTimeFormat(language, { dateStyle: 'long', timeStyle: 'short' });\n const timeShort = new Intl.DateTimeFormat(language, { timeStyle: 'short' });\n const numberDefault = new Intl.NumberFormat(language);\n const relativeDefault = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n const listDefault = new Intl.ListFormat(language);\n return {\n language,\n formatDate: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateLong.format(d);\n },\n formatDateTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateTimeLong.format(d);\n },\n formatTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : timeShort.format(d);\n },\n formatNumber: (value, options) => {\n if (value == null || Number.isNaN(value))\n return PLACEHOLDER;\n return options ? new Intl.NumberFormat(language, options).format(value) : numberDefault.format(value);\n },\n formatRelativeTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n const diffSeconds = (d.getTime() - Date.now()) / 1000;\n const abs = Math.abs(diffSeconds);\n const { unit, seconds } = RELATIVE_UNITS.find((u) => abs >= u.seconds) ?? RELATIVE_UNITS[RELATIVE_UNITS.length - 1];\n const value = Math.round(diffSeconds / seconds);\n const formatter = options ? new Intl.RelativeTimeFormat(language, options) : relativeDefault;\n return formatter.format(value, unit);\n },\n formatList: (items, options) => {\n const filtered = items.filter((v) => v != null && v !== '');\n if (filtered.length === 0)\n return '';\n return options ? new Intl.ListFormat(language, options).format(filtered) : listDefault.format(filtered);\n },\n };\n }, [language]);\n}\n//# sourceMappingURL=useLocaleFormat.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport { I18nextProvider, Trans, useTranslation } from 'react-i18next';\nimport { i18nInstance, NAMESPACE } from './instance.js';\nimport { useLanguage } from './LanguageProvider.js';\nexport { Trans };\nfunction detectLanguage(lng) {\n return lng ?? navigator.language?.split('-')[0] ?? 'en';\n}\nexport function I18nProvider({ lng, children }) {\n // Set language synchronously on first render to avoid flash of wrong language\n const language = detectLanguage(lng);\n if (i18nInstance.language !== language) {\n void i18nInstance.changeLanguage(language);\n }\n // Also react to prop changes\n useEffect(() => {\n const lang = detectLanguage(lng);\n if (i18nInstance.language !== lang) {\n void i18nInstance.changeLanguage(lang);\n }\n }, [lng]);\n return _jsx(I18nextProvider, { i18n: i18nInstance, children: children });\n}\n/**\n * Binds i18next to the language reported by the surrounding `LanguageProvider`.\n * Use this inside `VertesiaShell` (or wherever a `LanguageProvider` ancestor is\n * available) so language changes propagate to all `useUITranslation()` callers\n * without a static `lng` prop.\n */\nexport function LanguageBoundI18nProvider({ children }) {\n const { language } = useLanguage();\n return _jsx(I18nProvider, { lng: language, children: children });\n}\n/**\n * Hook for components inside @vertesia/ui to get translation functions.\n * Always binds to the 'vertesia.ui' namespace on the scoped instance.\n */\nexport function useUITranslation() {\n return useTranslation(NAMESPACE, { i18n: i18nInstance });\n}\nexport { i18nInstance, NAMESPACE } from './instance.js';\nexport { LanguageProvider, LanguageProviderContext, useLanguage, } from './LanguageProvider.js';\nexport { isRTL, RTL_LANGUAGES, resolveLanguage, SUPPORTED_LANGUAGES, } from './rtl.js';\nexport { useLocaleFormat } from './useLocaleFormat.js';\n//# sourceMappingURL=index.js.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;k1faeA,MAAa,EAAY,cAEnB,EAAe,EAAQ,eAAe,EACvC,EAAa,IAAI,CAAgB,CAAC,CAAC,KAAK,CACzC,UAAW,CACP,GAAI,EAAG,GAAYA,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,GAAI,EAAG,GAAYC,CAAG,EACtB,QAAS,EAAG,GAAYC,CAAK,CACjC,EACA,YAAa,KACb,kBAAmB,GACnB,GAAI,CAAC,CAAS,EACd,UAAW,EACX,cAAe,CACX,YAAa,EACjB,EACA,MAAO,CACH,YAAa,EACjB,CACJ,CAAC,EChCD,MAAa,EAAsB,CAC/B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OACJ,EACa,EAAgB,IAAI,IAAI,CAAC,KAAM,KAAM,KAAM,IAAI,CAAC,EAC7D,SAAgB,EAAM,EAAK,CAGvB,OAFK,EAEE,EAAc,IAAI,EAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAD7C,EAEf,CAUA,SAAgB,EAAgB,EAAK,CACjC,GAAI,CAAC,EACD,MAAO,KACX,IAAM,EAAO,EACb,GAAI,EAAK,SAAS,CAAG,EACjB,OAAO,EACX,IAAM,EAAO,EAAI,MAAM,GAAG,CAAC,CAAC,GAG5B,OAFI,EAAK,SAAS,CAAI,EACX,EACJ,IACX,CC3CA,MAAM,EAA0B,EAAc,CAJ1C,SAAU,KACV,gBAAmB,KACnB,MAAO,EAE8C,CAAC,EAE1D,SAAS,EAAoB,EAAY,EAAiB,CACtD,GAAI,OAAO,OAAW,IAClB,OAAO,EACX,IAAM,EAAS,OAAO,cAAc,QAAQ,CAAU,EACtD,GAAI,EACA,OAAO,EAAgB,CAAM,EACjC,IAAM,EAAM,OAAO,WAAW,SAG9B,OAFI,EACO,EAAgB,CAAG,EACvB,CACX,CACA,SAAgB,EAAiB,CAAE,WAAU,kBAAkB,KAAM,aAAa,uBAAwB,GAAG,GAAS,CAClH,GAAM,CAAC,EAAU,GAAe,MAAe,EAAoB,EAAY,CAAe,CAAC,EACzF,EAAM,EAAM,CAAQ,EAC1B,MAAgB,CACZ,IAAM,EAAO,OAAO,SAAS,gBAC7B,EAAK,KAAO,EACZ,EAAK,IAAM,EAAM,MAAQ,KAC7B,EAAG,CAAC,EAAU,CAAG,CAAC,EAClB,IAAM,EAAQ,OAAe,CACzB,WACA,MAAO,EACP,YAAc,GAAS,CACnB,OAAO,cAAc,QAAQ,EAAY,CAAI,EAC7C,EAAY,CAAI,CACpB,CACJ,GAAI,CAAC,EAAU,EAAK,CAAU,CAAC,EAC/B,OAAQC,EAAK,EAAwB,SAAU,CAAE,GAAG,EAAc,QAAO,SAAUA,EAAK,EAAmB,CAAE,IAAK,EAAM,MAAQ,MAAiB,UAAS,CAAC,CAAE,CAAC,CAClK,CACA,SAAgB,GAAc,CAC1B,IAAM,EAAU,EAAW,CAAuB,EAClD,GAAI,IAAY,IAAA,GACZ,MAAU,MAAM,oDAAoD,EAExE,OAAO,CACX,CC5CA,SAAS,EAAO,EAAO,CACnB,GAAI,GAAS,KACT,OAAO,KACX,IAAM,EAAI,aAAiB,KAAO,EAAQ,IAAI,KAAK,CAAK,EACxD,OAAO,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAI,KAAO,CAC9C,CACA,MACM,EAAiB,CACnB,CAAE,KAAM,OAAQ,QAAS,OAAS,EAClC,CAAE,KAAM,QAAS,QAAS,MAAQ,EAClC,CAAE,KAAM,OAAQ,QAAS,MAAO,EAChC,CAAE,KAAM,MAAO,QAAS,KAAM,EAC9B,CAAE,KAAM,OAAQ,QAAS,IAAK,EAC9B,CAAE,KAAM,SAAU,QAAS,EAAG,EAC9B,CAAE,KAAM,SAAU,QAAS,CAAE,CACjC,EACA,SAAgB,GAAkB,CAC9B,GAAM,CAAE,YAAa,EAAY,EACjC,OAAO,MAAc,CAOjB,IAAM,EAAW,IAAI,KAAK,eAAe,EAAU,CAAE,UAAW,MAAO,CAAC,EAClE,EAAe,IAAI,KAAK,eAAe,EAAU,CAAE,UAAW,OAAQ,UAAW,OAAQ,CAAC,EAC1F,EAAY,IAAI,KAAK,eAAe,EAAU,CAAE,UAAW,OAAQ,CAAC,EACpE,EAAgB,IAAI,KAAK,aAAa,CAAQ,EAC9C,EAAkB,IAAI,KAAK,mBAAmB,EAAU,CAAE,QAAS,MAAO,CAAC,EAC3E,EAAc,IAAI,KAAK,WAAW,CAAQ,EAChD,MAAO,CACH,WACA,YAAa,EAAM,IAAY,CAC3B,IAAM,EAAI,EAAO,CAAI,EAGrB,OAFK,EAEE,EAAU,IAAI,KAAK,eAAe,EAAU,CAAO,CAAC,CAAC,OAAO,CAAC,EAAI,EAAS,OAAO,CAAC,EAD9E,GAEf,EACA,gBAAiB,EAAM,IAAY,CAC/B,IAAM,EAAI,EAAO,CAAI,EAGrB,OAFK,EAEE,EAAU,IAAI,KAAK,eAAe,EAAU,CAAO,CAAC,CAAC,OAAO,CAAC,EAAI,EAAa,OAAO,CAAC,EADlF,GAEf,EACA,YAAa,EAAM,IAAY,CAC3B,IAAM,EAAI,EAAO,CAAI,EAGrB,OAFK,EAEE,EAAU,IAAI,KAAK,eAAe,EAAU,CAAO,CAAC,CAAC,OAAO,CAAC,EAAI,EAAU,OAAO,CAAC,EAD/E,GAEf,EACA,cAAe,EAAO,IACd,GAAS,MAAQ,OAAO,MAAM,CAAK,EAC5B,IACJ,EAAU,IAAI,KAAK,aAAa,EAAU,CAAO,CAAC,CAAC,OAAO,CAAK,EAAI,EAAc,OAAO,CAAK,EAExG,oBAAqB,EAAM,IAAY,CACnC,IAAM,EAAI,EAAO,CAAI,EACrB,GAAI,CAAC,EACD,MAAO,IACX,IAAM,GAAe,EAAE,QAAQ,EAAI,KAAK,IAAI,GAAK,IAC3C,EAAM,KAAK,IAAI,CAAW,EAC1B,CAAE,OAAM,WAAY,EAAe,KAAM,GAAM,GAAO,EAAE,OAAO,GAAK,EAAe,EAAe,OAAS,GAC3G,EAAQ,KAAK,MAAM,EAAc,CAAO,EAE9C,OADkB,EAAU,IAAI,KAAK,mBAAmB,EAAU,CAAO,EAAI,EAAA,CAC5D,OAAO,EAAO,CAAI,CACvC,EACA,YAAa,EAAO,IAAY,CAC5B,IAAM,EAAW,EAAM,OAAQ,GAAM,GAAK,MAAQ,IAAM,EAAE,EAG1D,OAFI,EAAS,SAAW,EACb,GACJ,EAAU,IAAI,KAAK,WAAW,EAAU,CAAO,CAAC,CAAC,OAAO,CAAQ,EAAI,EAAY,OAAO,CAAQ,CAC1G,CACJ,CACJ,EAAG,CAAC,CAAQ,CAAC,CACjB,CCvEA,SAAS,EAAe,EAAK,CACzB,OAAO,GAAO,UAAU,UAAU,MAAM,GAAG,CAAC,CAAC,IAAM,IACvD,CACA,SAAgB,EAAa,CAAE,MAAK,YAAY,CAE5C,IAAM,EAAW,EAAe,CAAG,EAWnC,OAVI,EAAa,WAAa,GAC1B,EAAkB,eAAe,CAAQ,EAG7C,MAAgB,CACZ,IAAM,EAAO,EAAe,CAAG,EAC3B,EAAa,WAAa,GAC1B,EAAkB,eAAe,CAAI,CAE7C,EAAG,CAAC,CAAG,CAAC,EACDC,EAAK,EAAiB,CAAE,KAAM,EAAwB,UAAS,CAAC,CAC3E,CAOA,SAAgB,EAA0B,CAAE,YAAY,CACpD,GAAM,CAAE,YAAa,EAAY,EACjC,OAAOA,EAAK,EAAc,CAAE,IAAK,EAAoB,UAAS,CAAC,CACnE,CAKA,SAAgB,GAAmB,CAC/B,OAAO,EAAe,EAAW,CAAE,KAAM,CAAa,CAAC,CAC3D"}
|
|
1
|
+
{"version":3,"file":"vertesia-ui-i18n.js","names":["en","_jsx","_jsx"],"sources":["i18n/locales/en.json","i18n/locales/ar.json","i18n/locales/de.json","i18n/locales/es.json","i18n/locales/fr.json","i18n/locales/it.json","i18n/locales/ja.json","i18n/locales/ko.json","i18n/locales/pt.json","i18n/locales/ru.json","i18n/locales/tr.json","i18n/locales/zh.json","i18n/locales/zh-TW.json","i18n/instance.js","i18n/rtl.js","i18n/LanguageProvider.js","i18n/useLocaleFormat.js","i18n/index.js"],"sourcesContent":["","","","","","","","","","","","","","import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport en from './locales/en.json';\nexport const NAMESPACE = 'vertesia.ui';\n/**\n * Every locale except the `en` fallback is fetched the first time it is selected. Bundling all\n * thirteen costs ~1 MB of JSON, of which a given user reads at most one — and the fallback covers\n * the gap while a translation is in flight.\n */\nconst LOCALE_LOADERS = {\n ar: () => import('./locales/ar.json'),\n de: () => import('./locales/de.json'),\n es: () => import('./locales/es.json'),\n fr: () => import('./locales/fr.json'),\n it: () => import('./locales/it.json'),\n ja: () => import('./locales/ja.json'),\n ko: () => import('./locales/ko.json'),\n pt: () => import('./locales/pt.json'),\n ru: () => import('./locales/ru.json'),\n tr: () => import('./locales/tr.json'),\n zh: () => import('./locales/zh.json'),\n 'zh-TW': () => import('./locales/zh-TW.json'),\n};\n/** Every locale this instance can serve: the bundled `en` fallback plus the lazily loaded ones. */\nexport const AVAILABLE_LOCALES = ['en', ...Object.keys(LOCALE_LOADERS)];\nconst lazyLocaleBackend = {\n type: 'backend',\n init: () => {\n // no configuration: the locale set is fixed at build time\n },\n read(language, _namespace, callback) {\n const load = LOCALE_LOADERS[language];\n if (!load) {\n // Unsupported language: report an empty bundle so i18next falls back to `en`\n callback(null, {});\n return;\n }\n load().then((locale) => callback(null, locale.default), (err) => callback(err instanceof Error ? err : new Error(String(err)), false));\n },\n};\n// Scoped instance — does NOT touch the global i18next singleton\nconst i18nInstance = i18next.createInstance();\nvoid i18nInstance\n .use(lazyLocaleBackend)\n .use(initReactI18next)\n .init({\n // `en` stays bundled so the fallback — and the common case — needs no round trip\n resources: {\n en: { [NAMESPACE]: en },\n },\n // Required to consult the backend even though `resources` are supplied\n partialBundledLanguages: true,\n fallbackLng: 'en',\n returnEmptyString: false,\n ns: [NAMESPACE],\n defaultNS: NAMESPACE,\n interpolation: {\n escapeValue: false, // React already escapes\n },\n react: {\n // Render the `en` fallback while a locale loads rather than suspending the tree\n useSuspense: false,\n },\n});\nexport { i18nInstance };\n//# sourceMappingURL=instance.js.map","/**\n * RTL detection and language resolution for the @vertesia/ui locale set.\n *\n * SUPPORTED_LANGUAGES is the single source of truth for what locales the\n * switcher offers, and must stay in sync with the resources registered in\n * `./instance.ts`. A divergence-guard test (`./rtl.test.ts`) fails the build\n * if the two diverge.\n *\n * RTL_LANGUAGES is deliberately broader than SUPPORTED_LANGUAGES so that\n * dir=\"rtl\" handling is forward-compatible when new RTL locales (he, fa, ur,\n * ...) are added to instance.ts later.\n */\nexport const SUPPORTED_LANGUAGES = [\n 'ar',\n 'de',\n 'en',\n 'es',\n 'fr',\n 'it',\n 'ja',\n 'ko',\n 'pt',\n 'ru',\n 'tr',\n 'zh',\n 'zh-TW',\n];\nexport const RTL_LANGUAGES = new Set(['ar', 'he', 'fa', 'ur']);\nexport function isRTL(lng) {\n if (!lng)\n return false;\n return RTL_LANGUAGES.has(lng.split('-')[0].toLowerCase());\n}\n/**\n * Resolve any raw language code (BCP-47 or bare) to a SupportedLanguage:\n * 1. exact match against SUPPORTED_LANGUAGES (preserves `zh-TW` vs `zh`)\n * 2. base-language fallback (`pt-BR` -> `pt`)\n * 3. `'en'` fallback\n *\n * The inline FOUC script in `index.html` must reimplement this same logic\n * verbatim (it cannot import ESM before bundle load).\n */\nexport function resolveLanguage(raw) {\n if (!raw)\n return 'en';\n const list = SUPPORTED_LANGUAGES;\n if (list.includes(raw))\n return raw;\n const base = raw.split('-')[0];\n if (list.includes(base))\n return base;\n return 'en';\n}\n//# sourceMappingURL=rtl.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { DirectionProvider } from '@radix-ui/react-direction';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\nimport { isRTL, resolveLanguage } from './rtl.js';\nconst initialState = {\n language: 'en',\n setLanguage: () => null,\n isRTL: false,\n};\nconst LanguageProviderContext = createContext(initialState);\nexport { LanguageProviderContext };\nfunction readInitialLanguage(storageKey, defaultLanguage) {\n if (typeof window === 'undefined')\n return defaultLanguage;\n const stored = window.localStorage?.getItem(storageKey);\n if (stored)\n return resolveLanguage(stored);\n const nav = window.navigator?.language;\n if (nav)\n return resolveLanguage(nav);\n return defaultLanguage;\n}\nexport function LanguageProvider({ children, defaultLanguage = 'en', storageKey = 'vertesia-ui-language', ...props }) {\n const [language, setLanguageState] = useState(() => readInitialLanguage(storageKey, defaultLanguage));\n const rtl = isRTL(language);\n useEffect(() => {\n const root = window.document.documentElement;\n root.lang = language;\n root.dir = rtl ? 'rtl' : 'ltr';\n }, [language, rtl]);\n const setLanguage = useCallback((next, options) => {\n if (options?.persist !== false)\n window.localStorage?.setItem(storageKey, next);\n setLanguageState(next);\n }, [storageKey]);\n const value = useMemo(() => ({\n language,\n isRTL: rtl,\n setLanguage,\n }), [language, rtl, setLanguage]);\n return (_jsx(LanguageProviderContext.Provider, { ...props, value: value, children: _jsx(DirectionProvider, { dir: rtl ? 'rtl' : 'ltr', children: children }) }));\n}\nexport function useLanguage() {\n const context = useContext(LanguageProviderContext);\n if (context === undefined) {\n throw new Error('useLanguage must be used within a LanguageProvider');\n }\n return context;\n}\n//# sourceMappingURL=LanguageProvider.js.map","import { useMemo } from 'react';\nimport { useLanguage } from './LanguageProvider.js';\nfunction toDate(input) {\n if (input == null)\n return null;\n const d = input instanceof Date ? input : new Date(input);\n return Number.isNaN(d.getTime()) ? null : d;\n}\nconst PLACEHOLDER = '—';\nconst RELATIVE_UNITS = [\n { unit: 'year', seconds: 31536000 },\n { unit: 'month', seconds: 2628000 },\n { unit: 'week', seconds: 604800 },\n { unit: 'day', seconds: 86400 },\n { unit: 'hour', seconds: 3600 },\n { unit: 'minute', seconds: 60 },\n { unit: 'second', seconds: 1 },\n];\nexport function useLocaleFormat() {\n const { language } = useLanguage();\n return useMemo(() => {\n // dateStyle: 'long' so each locale shows its native flavor — Japanese\n // gets 年月日 markers, English gets \"May 11, 2026\", Arabic gets month\n // names, etc. The 'short' style is too aggressively numeric (it\n // renders Japanese as \"2026/05/11\", which is correct per CLDR but\n // doesn't feel localized to users). Call sites that want compact\n // numeric output can pass `{ dateStyle: 'short' }` explicitly.\n const dateLong = new Intl.DateTimeFormat(language, { dateStyle: 'long' });\n const dateTimeLong = new Intl.DateTimeFormat(language, { dateStyle: 'long', timeStyle: 'short' });\n const timeShort = new Intl.DateTimeFormat(language, { timeStyle: 'short' });\n const numberDefault = new Intl.NumberFormat(language);\n const relativeDefault = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n const listDefault = new Intl.ListFormat(language);\n return {\n language,\n formatDate: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateLong.format(d);\n },\n formatDateTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : dateTimeLong.format(d);\n },\n formatTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n return options ? new Intl.DateTimeFormat(language, options).format(d) : timeShort.format(d);\n },\n formatNumber: (value, options) => {\n if (value == null || Number.isNaN(value))\n return PLACEHOLDER;\n return options ? new Intl.NumberFormat(language, options).format(value) : numberDefault.format(value);\n },\n formatRelativeTime: (date, options) => {\n const d = toDate(date);\n if (!d)\n return PLACEHOLDER;\n const diffSeconds = (d.getTime() - Date.now()) / 1000;\n const abs = Math.abs(diffSeconds);\n const { unit, seconds } = RELATIVE_UNITS.find((u) => abs >= u.seconds) ?? RELATIVE_UNITS[RELATIVE_UNITS.length - 1];\n const value = Math.round(diffSeconds / seconds);\n const formatter = options ? new Intl.RelativeTimeFormat(language, options) : relativeDefault;\n return formatter.format(value, unit);\n },\n formatList: (items, options) => {\n const filtered = items.filter((v) => v != null && v !== '');\n if (filtered.length === 0)\n return '';\n return options ? new Intl.ListFormat(language, options).format(filtered) : listDefault.format(filtered);\n },\n };\n }, [language]);\n}\n//# sourceMappingURL=useLocaleFormat.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport { I18nextProvider, Trans, useTranslation } from 'react-i18next';\nimport { i18nInstance, NAMESPACE } from './instance.js';\nimport { useLanguage } from './LanguageProvider.js';\nexport { Trans };\nfunction detectLanguage(lng) {\n return lng ?? navigator.language?.split('-')[0] ?? 'en';\n}\nexport function I18nProvider({ lng, children }) {\n // Set language synchronously on first render to avoid flash of wrong language\n const language = detectLanguage(lng);\n if (i18nInstance.language !== language) {\n void i18nInstance.changeLanguage(language);\n }\n // Also react to prop changes\n useEffect(() => {\n const lang = detectLanguage(lng);\n if (i18nInstance.language !== lang) {\n void i18nInstance.changeLanguage(lang);\n }\n }, [lng]);\n return _jsx(I18nextProvider, { i18n: i18nInstance, children: children });\n}\n/**\n * Binds i18next to the language reported by the surrounding `LanguageProvider`.\n * Use this inside `VertesiaShell` (or wherever a `LanguageProvider` ancestor is\n * available) so language changes propagate to all `useUITranslation()` callers\n * without a static `lng` prop.\n */\nexport function LanguageBoundI18nProvider({ children }) {\n const { language } = useLanguage();\n return _jsx(I18nProvider, { lng: language, children: children });\n}\n/**\n * Hook for components inside @vertesia/ui to get translation functions.\n * Always binds to the 'vertesia.ui' namespace on the scoped instance.\n */\nexport function useUITranslation() {\n return useTranslation(NAMESPACE, { i18n: i18nInstance });\n}\nexport { i18nInstance, NAMESPACE } from './instance.js';\nexport { LanguageProvider, LanguageProviderContext, useLanguage, } from './LanguageProvider.js';\nexport { isRTL, RTL_LANGUAGES, resolveLanguage, SUPPORTED_LANGUAGES, } from './rtl.js';\nexport { useLocaleFormat } from './useLocaleFormat.js';\n//# sourceMappingURL=index.js.map"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{Fragment as e,jsx as t,jsxs as n}from"react/jsx-runtime";import{MarkdownComponentEditor as r,MarkdownDocumentEditor as i,MarkdownRichTextEditor as a,getMarkdownCompatibility as o}from"@vertesia/rich-text";import{Button as s,DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d,Modal as f,ModalBody as p,ModalFooter as m,ModalTitle as h,Spinner as g,Textarea as _,VTooltip as v,cn as y,usePortalContainer as b,useToast as x}from"@vertesia/ui/core";import{useUITranslation as S}from"@vertesia/ui/i18n";import C,{createContext as w,memo as T,useCallback as E,useContext as D,useEffect as O,useId as k,useMemo as A,useRef as j,useState as M}from"react";import*as N from"@radix-ui/react-dialog";import{useUserSession as P}from"@vertesia/ui/session";import{BarChart3 as F,Bold as ee,Check as te,ChevronDown as ne,Code as I,Copy as re,Download as L,FileText as R,GitBranch as z,Image as ie,Italic as B,Link as ae,List as oe,ListOrdered as se,Loader2 as ce,Maximize2 as le,MessageSquare as V,MessageSquarePlus as H,Minimize2 as ue,Minus as de,Quote as fe,Redo2 as U,Send as W,SquareCode as pe,Strikethrough as me,Table as he,Undo2 as ge,X as _e}from"lucide-react";import ve from"papaparse";import{VegaEmbed as ye}from"react-vega";import{clsx as be}from"clsx";import{twMerge as xe}from"tailwind-merge";import{FusionFragmentHandler as Se,FusionFragmentProvider as G}from"@vertesia/fusion-ux";import Ce from"dompurify";import we from"mermaid";import Te,{defaultUrlTransform as Ee}from"react-markdown";import De from"rehype-katex";import{defListHastHandlers as Oe,remarkDefinitionList as ke}from"remark-definition-list";import Ae from"remark-directive";import je from"remark-gfm";import Me from"remark-github-blockquote-alert";import Ne from"remark-math";import Pe from"remark-supersub";import{SKIP as Fe,visit as Ie}from"unist-util-visit";import{FloatingPortal as Le,autoUpdate as Re,flip as ze,offset as Be,shift as Ve,useFloating as He}from"@floating-ui/react";const Ue=C.createContext({});function We({children:e,artifactRunId:n,onProposalSelect:r,onProposalSubmit:i,MarkdownRenderer:a}){let o=A(()=>({artifactRunId:n,onProposalSelect:r,onProposalSubmit:i,MarkdownRenderer:a}),[n,r,i,a]);return t(Ue.Provider,{value:o,children:e})}function K(){return C.useContext(Ue)}const Ge=w(null);function Ke(){return D(Ge)}function qe(...e){return xe(be(e))}const Je=w(null);function Ye(){return D(Je)}function Xe(e){return e.startsWith(`agents/`)||e.startsWith(`documents/`)}function Ze(e,t,n=`inline`){return`artifact:${e}:${t}:${n}`}function Qe(e){return`file:${e}`}function $e({error:e,chartTitle:r}){return t(`div`,{className:`flex items-center justify-center h-full bg-red-50 dark:bg-red-950 rounded-md p-4`,children:n(`div`,{className:`text-center`,children:[n(`p`,{className:`text-sm font-medium text-red-600 dark:text-red-400`,children:[`Cannot render `,r||`Vega-Lite`,` chart`]}),t(`p`,{className:`text-xs text-red-500 dark:text-red-500 mt-1 max-w-xs truncate`,children:e})]})})}function et({isOpen:e,onClose:r,title:i,description:a,children:o}){let{t:c}=S();return t(N.Root,{open:e,onOpenChange:e=>!e&&r(),children:n(N.Portal,{children:[t(N.Overlay,{className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-all duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`}),n(N.Content,{className:`fixed inset-2 sm:inset-4 z-50 flex flex-col bg-white dark:bg-gray-900 rounded-xl shadow-2xl transition-all duration-300 ease-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-98 data-[state=closed]:slide-out-to-bottom-2 data-[state=open]:slide-in-from-bottom-2`,onEscapeKeyDown:r,children:[t(N.Close,{asChild:!0,children:t(s,{variant:`unstyled`,onClick:r,className:`absolute top-3 end-3 z-10 p-2 rounded-lg bg-white/80 dark:bg-gray-800/80 backdrop-blur-sm hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors duration-150 shadow-sm`,"aria-label":c(`agent.closeFullscreen`),children:t(_e,{className:`w-5 h-5 text-gray-600 dark:text-gray-300`})})}),t(`div`,{className:`flex-1 overflow-auto p-4 sm:p-6 animate-in fade-in-0 duration-500 delay-150`,children:o}),t(`div`,{className:`flex items-center justify-between px-4 sm:px-6 py-3 border-t border-gray-200 dark:border-gray-800 bg-gray-50/50 dark:bg-gray-800/50 rounded-b-xl`,children:n(`div`,{className:`flex flex-col`,children:[t(N.Title,{className:`text-base font-semibold text-gray-900 dark:text-gray-100`,children:i||c(`agent.dashboard`)}),a&&t(N.Description,{className:`text-sm text-gray-500 dark:text-gray-400 mt-0.5`,children:a})]})})]})]})})}function tt(e,t){if(t===`chart`)return 280;let n=1;if(e.vconcat)n=Array.isArray(e.vconcat)?e.vconcat.length:1;else if(e.concat){let t=e.columns||2,r=Array.isArray(e.concat)?e.concat.length:1;n=Math.ceil(r/t)}else e.facet&&(n=2);return Math.max(500,n*280+40)}const nt={categorical:[`#6366f1`,`#8b5cf6`,`#ec4899`,`#f43f5e`,`#f97316`,`#eab308`,`#22c55e`,`#14b8a6`,`#06b6d4`,`#3b82f6`],blues:[`#dbeafe`,`#93c5fd`,`#3b82f6`,`#1d4ed8`,`#1e3a8a`],purples:[`#f3e8ff`,`#c4b5fd`,`#8b5cf6`,`#6d28d9`,`#4c1d95`],greens:[`#dcfce7`,`#86efac`,`#22c55e`,`#15803d`,`#14532d`],diverging:[`#ef4444`,`#fca5a5`,`#fef3c7`,`#86efac`,`#22c55e`]};function rt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function it(e){return rt(e)}function at(e){let t=JSON.parse(JSON.stringify(e)),n=[`vconcat`,`hconcat`,`concat`];if(!n.some(e=>Array.isArray(t[e])))return t;let r=[];if(Array.isArray(t.params))for(let e of t.params)e&&typeof e==`object`&&e.name&&e.select&&r.push({name:e.name,param:e});if(r.length===0)return t;for(let{name:e,param:i}of r){let r=i.select?.fields||[],a=i.select?.bind===`legend`,o=null;for(let e of n)if(Array.isArray(t[e])){o=t[e];break}if(!o||o.length===0)continue;let s=0;for(let e=0;e<o.length;e++){let t=o[e];if(st(t,r)||a&&ct(t,r)){s=e;break}}let c=o[s];c.params||=[],c.params.push(i),t.params=(t.params??[]).filter(t=>t.name!==e)}return Array.isArray(t.params)&&t.params.length===0&&delete t.params,t}function ot(e,t){if(!t||Object.keys(t).length===0)return e;let n=JSON.parse(JSON.stringify(e)),r=e=>{for(let n of e)n.name&&n.name in t&&(n.value=t[n.name])};Array.isArray(n.params)&&r(n.params);let i=e=>{if(Array.isArray(e)){for(let t of e)if(Array.isArray(t.params)&&r(t.params),t.vconcat&&i(t.vconcat),t.hconcat&&i(t.hconcat),t.concat&&i(t.concat),Array.isArray(t.layer))for(let e of t.layer)Array.isArray(e.params)&&r(e.params)}};if(n.vconcat&&i(n.vconcat),n.hconcat&&i(n.hconcat),n.concat&&i(n.concat),Array.isArray(n.layer))for(let e of n.layer)e&&Array.isArray(e.params)&&r(e.params);return n}function st(e,t){if(!e?.encoding)return!1;for(let n of t)for(let t of Object.values(e.encoding))if(t.field===n)return!0;if(Array.isArray(e.layer)){for(let n of e.layer)if(st(n,t))return!0}return!1}function ct(e,t){if(!e)return!1;let n=e=>{if(!e)return!1;let n=e.color?.field;return!!n&&t.includes(n)};if(n(e.encoding))return!0;if(Array.isArray(e.layer)){for(let t of e.layer)if(n(t.encoding))return!0}return!1}function lt(e,t=[]){let n=[];if(!e||typeof e!=`object`)return n;if(e.data&&typeof e.data==`object`){let r=e.data.url;typeof r==`string`&&r.startsWith(`artifact:`)&&n.push({path:[...t,`data`],artifactPath:r.replace(/^artifact:/,``).trim()})}for(let r of[`layer`,`vconcat`,`hconcat`,`concat`,`spec`,`repeat`,`facet`])if(r in e){let i=e[r];Array.isArray(i)?i.forEach((e,i)=>{it(e)&&n.push(...lt(e,[...t,r,String(i)]))}):it(i)&&n.push(...lt(i,[...t,r]))}return n}function ut(e,t){let n=JSON.parse(JSON.stringify(e));for(let[e,r]of t){let t=e.split(`.`),i=n;for(let e=0;e<t.length-1;e++){let n=i[t[e]];if(!rt(n))break;i=n}let a=t[t.length-1],o=i[a];rt(o)&&(delete o.url,o.values=r)}return n}function dt(e){let t={background:`transparent`,view:{stroke:`transparent`},range:{category:nt.categorical,diverging:nt.diverging,heatmap:nt.purples,ramp:nt.blues},mark:{tooltip:!0},bar:{tooltip:!0,cornerRadiusTopLeft:4,cornerRadiusTopRight:4},line:{tooltip:!0,strokeWidth:2.5,strokeCap:`round`},point:{tooltip:!0,size:60,filled:!0},area:{tooltip:!0,fillOpacity:.7,line:!0},rect:{tooltip:!0,cornerRadius:2},arc:{tooltip:!0,cornerRadius:4},circle:{tooltip:!0,size:80}};return e?{...t,axis:{labelColor:`#a1a1aa`,titleColor:`#e4e4e7`,gridColor:`#3f3f46`,domainColor:`#52525b`,tickColor:`#52525b`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,titleFontWeight:500},legend:{labelColor:`#a1a1aa`,titleColor:`#e4e4e7`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,symbolSize:100},title:{color:`#fafafa`,font:`Inter, system-ui, sans-serif`,fontSize:14,fontWeight:600}}:{...t,axis:{labelColor:`#71717a`,titleColor:`#3f3f46`,gridColor:`#e4e4e7`,domainColor:`#d4d4d8`,tickColor:`#d4d4d8`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,titleFontWeight:500},legend:{labelColor:`#71717a`,titleColor:`#3f3f46`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,symbolSize:100},title:{color:`#18181b`,font:`Inter, system-ui, sans-serif`,fontSize:14,fontWeight:600}}}const q=T(function({spec:r,artifactRunId:i}){let{t:a}=S(),{title:o,description:c,options:l}=r,u=r.spec,[d,f]=M(!1),[p,m]=M(!1),[h,g]=M(null),[_,v]=M(!1),y=j(null),b=j(null),x=j(null),{client:C}=P(),w=Ye(),T=j(C);T.current=C;let D=j(w);D.current=w;let[k,N]=M(null),[F,ee]=M(!1),[ne,I]=M(null),R=l?.mode||`chart`,z=R===`dashboard`,ie=l?.enableFullscreen??z,B=l?.height||tt(u,R);O(()=>{let e=lt(u);if(e.length===0){N(u),ee(!1),I(null);return}i?console.info(`[VegaLiteChart] resolving artifacts with runId:`,i,e.map(e=>e.artifactPath)):console.warn(`[VegaLiteChart] artifact references found but artifactRunId is missing!`,{references:e.map(e=>e.artifactPath),artifactRunId:i});let t=!1;return ee(!0),I(null),(async()=>{let n=new Map,r=T.current,a=D.current;for(let o of e)try{let e=o.path.join(`.`),t;if(i&&!Xe(o.artifactPath)){let e=Ze(i,o.artifactPath,`inline`);t=a?await a.getOrFetch(e,async()=>(await r.files.getArtifactDownloadUrl(i,o.artifactPath,`inline`)).url):(await r.files.getArtifactDownloadUrl(i,o.artifactPath,`inline`)).url}else{let e=Qe(o.artifactPath);t=a?await a.getOrFetch(e,async()=>(await r.files.getDownloadUrl(o.artifactPath)).url):(await r.files.getDownloadUrl(o.artifactPath)).url}let s=await fetch(t);if(!s.ok)throw Error(`Failed to fetch artifact data: ${s.statusText}`);let c=o.artifactPath.toLowerCase().endsWith(`.csv`),l;if(c){let e=await s.text();l=ve.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0}).data}else{let e=await s.json();l=Array.isArray(e)?e:[e]}n.set(e,l)}catch(e){console.error(`Failed to resolve artifact: ${o.artifactPath}`,e),t||I(`Failed to load data from artifact: ${o.artifactPath}`);return}if(!t){let e=ut(u,n);N(e),ee(!1)}})(),()=>{t=!0}},[u,i]);let[ae,oe]=M(!1),se=j(!1);O(()=>{let e=()=>{let e=document.documentElement.classList.contains(`dark`);e!==se.current&&(se.current=e,oe(e))};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let[V,H]=M(0),de=j(0);O(()=>{if(!x.current)return;let e,t=new ResizeObserver(t=>{clearTimeout(e),e=setTimeout(()=>{let e=t[0]?.contentRect.width;e&&e!==de.current&&(de.current=e,H(e))},100)});t.observe(x.current);let n=x.current.clientWidth;return de.current=n,H(n),()=>{clearTimeout(e),t.disconnect()}},[]);let fe=A(()=>lt(u).length>0,[u]),U=A(()=>{if(fe&&!k)return null;let e=k||u;return e?(l?.parameterValues&&(e=ot(e,l.parameterValues)),at(e)):null},[k,u,fe,l?.parameterValues]),W=E((e,t)=>{if(!e||typeof e!=`object`)return e;if(e.hconcat&&Array.isArray(e.hconcat)){let n=e.hconcat.length,r=(e.spacing??10)*(n-1),i=Math.floor((t-r)/n);return{...e,hconcat:e.hconcat.map(e=>W(e,i))}}if(e.vconcat&&Array.isArray(e.vconcat))return{...e,vconcat:e.vconcat.map(e=>W(e,t))};if(e.concat&&Array.isArray(e.concat)){let n=e.columns??e.concat.length,r=(e.spacing??10)*(n-1),i=Math.floor((t-r)/n);return{...e,concat:e.concat.map(e=>W(e,i))}}let n=e.width;return n===`container`||typeof n==`number`&&n>t?{...e,width:t}:e},[]),pe=E((e,t=!1)=>{if(!U)return null;let n=dt(ae),r=t?typeof window<`u`?Math.min(window.innerWidth-80,1400):1200:V>0?V-24:500,i=`vconcat`in U||`hconcat`in U||`concat`in U,a=i?{type:`pad`,contains:`padding`}:{type:`fit`,contains:`padding`},s=U;i&&r&&(s=W(U,r));let c=s.width,l=i?void 0:c===`container`?r:c??r,{width:u,...d}=s;return{$schema:`https://vega.github.io/schema/vega-lite/v6.json`,...!i&&l?{width:l}:{},height:t?void 0:e,autosize:a,...i?s:d,...o&&!U.title?{title:o}:{},config:{...n,...U.config}}},[U,o,ae,V,W]),me=E(async()=>{let e=_?b.current:y.current;if(!(!e||p))try{(await e.toCanvas(2)).toBlob(async e=>{e&&(await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),m(!0),setTimeout(()=>m(!1),2e3))},`image/png`)}catch(e){console.error(`Failed to copy chart:`,e)}},[p,_]),he=E(async()=>{let e=_?b.current:y.current;if(!(!e||d)){f(!0);try{let t=await e.toImageURL(`png`,2),n=document.createElement(`a`);n.download=`${o||`chart`}.png`,n.href=t,n.click()}catch(e){console.error(`Failed to export chart:`,e)}finally{f(!1)}}},[o,d,_]),ge=E(e=>{y.current=e,g(null)},[]),_e=E(e=>{b.current=e},[]),be=E(e=>{console.error(`Vega-Lite rendering error:`,e),g(e instanceof Error?e.message:`Unknown error`)},[]),xe=E(()=>{v(e=>!e)},[]);O(()=>{g(null)},[u]);let Se=({className:e})=>n(`div`,{className:qe(`flex items-center gap-2`,e),children:[n(s,{variant:`unstyled`,onClick:me,disabled:p,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 flex items-center gap-1`,title:a(`agent.copyToClipboard`),children:[t(p?te:re,{className:`w-3 h-3`}),a(p?`agent.copied`:`agent.copy`)]}),n(s,{variant:`unstyled`,onClick:he,disabled:d,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1`,title:a(`agent.exportAsPng`),children:[t(L,{className:`w-3 h-3`}),a(d?`agent.exporting`:`agent.export`)]}),ie&&n(s,{variant:`unstyled`,onClick:xe,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors flex items-center gap-1`,title:a(_?`agent.exitFullscreen`:`agent.fullscreen`),children:[t(_?ue:le,{className:`w-3 h-3`}),a(_?`agent.exit`:`agent.fullscreen`)]})]});if(F||fe&&!k)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{className:`flex items-center justify-center bg-gray-50 dark:bg-gray-800 rounded`,style:{width:`100%`,height:B},children:n(`div`,{className:`flex items-center gap-2 text-gray-500 dark:text-gray-400`,children:[t(ce,{className:`w-5 h-5 animate-spin`}),t(`span`,{className:`text-sm`,children:`Loading data from artifacts...`})]})})]})});if(ne)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{style:{width:`100%`,height:B},children:t($e,{error:ne,chartTitle:o})})]})});if(h)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{style:{width:`100%`,height:B},children:t($e,{error:h,chartTitle:o})})]})});let G=pe(B),Ce=pe(0,!0);return G?(typeof window<`u`&&localStorage.getItem(`DEBUG_VEGA_RENDERS`)&&console.log(`VegaLite rendering with spec:`,{title:o,hasData:!!G.data?.values,dataLength:G.data?.values?.length}),n(e,{children:[t(`div`,{className:qe(`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,z&&`border-2`),children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[n(`div`,{className:`flex items-center justify-between`,children:[n(`div`,{className:`flex items-center gap-2`,children:[t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||(z?`Dashboard`:`Chart`)}),z&&t(`span`,{className:`text-xs px-2 py-0.5 rounded-full bg-indigo-100 dark:bg-indigo-900 text-indigo-700 dark:text-indigo-300`,children:`Interactive`})]}),t(Se,{})]}),c&&t(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:c}),t(`div`,{ref:x,className:`bg-white dark:bg-gray-900 rounded overflow-hidden`,style:{width:`100%`,height:B,minWidth:0},children:t(ye,{spec:G,onEmbed:e=>ge(e.view),onError:be,options:{renderer:l?.renderer||`canvas`,actions:!1}})})]})}),n(et,{isOpen:_,onClose:()=>v(!1),title:o||(z?`Dashboard`:`Chart`),description:c,children:[t(`div`,{className:`w-full h-full min-h-[calc(100vh-200px)]`,children:Ce&&t(ye,{spec:Ce,onEmbed:e=>_e(e.view),onError:be,options:{renderer:l?.renderer||`canvas`,actions:!1}})}),t(`div`,{className:`absolute bottom-6 end-6`,children:t(Se,{className:`bg-white dark:bg-gray-800 rounded-lg shadow-lg p-2 border border-gray-200 dark:border-gray-700`})})]})]})):null},(e,t)=>JSON.stringify(e.spec)===JSON.stringify(t.spec)&&e.artifactRunId===t.artifactRunId),ft={chart:{icon:F,label:`chart`,defaultHeight:200},mermaid:{icon:z,label:`diagram`,defaultHeight:150},proposal:{icon:V,label:`options`,defaultHeight:100},code:{icon:I,label:`code`,defaultHeight:80},image:{icon:ie,label:`image`,defaultHeight:150},link:{icon:ae,label:`link`,defaultHeight:24},expand:{icon:L,label:`content`,defaultHeight:100},table:{icon:he,label:`table`,defaultHeight:150},markdown:{icon:R,label:`content`,defaultHeight:100},"fusion-fragment":{icon:I,label:`fragment`,defaultHeight:150}};function J({type:e,error:r,onRetry:i,message:a,height:o}){let c=ft[e],l=o??c.defaultHeight,u=e===`link`;if(r)return n(`div`,{className:`flex items-center gap-2 rounded border border-destructive/30 bg-destructive/5 text-destructive ${u?`inline-flex px-2 py-1 text-sm`:`p-4`}`,style:u?void 0:{minHeight:l},children:[n(`span`,{className:`text-destructive`,children:[`Failed to load `,c.label]}),i&&t(s,{variant:`unstyled`,onClick:i,className:`ms-2 rounded bg-destructive/10 px-2 py-1 text-xs hover:bg-destructive/20 transition-colors text-destructive`,children:`Retry`})]});let d=c.icon;return u?n(`span`,{className:`inline-flex items-center gap-1 text-muted animate-pulse`,children:[t(d,{className:`h-3 w-3`}),t(`span`,{children:a||`Loading ${c.label}...`})]}):n(`div`,{className:`flex flex-col items-center justify-center gap-3 rounded border border-border bg-muted/30 animate-pulse`,style:{minHeight:l},children:[t(d,{className:`h-8 w-8 text-muted`}),t(`span`,{className:`text-sm text-muted`,children:a||`Loading ${c.label}...`}),t(`div`,{className:`flex gap-1`,children:[...[,,,]].map((e,n)=>t(`div`,{className:`h-2 w-2 rounded-full bg-muted animate-bounce`,style:{animationDelay:`${n*150}ms`}},`dot-${n}`))})]})}var Y=class extends C.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`CodeBlock rendering error (${this.props.type}):`,e,t),this.props.onError?.(e)}handleRetry=()=>{this.setState({hasError:!1,error:void 0})};render(){if(this.state.hasError){let{type:e,fallbackCode:r}=this.props;return n(`div`,{className:`space-y-2`,children:[t(J,{type:e,error:this.state.error?.message||`Rendering failed`,onRetry:this.handleRetry}),r&&n(`details`,{className:`text-sm`,children:[t(`summary`,{className:`cursor-pointer text-muted hover:text-foreground`,children:`Show raw content`}),t(`pre`,{className:`mt-2 overflow-x-auto rounded bg-muted/50 p-2 text-xs`,children:t(`code`,{children:r})})]})]})}return this.props.children}};function pt(e,t,n){let r=t.split(`.`).pop()?.toLowerCase();if(r===`svg`)return`mockup`;if([`png`,`jpg`,`jpeg`,`gif`,`webp`].includes(r||``))return`image`;if(r===`md`)return`markdown`;if(r===`csv`)return`table`;if(n===`json`&&typeof e==`object`&&e){let t=e;if(typeof t.$schema==`string`&&t.$schema.includes(`vega`)||t.library===`vega-lite`&&`spec`in t)return`vega-lite`;if(`template`in t&&`data`in t)return`fusion-fragment`;if(Array.isArray(e)&&e.length>0&&typeof e[0]==`object`)return`table`}return`code`}function mt(e){if(typeof e!=`object`||!e)return null;let t=e;return t.library===`vega-lite`&&`spec`in t&&typeof t.spec==`object`&&t.spec!==null?t:typeof t.$schema==`string`&&t.$schema.includes(`vega`)?{library:`vega-lite`,spec:t}:null}function ht({content:e}){let{headers:r,rows:i}=A(()=>{if(!Array.isArray(e)||e.length===0)return{headers:[],rows:[]};let t=e[0];if(typeof t!=`object`||!t)return{headers:[],rows:[]};let n=Object.keys(t);return{headers:n,rows:e.map(e=>n.map(t=>{let n=e[t];return n==null?``:typeof n==`object`?JSON.stringify(n):String(n)}))}},[e]);return r.length===0?t(J,{type:`table`,error:`No table data found`}):n(`div`,{className:`overflow-x-auto`,children:[n(`table`,{className:`min-w-full text-sm border-collapse`,children:[t(`thead`,{children:t(`tr`,{className:`border-b`,children:r.map(e=>t(`th`,{className:`px-3 py-2 text-start font-medium text-muted`,children:e},e))})}),t(`tbody`,{children:i.slice(0,100).map((e,n)=>t(`tr`,{className:`border-b border-muted/20`,children:e.map((e,n)=>t(`td`,{className:`px-3 py-2`,children:e},`cell-${n}`))},`row-${n}`))})]}),i.length>100&&n(`div`,{className:`text-sm text-muted py-2`,children:[`Showing 100 of `,i.length,` rows`]})]})}function gt({content:e,path:n}){let r=n.split(`.`).pop()?.toLowerCase()||``,i=typeof e==`string`?e:JSON.stringify(e,null,2);return t(`pre`,{className:`overflow-x-auto p-3 bg-muted/10 rounded text-sm`,children:t(`code`,{className:`language-${r}`,children:i})})}function _t(e){return Ce.sanitize(e,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:[`use`],FORBID_TAGS:[`foreignObject`]})}function vt(e){return e.replace(/<svg([^>]*)>/i,(e,t)=>{let n=t;if(!/viewBox/i.test(n)){let e=/\swidth\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(n),t=/\sheight\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(n);e&&t&&(n+=` viewBox="0 0 ${e[1]} ${t[1]}"`)}return n=n.replace(/\swidth\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/i,``).replace(/\sheight\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/i,``),/style="/i.test(n)?n=n.replace(/style="([^"]*)"/i,(e,t)=>`style="${t};width:100%;height:auto;display:block;max-width:100%;"`):n+=` style="width:100%;height:auto;display:block;max-width:100%;"`,/preserveAspectRatio=/i.test(n)||(n+=` preserveAspectRatio="xMidYMid meet"`),`<svg${n}>`})}function yt({content:e}){let n=A(()=>{let t=typeof e==`string`?e.trim():``;return t?vt(_t(t)):null},[e]);return n?t(`div`,{style:{margin:`16px 0`,width:`100%`,overflowX:`auto`},dangerouslySetInnerHTML:{__html:n}}):t(J,{type:`expand`,error:`Empty mockup`})}function bt({content:e,path:n}){return t(`img`,{src:typeof e==`string`?e:``,alt:n.split(`/`).pop()||`Artifact image`,className:`max-w-full h-auto rounded`,loading:`lazy`})}function xt({content:e,renderType:n,path:r,runId:i,contentType:a}){let{MarkdownRenderer:o}=K();switch(A(()=>n===`auto`?pt(e,r,a):n,[e,r,a,n])){case`chart`:{let n=mt(e);return n?t(Y,{type:`chart`,fallbackCode:JSON.stringify(e,null,2),children:t(q,{spec:n,artifactRunId:i})}):t(J,{type:`chart`,error:`Only Vega-Lite charts are supported. Recharts rendering has been retired.`})}case`vega-lite`:{let n=mt(e);return n?t(Y,{type:`chart`,fallbackCode:JSON.stringify(e,null,2),children:t(q,{spec:n,artifactRunId:i})}):t(J,{type:`chart`,error:`Invalid Vega-Lite specification`})}case`fusion-fragment`:{let n=e;return console.log(`[ArtifactContentRenderer] fusion-fragment:`,{hasTemplate:!!n.template,hasData:!!n.data,runId:i,hasVegaLiteChart:!!q}),n.template&&n.data?t(Y,{type:`fusion-fragment`,fallbackCode:JSON.stringify(e,null,2),children:t(G,{data:n.data,ChartComponent:q,artifactRunId:i,children:t(Se,{code:JSON.stringify(n.template),data:n.data})})}):t(Y,{type:`fusion-fragment`,fallbackCode:JSON.stringify(e,null,2),children:t(Se,{code:JSON.stringify(e)})})}case`table`:return t(Y,{type:`table`,fallbackCode:JSON.stringify(e,null,2),children:t(ht,{content:e})});case`markdown`:{let n=typeof e==`string`?e:String(e);return t(Y,{type:`markdown`,fallbackCode:n,children:o?t(o,{artifactRunId:i,children:n}):t(`pre`,{className:`overflow-x-auto p-3 bg-muted/10 rounded text-sm`,children:t(`code`,{children:n})})})}case`mockup`:return t(Y,{type:`expand`,fallbackCode:typeof e==`string`?e:r,children:t(yt,{content:e})});case`image`:return t(Y,{type:`image`,fallbackCode:r,children:t(bt,{content:e,path:r})});default:return t(gt,{content:e,path:r})}}const St=`Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`;function Ct(e){let t=e.trim(),n=``,r=!1,i=!1;for(let e=0;e<t.length;e++){let a=t[e],o=e>0?t[e-1]:``;if(a===`"`&&!i&&o!==`\\`){r=!r,n+=a;continue}if(a===`'`&&!r&&o!==`\\`){i=!i,n+=a;continue}if((r||i)&&a===`\\`){let r=e;for(;t[r]===`\\`;)r++;if(t[r]===`n`){n+=`<br/>`,e=r;continue}}n+=a}return n}function wt(e){return e.replace(/<svg([^<>]*)>/i,(e,t)=>{let n=t.replace(/\swidth="[^"]*"/i,``).replace(/\sheight="[^"]*"/i,``);return/style="/i.test(n)?n=n.replace(/style="([^"]*)"/i,(e,t)=>`style="${t};width:100%;height:auto;display:block;max-width:100%;"`):n+=` style="width:100%;height:auto;display:block;max-width:100%;"`,/preserveAspectRatio=/i.test(n)||(n+=` preserveAspectRatio="xMidYMid meet"`),`<svg${n}>`})}we.initialize({startOnLoad:!1,theme:`default`,securityLevel:`loose`,fontFamily:St,suppressErrorRendering:!0,flowchart:{htmlLabels:!0,useMaxWidth:!0,nodeSpacing:40,rankSpacing:50,padding:12},sequence:{useMaxWidth:!0},themeVariables:{fontFamily:St}});function Tt({code:e,className:n}){let r=j(null),[i,a]=M(null),[o,s]=M(null),c=k().replace(/:/g,`_`);return O(()=>{let t=!1;return(async()=>{if(!e.trim()){a(null),s(null);return}try{s(null);let n=`mermaid-${c}-${Date.now()}`,r=Ct(e),{svg:i}=await we.render(n,r),o=wt(i);t||a(o)}catch(e){if(!t){let t=e instanceof Error?e.message:`Failed to render mermaid diagram`;s(t),a(null)}}})(),()=>{t=!0}},[e,c]),o?null:i?t(`div`,{ref:r,className:`my-4 w-full overflow-x-auto [&_svg]:mx-auto [&_svg]:w-full [&_svg]:h-auto [&_svg]:max-w-full ${n||``}`,dangerouslySetInnerHTML:{__html:i}}):t(`div`,{className:`my-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg animate-pulse ${n||``}`,children:t(`div`,{className:`h-32 bg-gray-200 dark:bg-gray-700 rounded`})})}function Et(e){switch(e.split(`.`).pop()?.toLowerCase()){case`json`:return`json`;case`md`:case`txt`:case`csv`:case`yaml`:case`yml`:return`text`;case`png`:case`jpg`:case`jpeg`:case`gif`:case`webp`:case`pdf`:return`binary`;default:return`text`}}function Dt({runId:e,path:t,parseJson:n=!0}){let{client:r}=P(),i=Ye(),a=j(r);a.current=r;let o=j(i);o.current=i;let[s,c]=M({data:void 0,rawContent:void 0,isLoading:!0,error:void 0,contentType:void 0}),l=E(async()=>{if(!e){c({data:void 0,rawContent:void 0,isLoading:!1,error:`No run ID provided`,contentType:void 0});return}if(!t){c({data:void 0,rawContent:void 0,isLoading:!1,error:`No artifact path provided`,contentType:void 0});return}c(e=>({...e,isLoading:!0,error:void 0}));let r=a.current,i=o.current,s=Et(t);try{let a=Ze(e,t,`inline`),o;o=i?await i.getOrFetch(a,async()=>(await r.files.getArtifactDownloadUrl(e,t,`inline`)).url):(await r.files.getArtifactDownloadUrl(e,t,`inline`)).url;let l=await fetch(o);if(!l.ok)throw Error(`Failed to fetch artifact: ${l.status} ${l.statusText}`);if(s===`binary`){c({data:o,rawContent:void 0,isLoading:!1,error:void 0,contentType:s,etag:l.headers.get(`etag`)?.replace(/^"(.*)"$/,`$1`)});return}let u=await l.text(),d;if(n&&s===`json`)try{d=JSON.parse(u)}catch{d=u}else d=u;c({data:d,rawContent:u,isLoading:!1,error:void 0,contentType:s,etag:l.headers.get(`etag`)?.replace(/^"(.*)"$/,`$1`)})}catch(e){let n=e instanceof Error?e.message:`Failed to fetch artifact`;console.error(`Failed to fetch artifact content:`,t,e),c({data:void 0,rawContent:void 0,isLoading:!1,error:n,contentType:s})}},[e,t,n]);O(()=>{l()},[l]);let u=E(()=>{c({data:void 0,rawContent:void 0,isLoading:!0,error:void 0,contentType:void 0}),l()},[l]);return{data:s.data,rawContent:s.rawContent,isLoading:s.isLoading,error:s.error,contentType:s.contentType,etag:s.etag,retry:u}}function Ot(e){let t=e.trim();if(t.length<2)return!0;if(!t.startsWith(`{`))return!1;try{return JSON.parse(t),!1}catch(e){let n=e instanceof Error?e.message:``,r=[`unexpected end`,`unterminated string`,`expected`,`unexpected token`],i=n.toLowerCase();if(r.some(e=>i.includes(e))){let e=0,n=0,r=!1,i=!1;for(let a of t){if(i){i=!1;continue}if(a===`\\`){i=!0;continue}if(a===`"`){r=!r;continue}r||(a===`{`?e++:a===`}`?e--:a===`[`?n++:a===`]`&&n--)}return e>0||n>0||r}return!1}}function kt(e){try{let t=e.trim(),n=t.indexOf(`{`),r=t.lastIndexOf(`}`);return n!==-1&&r>n&&(t=t.slice(n,r+1)),JSON.parse(t)}catch{return null}}function At(e){let t=typeof e.$schema==`string`&&e.$schema.includes(`vega`),n=e.library===`vega-lite`&&`spec`in e;return t||n?`vega-lite`:null}function jt({code:e}){let{artifactRunId:n}=K();n||console.warn(`[VegaLiteCodeBlockHandler] artifactRunId is missing from CodeBlockContext`);let r=A(()=>Ot(e),[e]),i=A(()=>{if(r)return null;let t=kt(e);return t?{library:`vega-lite`,spec:t}:null},[e,r]);return r?t(J,{type:`chart`,message:`Loading chart...`}):i?t(Y,{type:`chart`,fallbackCode:e,children:t(q,{spec:i,artifactRunId:n})}):t(J,{type:`chart`,error:`Invalid Vega-Lite specification`})}function Mt({code:e}){let{artifactRunId:n}=K();n||console.warn(`[ChartCodeBlockHandler] artifactRunId is missing from CodeBlockContext`);let r=A(()=>Ot(e),[e]),i=A(()=>{if(r)return null;let t=kt(e);return!t||!At(t)?null:t.library===`vega-lite`&&`spec`in t&&typeof t.spec==`object`?t:{library:`vega-lite`,spec:t}},[e,r]);return r?t(J,{type:`chart`,message:`Loading chart...`}):i?t(Y,{type:`chart`,fallbackCode:e,children:t(q,{spec:i,artifactRunId:n})}):t(J,{type:`chart`,error:`Invalid Vega-Lite chart specification`})}function Nt({code:e}){let n=e.trim();return n?t(Y,{type:`mermaid`,fallbackCode:e,children:t(Tt,{code:n})}):t(J,{type:`mermaid`,error:`Empty diagram`})}function Pt({code:e}){let n=A(()=>{let t=e.trim();return t?vt(_t(t)):null},[e]);return n?t(Y,{type:`code`,fallbackCode:e,children:t(`div`,{style:{margin:`16px 0`,width:`100%`,overflowX:`auto`},dangerouslySetInnerHTML:{__html:n}})}):t(J,{type:`code`,error:`Empty mockup`})}function Ft({code:e,language:n}){let{artifactRunId:r}=K(),i=e.trim(),a=A(()=>{if(!n?.includes(`:`))return`auto`;let e=n.split(`:`)[1];return[`chart`,`vega-lite`,`table`,`markdown`,`fusion-fragment`,`mockup`,`code`,`image`,`auto`].includes(e)?e:`auto`},[n]),{data:o,isLoading:s,error:c,contentType:l}=Dt({runId:r,path:i});return r?s?t(J,{type:`expand`,message:`Loading ${i}...`}):c?t(J,{type:`expand`,error:`Failed to load artifact: ${c}`}):o===void 0?t(J,{type:`expand`,error:`No content found in artifact`}):t(xt,{content:o,renderType:a,path:i,runId:r,contentType:l}):t(J,{type:`expand`,error:`No artifact run ID available`})}function It(e){return e?.startsWith(`expand`)??!1}function Lt(){return{chart:Mt,"vega-lite":jt,vegalite:jt,mermaid:Nt,mockup:Pt,svg:Pt}}const Rt=new Set([`store`,`document`,`collection`,`interaction`,`prompt`,`agent`,`workflow`,`process`,`run`]);function zt(e){return e.trim().replace(/^\/+/,``)}function Bt(e){if(e.startsWith(`artifact:`))return{scheme:`artifact`,path:e.slice(9).trim()};if(e.startsWith(`image:`))return{scheme:`image`,path:e.slice(6).trim()};let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);if(Rt.has(n))return{scheme:n,path:zt(e.slice(t+1))}}return{scheme:`standard`,path:e}}function Vt({rawUrl:e,artifactRunId:t,disposition:n=`inline`}){let{client:r}=P(),i=Ye(),a=j(r);a.current=r;let o=j(i);o.current=i;let{scheme:s,path:c}=Bt(e),[l,u]=M(()=>{if(s===`standard`)return{url:e,isLoading:!1,error:void 0};if(i&&(s===`artifact`||s===`image`)){let e;e=s===`artifact`&&t&&!Xe(c)?Ze(t,c,n):Qe(c);let r=i.getUrl(e);if(r)return{url:r,isLoading:!1,error:void 0}}return{url:void 0,isLoading:!0,error:void 0}}),d=E(async()=>{if(s===`standard`)return;if(s!==`artifact`&&s!==`image`){u({url:void 0,isLoading:!1,error:`Unknown scheme: ${s}`});return}u(e=>({...e,isLoading:!0,error:void 0}));let e=a.current,r=o.current;try{let i;if(s===`artifact`)if(t&&!Xe(c)){let a=Ze(t,c,n);i=r?await r.getOrFetch(a,async()=>(await e.files.getArtifactDownloadUrl(t,c,n)).url):(await e.files.getArtifactDownloadUrl(t,c,n)).url}else{let t=Qe(c);i=r?await r.getOrFetch(t,async()=>(await e.files.getDownloadUrl(c)).url):(await e.files.getDownloadUrl(c)).url}else{let t=Qe(c);i=r?await r.getOrFetch(t,async()=>(await e.files.getDownloadUrl(c)).url):(await e.files.getDownloadUrl(c)).url}u({url:i,isLoading:!1,error:void 0})}catch(e){let t=e instanceof Error?e.message:`Failed to resolve URL`;console.error(`Failed to resolve URL:`,c,e),u({url:void 0,isLoading:!1,error:t})}},[s,c,t,n]);O(()=>{if(l.url&&!l.error)return;let e=!1;return e||(async()=>{await d()})(),()=>{e=!0}},[d,l.url,l.error]);let f=E(()=>{u({url:void 0,isLoading:!0,error:void 0}),d()},[d]);return{url:l.url,isLoading:l.isLoading,error:l.error,scheme:s,retry:f}}function Ht({src:e,alt:r,caption:i,className:a,artifactRunId:o}){let s=e||``,{scheme:c}=Bt(s);return c===`standard`?n(`figure`,{className:`my-4`,children:[t(`img`,{src:e,alt:r,className:a}),t(`figcaption`,{className:`mt-2 text-sm text-muted text-center italic`,children:i})]}):t(Ut,{rawSrc:s,alt:r,caption:i,artifactRunId:o,className:a})}function Ut({rawSrc:e,alt:r,caption:i,artifactRunId:a,className:o}){let{url:s,isLoading:c,error:l,retry:u}=Vt({rawUrl:e,artifactRunId:a,disposition:`inline`});return c?t(J,{type:`image`,message:r?`Loading ${r}...`:void 0}):l?t(J,{type:`image`,error:l,onRetry:u}):s?n(`figure`,{className:`my-4`,children:[t(`img`,{src:s,alt:r,className:o}),t(`figcaption`,{className:`mt-2 text-sm text-muted text-center italic`,children:i})]}):null}function Wt({node:e,src:n,alt:r,className:i,artifactRunId:a,ExistingImg:o,...s}){let c=n||``,{scheme:l}=Bt(c);return l===`standard`?typeof o==`function`?t(o,{node:e,src:n,alt:r,...s}):t(`img`,{src:n,alt:r,className:i,...s}):t(Gt,{rawSrc:c,alt:r,artifactRunId:a,className:i,rest:s})}function Gt({rawSrc:e,alt:n,artifactRunId:r,className:i,rest:a}){let{url:o,isLoading:s,error:c,retry:l}=Vt({rawUrl:e,artifactRunId:r,disposition:`inline`});return s?t(J,{type:`image`,message:n?`Loading ${n}...`:void 0}):c?t(J,{type:`image`,error:c,onRetry:l}):o?t(`img`,{src:o,alt:n,className:i,...a}):null}const Kt=w(()=>({kind:`none`}));Kt.Provider;function qt(){return D(Kt)}const Jt={store:`document`,document:`document`,collection:`collection`,interaction:`interaction`,prompt:`prompt`,agent:`agent`,workflow:`workflow`,process:`process`,run:`interaction_run`};function Yt(e){let t=e.indexOf(`:`);if(t<=0)return;let n=e.slice(0,t);if(!Object.hasOwn(Jt,n))return;let r=e.slice(t+1).trim().replace(/^\/+/,``);if(r)return{type:Jt[n],id:r}}function Xt({node:e,href:n,children:r,className:i,artifactRunId:a,onArtifactOpen:o,ExistingLink:s,...c}){let l=n||``,u=Yt(l);if(u)return t(Zt,{resource:u,rawHref:l,artifactRunId:a,className:i,ExistingLink:s,rest:c,children:r});let{scheme:d,path:f}=Bt(l);return d===`standard`?typeof s==`function`?t(s,{node:e,href:n,className:i,...c,children:r}):t(`a`,{href:n,...c,className:i,target:`_blank`,rel:`noopener noreferrer`,children:r}):t(Qt,{rawHref:l,artifactRunId:a,artifactPath:d===`artifact`?f:void 0,onArtifactOpen:o,className:i,rest:c,children:r})}function Zt({resource:e,rawHref:n,artifactRunId:r,className:i,children:a,ExistingLink:o,rest:c}){let l=qt()(e,{workflowRunId:r,source:`markdown`,rawHref:n});return l.kind===`navigate`?typeof o==`function`?t(o,{href:l.href,className:i,...c,children:a}):t(`a`,{href:l.href,...c,className:i,target:`_blank`,rel:`noopener noreferrer`,children:a}):l.kind===`activate`?t(s,{variant:`link`,size:`none`,className:i,onClick:l.onActivate,children:a}):t(`span`,{className:i,children:a})}function Qt({rawHref:e,artifactRunId:n,artifactPath:r,onArtifactOpen:i,className:a,children:o,rest:s}){let{url:c,isLoading:l,error:u,retry:d}=Vt({rawUrl:e,artifactRunId:n,disposition:`attachment`});return l?t(`span`,{className:`inline-flex items-center gap-1 text-muted`,children:t(J,{type:`link`})}):u?t(`span`,{className:`inline-flex items-center gap-1`,children:t(J,{type:`link`,error:u,onRetry:d})}):t(`a`,{href:c||`#`,...s,className:a,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>{r&&/\.md$/i.test(r)&&i&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&e.button===0&&(e.preventDefault(),i(r))},children:o})}const $t=[`artifact:`,`image:`,`store:`,`document://`,`collection:`,`interaction:`,`prompt:`,`agent:`,`workflow:`,`process:`,`run:`],en=/(!?\[[^[\]\n]*\]\()((?:artifact:|image:|store:|document:\/\/|collection:|interaction:|prompt:|agent:|workflow:|process:|run:)[^)[\n]+)(\))/g,tn=/`[^`\n]*`/g,nn=/(^|\n)(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n\2(?=\n|$)/g,rn=/\s+("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\([^)]*\))\s*$/;function an(e){return $t.some(t=>e.startsWith(t))}function on(e){let t=e.trim();if(t.startsWith(`<`)){let n=t.indexOf(`>`);if(n>0&&an(t.slice(1,n).trim()))return e}let n=t.match(rn)?.index??-1,r=(n>=0?t.slice(0,n):t).trim(),i=n>=0?t.slice(n):``;return an(r)?`<${r}>${i}`:e}function sn(e){return e.replace(en,(e,t,n,r)=>`${t}${on(n)}${r}`)}function cn(e){let t=``,n=0;for(let r of e.matchAll(tn))t+=sn(e.slice(n,r.index)),t+=r[0],n=r.index+r[0].length;return t+=sn(e.slice(n)),t}function ln(e){if(!e||!$t.some(t=>e.includes(t)))return e;let t=``,n=0;for(let r of e.matchAll(nn))t+=cn(e.slice(n,r.index)),t+=r[0],n=r.index+r[0].length;return t+=cn(e.slice(n)),t}const un=/^([ \t]*):::([^\n]*?):::[ \t]*$/gm,dn=/^\w+/;function fn(e){return e?.includes(`:::`)?e.replace(un,(e,t,n)=>{let r=n.trim(),i=dn.exec(r);if(!i)return e;let a=i[0],o=r.slice(a.length).trim();return o?`${t}:::${a}\n${t}${o}\n${t}:::`:`${t}::${a}`}):e}const pn=/(^|\n)(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n\2(?=\n|$)/g,mn=/`[^`\n]*`/g,hn=/\\\$/g,gn=/\\[^\s]/,_n=/[{}]/,vn=/[_^][\w{]/,yn=/^[a-zA-Z]$/,bn=/^[a-zA-Z]\s*=/,xn=/^\s/,Sn=/\s$/,Cn=/[+*/-]$/,wn=/\^[+-]$/;function Tn(e){return gn.test(e)||_n.test(e)||vn.test(e)||yn.test(e)||bn.test(e)}function En(e){return!!(xn.test(e)||Sn.test(e)||Cn.test(e)&&!wn.test(e))}function Dn(e){let t=[];for(let n=0;n<e.length;n++)if(e[n]===`$`&&!(n>0&&e[n-1]===`\\`)){if(n+1<e.length&&e[n+1]===`$`){n++;continue}n>0&&e[n-1]===`$`&&(n<2||e[n-2]!==`\\`)||t.push(n)}return t}function On(e,t,n){let r=e.slice(t+1,n);return r.length===0||r.includes(`
|
|
2
|
-
`)?null:r}function
|
|
3
|
-
`,` `).trim();if(!r)return null;let i=e.state.doc.resolve(t),a=`paragraph`;for(let e=i.depth;e>=0;e--){let t=i.node(e).type.name;if(t===`heading`){a=`heading`;break}if(t===`codeBlock`||t===`vertesiaCodeBlock`){a=`code block`;break}if(t===`blockquote`){a=`quote`;break}if(t===`listItem`||t===`taskItem`){a=`list item`;break}if(t===`table`){a=`table`;break}}return{blockLabel:a,quote:r,from:t,to:n}}function
|
|
4
|
-
`)}function Wn(e,t){return{contextElement:e.view.dom,getBoundingClientRect:()=>{try{let n=e.view.coordsAtPos(t.to),r=Math.max(1,n.bottom-n.top);return new DOMRect(n.right,n.top,1,r)}catch{return e.view.dom.getBoundingClientRect()}}}}function Gn({editor:e,selection:r,composing:i,draft:a,onStart:o,onDraftChange:c,onCancel:l,onAdd:u}){let{t:d}=S(),f=b(),{refs:p,floatingStyles:m}=He({placement:`right-start`,strategy:`fixed`,middleware:[Be(8),ze({fallbackPlacements:[`left-start`,`bottom-start`]}),Ve({padding:12})],whileElementsMounted:Re}),h=A(()=>Wn(e,r),[e,r]);return O(()=>{p.setPositionReference(h)},[h,p]),t(Le,{root:f,children:t(`div`,{ref:p.setFloating,style:m,className:`pointer-events-auto z-100`,children:i?n(`div`,{role:`dialog`,"aria-label":d(`agent.commentOnSelection`),className:`w-80 max-w-[calc(100vw-1.5rem)] space-y-2 rounded-lg border border-mixer-muted/25 bg-popover p-3 text-popover-foreground shadow-lg`,children:[n(`div`,{className:`line-clamp-2 text-xs text-muted`,children:[t(`span`,{className:`font-medium text-foreground`,children:d(`agent.commentingOn`)}),` `,n(`span`,{className:`italic`,children:[`“`,r.quote,`”`]})]}),t(_,{value:a,onChange:e=>c(e.target.value),placeholder:d(`agent.commentOnSelectionPlaceholder`),rows:3,autoFocus:!0,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),l();return}e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u())}}),n(`div`,{className:`flex justify-end gap-2`,children:[t(s,{variant:`outline`,size:`sm`,onClick:l,children:d(`store.cancelEdit`)}),t(s,{size:`sm`,onClick:u,disabled:!a.trim(),children:d(`agent.addComment`)})]})]}):t(v,{description:d(`agent.commentOnSelection`),asChild:!0,children:t(s,{variant:`secondary`,size:`sm`,onMouseDown:Q,onClick:o,"aria-label":d(`agent.commentOnSelection`),className:`size-9 rounded-full p-0 shadow-md`,children:t(H,{className:`size-4`})})})})})}function $({icon:e,label:n,active:r=!1,disabled:i=!1,onClick:a}){return t(s,{variant:`ghost`,size:`sm`,"aria-label":n,title:n,"aria-pressed":r,disabled:i,onMouseDown:Q,onClick:a,className:y(`size-8 shrink-0 rounded-md p-0 text-foreground hover:bg-muted/60`,r&&`bg-muted text-foreground`),children:t(e,{className:`size-4`})})}function Kn(){return t(`div`,{className:`mx-0.5 h-5 w-px shrink-0 bg-mixer-muted/30`,"aria-hidden":!0})}function qn({onSend:e,hasUnsentChanges:r,isSending:i,disabled:a}){let{t:o}=S();return n(s,{variant:r?`primary`:`ghost`,size:`sm`,className:y(`h-8 gap-1.5`,!r&&`text-muted`),onMouseDown:Q,onClick:()=>void e(),disabled:a||!r||i,children:[i?t(g,{size:`sm`}):t(W,{className:`size-3.5`}),o(`agent.sendChangesToAgent`)]})}function Jn({editor:r,className:i,editable:a=!0,onSendComment:o,onSendChangesToAgent:f,hasUnsentChanges:p=!1,isSendingChanges:m=!1,sendChangesDisabled:h=!1,toolbarStatus:g}){let{t:_}=S(),v=x();Bn(r);let[b,C]=M(!1),[w,T]=M(``),[D,k]=M(null),[A,N]=M(null),[P,F]=M([]),[te,re]=M(!1),[L,R]=M(!1),z=j(null);O(()=>{if(!r||!o)return;let e=()=>{let e=Hn(r);N(e),e&&(z.current=e)};return e(),r.on(`selectionUpdate`,e),r.on(`transaction`,e),()=>{r.off(`selectionUpdate`,e),r.off(`transaction`,e)}},[r,o]);let ie=E(()=>{let e=z.current;if(!e){v({status:`info`,title:_(`agent.selectTextToComment`),duration:2500});return}k(e),T(``),C(!0)},[_,v]),ae=E(()=>{C(!1),k(null),T(``)},[]),ce=E(()=>{let e=w.trim();!D||!e||(F(t=>[...t,{id:Vn(),...D,comment:e}]),C(!1),k(null),T(``),re(!0))},[w,D]),le=E(e=>{F(t=>t.filter(t=>t.id!==e))},[]),V=E(async()=>{if(!(!o||P.length===0||L)){R(!0);try{await o(Un(P)),F([]),re(!1)}finally{R(!1)}}},[L,o,P]);if(!r)return null;let H=[1,2,3].find(e=>r.isActive(`heading`,{level:e})),ue=_(H===1?`richText.heading1`:H===2?`richText.heading2`:H===3?`richText.heading3`:`richText.paragraph`),ve=r.isActive(`table`),ye=D??A;return n(e,{children:[n(`div`,{role:`toolbar`,"aria-label":_(`richText.blockStyle`),className:y(`flex min-h-10 shrink-0 items-center gap-0.5 overflow-x-auto border-b border-mixer-muted/25 px-1.5 py-1`,i),children:[t($,{icon:ge,label:_(`richText.undo`),disabled:!a||!zn(r).focus().undo().run(),onClick:()=>Z(r).focus().undo().run()}),t($,{icon:U,label:_(`richText.redo`),disabled:!a||!zn(r).focus().redo().run(),onClick:()=>Z(r).focus().redo().run()}),t(Kn,{}),n(c,{children:[t(d,{asChild:!0,children:n(s,{variant:`ghost`,size:`sm`,disabled:!a,onMouseDown:Q,className:`h-8 shrink-0 gap-1 px-2 text-xs font-medium text-foreground hover:bg-muted/60`,children:[ue,t(ne,{className:`size-3 opacity-60`})]})}),n(l,{align:`start`,children:[t(u,{onClick:()=>Z(r).focus().setParagraph().run(),children:_(`richText.paragraph`)}),t(u,{onClick:()=>Z(r).focus().setHeading({level:1}).run(),children:_(`richText.heading1`)}),t(u,{onClick:()=>Z(r).focus().setHeading({level:2}).run(),children:_(`richText.heading2`)}),t(u,{onClick:()=>Z(r).focus().setHeading({level:3}).run(),children:_(`richText.heading3`)})]})]}),t(Kn,{}),t($,{icon:ee,label:_(`richText.bold`),active:r.isActive(`bold`),disabled:!a,onClick:()=>Z(r).focus().toggleBold().run()}),t($,{icon:B,label:_(`richText.italic`),active:r.isActive(`italic`),disabled:!a,onClick:()=>Z(r).focus().toggleItalic().run()}),t($,{icon:me,label:_(`richText.strike`),active:r.isActive(`strike`),disabled:!a,onClick:()=>Z(r).focus().toggleStrike().run()}),t($,{icon:I,label:_(`richText.inlineCode`),active:r.isActive(`code`),disabled:!a,onClick:()=>Z(r).focus().toggleCode().run()}),t(Kn,{}),t($,{icon:oe,label:_(`richText.bulletList`),active:r.isActive(`bulletList`),disabled:!a,onClick:()=>Z(r).focus().toggleBulletList().run()}),t($,{icon:se,label:_(`richText.orderedList`),active:r.isActive(`orderedList`),disabled:!a,onClick:()=>Z(r).focus().toggleOrderedList().run()}),t($,{icon:fe,label:_(`richText.blockquote`),active:r.isActive(`blockquote`),disabled:!a,onClick:()=>Z(r).focus().toggleBlockquote().run()}),t($,{icon:pe,label:_(`richText.codeBlock`),active:r.isActive(`codeBlock`),disabled:!a,onClick:()=>Z(r).focus().toggleCodeBlock().run()}),t(Kn,{}),t($,{icon:de,label:_(`richText.horizontalRule`),disabled:!a,onClick:()=>Z(r).focus().setHorizontalRule().run()}),n(c,{children:[t(d,{asChild:!0,children:t(s,{variant:`ghost`,size:`sm`,disabled:!a,"aria-label":_(`richText.tableActions`),title:_(ve?`richText.tableActions`:`richText.table`),onMouseDown:Q,className:y(`size-8 shrink-0 rounded-md p-0 text-foreground hover:bg-muted/60`,ve&&`bg-muted`),children:t(he,{className:`size-4`})})}),t(l,{align:`start`,children:ve?n(e,{children:[t(u,{onClick:()=>Z(r).focus().addRowBefore().run(),children:_(`richText.addRowAbove`)}),t(u,{onClick:()=>Z(r).focus().addRowAfter().run(),children:_(`richText.addRowBelow`)}),t(u,{onClick:()=>Z(r).focus().deleteRow().run(),children:_(`richText.deleteRow`)}),t(u,{onClick:()=>Z(r).focus().addColumnBefore().run(),children:_(`richText.addColumnLeft`)}),t(u,{onClick:()=>Z(r).focus().addColumnAfter().run(),children:_(`richText.addColumnRight`)}),t(u,{onClick:()=>Z(r).focus().deleteColumn().run(),children:_(`richText.deleteColumn`)}),t(u,{onClick:()=>Z(r).focus().deleteTable().run(),children:_(`richText.deleteTable`)})]}):t(u,{onClick:()=>Z(r).focus().insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),children:_(`richText.table`)})})]}),o||f?n(`div`,{className:`ms-auto flex shrink-0 items-center gap-1 ps-1`,children:[P.length>0?n(e,{children:[n(s,{variant:`ghost`,size:`sm`,className:`h-8 px-2 text-xs text-muted`,onClick:()=>re(e=>!e),children:[_(`agent.comments`),` (`,P.length,`)`]}),n(s,{size:`sm`,className:`h-8`,onClick:()=>void V(),disabled:L,children:[t(W,{className:`me-1 size-4`}),_(`agent.sendToAgent`)]})]}):null,f?n(e,{children:[g,t(qn,{onSend:f,hasUnsentChanges:p,isSending:m,disabled:h})]}):null]}):null]}),o&&ye?t(Gn,{editor:r,selection:ye,composing:b,draft:w,onStart:ie,onDraftChange:T,onCancel:ae,onAdd:ce}):null,te&&P.length>0?t(`ul`,{className:`max-h-48 shrink-0 space-y-1.5 overflow-y-auto border-b border-mixer-muted/15 px-3 py-2`,children:P.map(e=>n(`li`,{className:`flex items-start gap-2 rounded-md border border-mixer-muted/20 bg-muted/10 px-2 py-1.5`,children:[n(`div`,{className:`min-w-0 flex-1`,children:[n(`div`,{className:`truncate text-[11px] italic text-muted`,children:[`“`,e.quote,`”`]}),t(`div`,{className:`whitespace-pre-wrap text-xs text-foreground`,children:e.comment})]}),t(s,{variant:`ghost`,size:`sm`,"aria-label":_(`agent.deleteComment`),title:_(`agent.deleteComment`),className:`size-6 shrink-0 p-0 text-muted`,onClick:()=>le(e.id),children:t(_e,{className:`size-3.5`})})]},e.id))}):null]})}const Yn=Lt();function Xn({code:e,language:n}){let r=Ke(),i=n?r?.getComponent(n):void 0,a=n?Yn[n]:void 0,o=n?.startsWith(`expand:`)?Ft:i??a;return o?t(o,{code:e,language:n}):null}function Zn({src:e,alt:n,title:r}){let{artifactRunId:i}=K();return r?t(Ht,{src:e,alt:n,caption:r,artifactRunId:i}):t(Wt,{src:e,alt:n,artifactRunId:i})}function Qn({href:e,title:n,children:r}){let{artifactRunId:i}=K();return t(Xt,{href:e,artifactRunId:i,children:t(`span`,{title:n,children:r})})}function $n({raw:e}){let{artifactRunId:n}=K();return t(X,{artifactRunId:n,children:e})}const er={codeBlock:Xn,image:Zn,link:Qn,opaqueBlock:$n};function tr({artifactRunId:e,...n}){return t(We,{artifactRunId:e,MarkdownRenderer:X,children:t(a,{...n,...er})})}function nr({artifactRunId:e,className:i,contentClassName:a,editorClassName:o,onEditor:s,...c}){let[l,u]=M(null),d=E(e=>{u(e),s?.(e)},[s]);return t(We,{artifactRunId:e,MarkdownRenderer:X,children:n(`div`,{className:y(`overflow-hidden rounded-md border border-mixer-muted/30 bg-background`,i),children:[t(Jn,{editor:l,editable:c.editable!==!1}),t(r,{...c,...er,onEditor:d,contentClassName:y(`max-h-80 overflow-auto`,a),editorClassName:y(`vprose prose-sm min-h-24 max-w-none px-3 py-2 outline-none`,o)})]})})}function rr({artifactRunId:e,className:r,contentClassName:a,editorClassName:c,onEditor:l,onSendComment:u,onSendChangesToAgent:d,hasUnsentChanges:g=!1,isSendingChanges:v=!1,sendChangesDisabled:b=!1,toolbarStatus:x,...C}){let{t:w}=S(),[T,D]=M(null),O=E(e=>{D(e),l?.(e)},[l]),[k,A]=M(()=>o(C.value)===`lossy`?`choose`:`rich-text`);return n(We,{artifactRunId:e,MarkdownRenderer:X,children:[(k===`choose`?`source`:k)===`rich-text`?n(`div`,{className:y(`flex h-full min-h-0 flex-col bg-background`,r),children:[t(Jn,{editor:T,editable:C.editable!==!1,onSendComment:u,onSendChangesToAgent:d,hasUnsentChanges:g,isSendingChanges:v,sendChangesDisabled:b,toolbarStatus:x}),t(i,{...C,...er,onEditor:O,ariaLabel:C.ariaLabel??w(`richText.documentEditor`),className:`flex min-h-0 flex-1 flex-col`,contentClassName:y(`min-h-0 flex-1 overflow-auto`,a),editorClassName:y(`vprose prose-sm mx-auto min-h-full w-full max-w-5xl px-6 py-5 outline-none`,c)})]}):n(`div`,{className:y(`flex h-full min-h-0 flex-col bg-background`,r),children:[d?n(`div`,{className:`flex min-h-10 shrink-0 items-center justify-end gap-1 border-b border-mixer-muted/25 px-1.5 py-1`,children:[x,t(qn,{onSend:d,hasUnsentChanges:g,isSending:v,disabled:b})]}):null,t(_,{value:C.value,onChange:e=>C.onChange?.(e.target.value),onFocus:()=>C.onFocusChange?.(!0),onBlur:()=>C.onFocusChange?.(!1),disabled:C.editable===!1,"aria-label":w(`richText.markdownSourceEditor`),className:y(`vertesia-markdown-document-editor-content min-h-0 flex-1 resize-none rounded-none`,`border-0 px-6 py-5 font-mono text-sm leading-6 outline-none focus-visible:ring-0`,a,c)})]}),n(f,{isOpen:k===`choose`,onClose:()=>A(`source`),className:`sm:max-w-lg`,disableCloseOnClickOutside:!0,children:[t(h,{children:w(`richText.sourceCompatibilityWarningTitle`)}),t(p,{children:t(`p`,{className:`text-sm text-muted`,children:w(`richText.sourceCompatibilityWarningDescription`)})}),n(m,{align:`right`,children:[t(s,{variant:`outline`,onClick:()=>A(`source`),children:w(`richText.editMarkdownSource`)}),t(s,{variant:`secondary`,onClick:()=>A(`rich-text`),children:w(`richText.continueRichText`)})]})]})]})}export{nr as VertesiaMarkdownComponentEditor,rr as VertesiaMarkdownDocumentEditor,tr as VertesiaMarkdownRichTextEditor,er as vertesiaRichTextRenderers};
|
|
1
|
+
import{Fragment as e,jsx as t,jsxs as n}from"react/jsx-runtime";import{MarkdownComponentEditor as r,MarkdownDocumentEditor as i,MarkdownRichTextEditor as a,getMarkdownCompatibility as o}from"@vertesia/rich-text";import{Button as s,DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d,Modal as f,ModalBody as p,ModalFooter as m,ModalTitle as h,Spinner as g,Textarea as _,VTooltip as v,cn as y,usePortalContainer as b,useToast as x}from"@vertesia/ui/core";import{useUITranslation as S}from"@vertesia/ui/i18n";import C,{Suspense as w,createContext as T,lazy as E,memo as D,useCallback as O,useContext as k,useEffect as A,useId as ee,useMemo as j,useRef as M,useState as N}from"react";import*as P from"@radix-ui/react-dialog";import{useUserSession as te}from"@vertesia/ui/session";import{BarChart3 as F,Bold as ne,Check as re,ChevronDown as ie,Code as I,Copy as ae,Download as oe,FileText as L,GitBranch as se,Image as R,Italic as ce,Link as le,List as ue,ListOrdered as z,Loader2 as de,Maximize2 as B,MessageSquare as fe,MessageSquarePlus as V,Minimize2 as pe,Minus as me,Quote as H,Redo2 as U,Send as he,SquareCode as ge,Strikethrough as _e,Table as ve,Undo2 as ye,X as be}from"lucide-react";import xe from"papaparse";import{clsx as Se}from"clsx";import{twMerge as Ce}from"tailwind-merge";import{FusionFragmentHandler as W,FusionFragmentProvider as we}from"@vertesia/fusion-ux";import Te from"dompurify";import Ee,{defaultUrlTransform as De}from"react-markdown";import{defListHastHandlers as Oe,remarkDefinitionList as ke}from"remark-definition-list";import Ae from"remark-directive";import je from"remark-gfm";import Me from"remark-github-blockquote-alert";import Ne from"remark-math";import Pe from"remark-supersub";import{SKIP as Fe,visit as Ie}from"unist-util-visit";import{FloatingPortal as Le,autoUpdate as Re,flip as ze,offset as Be,shift as Ve,useFloating as He}from"@floating-ui/react";const Ue=C.createContext({});function We({children:e,artifactRunId:n,onProposalSelect:r,onProposalSubmit:i,MarkdownRenderer:a}){let o=j(()=>({artifactRunId:n,onProposalSelect:r,onProposalSubmit:i,MarkdownRenderer:a}),[n,r,i,a]);return t(Ue.Provider,{value:o,children:e})}function G(){return C.useContext(Ue)}const Ge=T(null);function Ke(){return k(Ge)}function qe(...e){return Ce(Se(e))}const Je=T(null);function Ye(){return k(Je)}function Xe(e){return e.startsWith(`agents/`)||e.startsWith(`documents/`)}function Ze(e,t,n=`inline`){return`artifact:${e}:${t}:${n}`}function Qe(e){return`file:${e}`}const $e=E(()=>import(`react-vega`).then(({VegaEmbed:e})=>({default:e})));function et({error:e,chartTitle:r}){return t(`div`,{className:`flex items-center justify-center h-full bg-red-50 dark:bg-red-950 rounded-md p-4`,children:n(`div`,{className:`text-center`,children:[n(`p`,{className:`text-sm font-medium text-red-600 dark:text-red-400`,children:[`Cannot render `,r||`Vega-Lite`,` chart`]}),t(`p`,{className:`text-xs text-red-500 dark:text-red-500 mt-1 max-w-xs truncate`,children:e})]})})}function tt(){return t(`output`,{className:`flex items-center justify-center w-full h-full`,children:t(de,{className:`w-5 h-5 animate-spin text-gray-500 dark:text-gray-400`})})}function nt({isOpen:e,onClose:r,title:i,description:a,children:o}){let{t:c}=S();return t(P.Root,{open:e,onOpenChange:e=>!e&&r(),children:n(P.Portal,{children:[t(P.Overlay,{className:`fixed inset-0 z-50 bg-black/80 backdrop-blur-sm transition-all duration-300 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`}),n(P.Content,{className:`fixed inset-2 sm:inset-4 z-50 flex flex-col bg-white dark:bg-gray-900 rounded-xl shadow-2xl transition-all duration-300 ease-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-98 data-[state=open]:zoom-in-98 data-[state=closed]:slide-out-to-bottom-2 data-[state=open]:slide-in-from-bottom-2`,onEscapeKeyDown:r,children:[t(P.Close,{asChild:!0,children:t(s,{variant:`unstyled`,onClick:r,className:`absolute top-3 end-3 z-10 p-2 rounded-lg bg-white/80 dark:bg-gray-800/80 backdrop-blur-sm hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors duration-150 shadow-sm`,"aria-label":c(`agent.closeFullscreen`),children:t(be,{className:`w-5 h-5 text-gray-600 dark:text-gray-300`})})}),t(`div`,{className:`flex-1 overflow-auto p-4 sm:p-6 animate-in fade-in-0 duration-500 delay-150`,children:o}),t(`div`,{className:`flex items-center justify-between px-4 sm:px-6 py-3 border-t border-gray-200 dark:border-gray-800 bg-gray-50/50 dark:bg-gray-800/50 rounded-b-xl`,children:n(`div`,{className:`flex flex-col`,children:[t(P.Title,{className:`text-base font-semibold text-gray-900 dark:text-gray-100`,children:i||c(`agent.dashboard`)}),a&&t(P.Description,{className:`text-sm text-gray-500 dark:text-gray-400 mt-0.5`,children:a})]})})]})]})})}function rt(e,t){if(t===`chart`)return 280;let n=1;if(e.vconcat)n=Array.isArray(e.vconcat)?e.vconcat.length:1;else if(e.concat){let t=e.columns||2,r=Array.isArray(e.concat)?e.concat.length:1;n=Math.ceil(r/t)}else e.facet&&(n=2);return Math.max(500,n*280+40)}const it={categorical:[`#6366f1`,`#8b5cf6`,`#ec4899`,`#f43f5e`,`#f97316`,`#eab308`,`#22c55e`,`#14b8a6`,`#06b6d4`,`#3b82f6`],blues:[`#dbeafe`,`#93c5fd`,`#3b82f6`,`#1d4ed8`,`#1e3a8a`],purples:[`#f3e8ff`,`#c4b5fd`,`#8b5cf6`,`#6d28d9`,`#4c1d95`],greens:[`#dcfce7`,`#86efac`,`#22c55e`,`#15803d`,`#14532d`],diverging:[`#ef4444`,`#fca5a5`,`#fef3c7`,`#86efac`,`#22c55e`]};function at(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ot(e){return at(e)}function st(e){let t=JSON.parse(JSON.stringify(e)),n=[`vconcat`,`hconcat`,`concat`];if(!n.some(e=>Array.isArray(t[e])))return t;let r=[];if(Array.isArray(t.params))for(let e of t.params)e&&typeof e==`object`&&e.name&&e.select&&r.push({name:e.name,param:e});if(r.length===0)return t;for(let{name:e,param:i}of r){let r=i.select?.fields||[],a=i.select?.bind===`legend`,o=null;for(let e of n)if(Array.isArray(t[e])){o=t[e];break}if(!o||o.length===0)continue;let s=0;for(let e=0;e<o.length;e++){let t=o[e];if(lt(t,r)||a&&ut(t,r)){s=e;break}}let c=o[s];c.params||=[],c.params.push(i),t.params=(t.params??[]).filter(t=>t.name!==e)}return Array.isArray(t.params)&&t.params.length===0&&delete t.params,t}function ct(e,t){if(!t||Object.keys(t).length===0)return e;let n=JSON.parse(JSON.stringify(e)),r=e=>{for(let n of e)n.name&&n.name in t&&(n.value=t[n.name])};Array.isArray(n.params)&&r(n.params);let i=e=>{if(Array.isArray(e)){for(let t of e)if(Array.isArray(t.params)&&r(t.params),t.vconcat&&i(t.vconcat),t.hconcat&&i(t.hconcat),t.concat&&i(t.concat),Array.isArray(t.layer))for(let e of t.layer)Array.isArray(e.params)&&r(e.params)}};if(n.vconcat&&i(n.vconcat),n.hconcat&&i(n.hconcat),n.concat&&i(n.concat),Array.isArray(n.layer))for(let e of n.layer)e&&Array.isArray(e.params)&&r(e.params);return n}function lt(e,t){if(!e?.encoding)return!1;for(let n of t)for(let t of Object.values(e.encoding))if(t.field===n)return!0;if(Array.isArray(e.layer)){for(let n of e.layer)if(lt(n,t))return!0}return!1}function ut(e,t){if(!e)return!1;let n=e=>{if(!e)return!1;let n=e.color?.field;return!!n&&t.includes(n)};if(n(e.encoding))return!0;if(Array.isArray(e.layer)){for(let t of e.layer)if(n(t.encoding))return!0}return!1}function dt(e,t=[]){let n=[];if(!e||typeof e!=`object`)return n;if(e.data&&typeof e.data==`object`){let r=e.data.url;typeof r==`string`&&r.startsWith(`artifact:`)&&n.push({path:[...t,`data`],artifactPath:r.replace(/^artifact:/,``).trim()})}for(let r of[`layer`,`vconcat`,`hconcat`,`concat`,`spec`,`repeat`,`facet`])if(r in e){let i=e[r];Array.isArray(i)?i.forEach((e,i)=>{ot(e)&&n.push(...dt(e,[...t,r,String(i)]))}):ot(i)&&n.push(...dt(i,[...t,r]))}return n}function ft(e,t){let n=JSON.parse(JSON.stringify(e));for(let[e,r]of t){let t=e.split(`.`),i=n;for(let e=0;e<t.length-1;e++){let n=i[t[e]];if(!at(n))break;i=n}let a=t[t.length-1],o=i[a];at(o)&&(delete o.url,o.values=r)}return n}function pt(e){let t={background:`transparent`,view:{stroke:`transparent`},range:{category:it.categorical,diverging:it.diverging,heatmap:it.purples,ramp:it.blues},mark:{tooltip:!0},bar:{tooltip:!0,cornerRadiusTopLeft:4,cornerRadiusTopRight:4},line:{tooltip:!0,strokeWidth:2.5,strokeCap:`round`},point:{tooltip:!0,size:60,filled:!0},area:{tooltip:!0,fillOpacity:.7,line:!0},rect:{tooltip:!0,cornerRadius:2},arc:{tooltip:!0,cornerRadius:4},circle:{tooltip:!0,size:80}};return e?{...t,axis:{labelColor:`#a1a1aa`,titleColor:`#e4e4e7`,gridColor:`#3f3f46`,domainColor:`#52525b`,tickColor:`#52525b`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,titleFontWeight:500},legend:{labelColor:`#a1a1aa`,titleColor:`#e4e4e7`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,symbolSize:100},title:{color:`#fafafa`,font:`Inter, system-ui, sans-serif`,fontSize:14,fontWeight:600}}:{...t,axis:{labelColor:`#71717a`,titleColor:`#3f3f46`,gridColor:`#e4e4e7`,domainColor:`#d4d4d8`,tickColor:`#d4d4d8`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,titleFontWeight:500},legend:{labelColor:`#71717a`,titleColor:`#3f3f46`,labelFont:`Inter, system-ui, sans-serif`,titleFont:`Inter, system-ui, sans-serif`,labelFontSize:11,titleFontSize:12,symbolSize:100},title:{color:`#18181b`,font:`Inter, system-ui, sans-serif`,fontSize:14,fontWeight:600}}}const K=D(function({spec:r,artifactRunId:i}){let{t:a}=S(),{title:o,description:c,options:l}=r,u=r.spec,[d,f]=N(!1),[p,m]=N(!1),[h,g]=N(null),[_,v]=N(!1),y=M(null),b=M(null),x=M(null),{client:C}=te(),T=Ye(),E=M(C);E.current=C;let D=M(T);D.current=T;let[k,ee]=N(null),[P,F]=N(!1),[ne,ie]=N(null),I=l?.mode||`chart`,L=I===`dashboard`,se=l?.enableFullscreen??L,R=l?.height||rt(u,I);A(()=>{let e=dt(u);if(e.length===0){ee(u),F(!1),ie(null);return}i?console.info(`[VegaLiteChart] resolving artifacts with runId:`,i,e.map(e=>e.artifactPath)):console.warn(`[VegaLiteChart] artifact references found but artifactRunId is missing!`,{references:e.map(e=>e.artifactPath),artifactRunId:i});let t=!1;return F(!0),ie(null),(async()=>{let n=new Map,r=E.current,a=D.current;for(let o of e)try{let e=o.path.join(`.`),t;if(i&&!Xe(o.artifactPath)){let e=Ze(i,o.artifactPath,`inline`);t=a?await a.getOrFetch(e,async()=>(await r.files.getArtifactDownloadUrl(i,o.artifactPath,`inline`)).url):(await r.files.getArtifactDownloadUrl(i,o.artifactPath,`inline`)).url}else{let e=Qe(o.artifactPath);t=a?await a.getOrFetch(e,async()=>(await r.files.getDownloadUrl(o.artifactPath)).url):(await r.files.getDownloadUrl(o.artifactPath)).url}let s=await fetch(t);if(!s.ok)throw Error(`Failed to fetch artifact data: ${s.statusText}`);let c=o.artifactPath.toLowerCase().endsWith(`.csv`),l;if(c){let e=await s.text();l=xe.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0}).data}else{let e=await s.json();l=Array.isArray(e)?e:[e]}n.set(e,l)}catch(e){console.error(`Failed to resolve artifact: ${o.artifactPath}`,e),t||ie(`Failed to load data from artifact: ${o.artifactPath}`);return}if(!t){let e=ft(u,n);ee(e),F(!1)}})(),()=>{t=!0}},[u,i]);let[ce,le]=N(!1),ue=M(!1);A(()=>{let e=()=>{let e=document.documentElement.classList.contains(`dark`);e!==ue.current&&(ue.current=e,le(e))};e();let t=new MutationObserver(e);return t.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}),()=>t.disconnect()},[]);let[z,fe]=N(0),V=M(0);A(()=>{if(!x.current)return;let e,t=new ResizeObserver(t=>{clearTimeout(e),e=setTimeout(()=>{let e=t[0]?.contentRect.width;e&&e!==V.current&&(V.current=e,fe(e))},100)});t.observe(x.current);let n=x.current.clientWidth;return V.current=n,fe(n),()=>{clearTimeout(e),t.disconnect()}},[]);let me=j(()=>dt(u).length>0,[u]),H=j(()=>{if(me&&!k)return null;let e=k||u;return e?(l?.parameterValues&&(e=ct(e,l.parameterValues)),st(e)):null},[k,u,me,l?.parameterValues]),U=O((e,t)=>{if(!e||typeof e!=`object`)return e;if(e.hconcat&&Array.isArray(e.hconcat)){let n=e.hconcat.length,r=(e.spacing??10)*(n-1),i=Math.floor((t-r)/n);return{...e,hconcat:e.hconcat.map(e=>U(e,i))}}if(e.vconcat&&Array.isArray(e.vconcat))return{...e,vconcat:e.vconcat.map(e=>U(e,t))};if(e.concat&&Array.isArray(e.concat)){let n=e.columns??e.concat.length,r=(e.spacing??10)*(n-1),i=Math.floor((t-r)/n);return{...e,concat:e.concat.map(e=>U(e,i))}}let n=e.width;return n===`container`||typeof n==`number`&&n>t?{...e,width:t}:e},[]),he=O((e,t=!1)=>{if(!H)return null;let n=pt(ce),r=t?typeof window<`u`?Math.min(window.innerWidth-80,1400):1200:z>0?z-24:500,i=`vconcat`in H||`hconcat`in H||`concat`in H,a=i?{type:`pad`,contains:`padding`}:{type:`fit`,contains:`padding`},s=H;i&&r&&(s=U(H,r));let c=s.width,l=i?void 0:c===`container`?r:c??r,{width:u,...d}=s;return{$schema:`https://vega.github.io/schema/vega-lite/v6.json`,...!i&&l?{width:l}:{},height:t?void 0:e,autosize:a,...i?s:d,...o&&!H.title?{title:o}:{},config:{...n,...H.config}}},[H,o,ce,z,U]),ge=O(async()=>{let e=_?b.current:y.current;if(!(!e||p))try{(await e.toCanvas(2)).toBlob(async e=>{e&&(await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),m(!0),setTimeout(()=>m(!1),2e3))},`image/png`)}catch(e){console.error(`Failed to copy chart:`,e)}},[p,_]),_e=O(async()=>{let e=_?b.current:y.current;if(!(!e||d)){f(!0);try{let t=await e.toImageURL(`png`,2),n=document.createElement(`a`);n.download=`${o||`chart`}.png`,n.href=t,n.click()}catch(e){console.error(`Failed to export chart:`,e)}finally{f(!1)}}},[o,d,_]),ve=O(e=>{y.current=e,g(null)},[]),ye=O(e=>{b.current=e},[]),be=O(e=>{console.error(`Vega-Lite rendering error:`,e),g(e instanceof Error?e.message:`Unknown error`)},[]),Se=O(()=>{v(e=>!e)},[]);A(()=>{g(null)},[u]);let Ce=({className:e})=>n(`div`,{className:qe(`flex items-center gap-2`,e),children:[n(s,{variant:`unstyled`,onClick:ge,disabled:p,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 flex items-center gap-1`,title:a(`agent.copyToClipboard`),children:[t(p?re:ae,{className:`w-3 h-3`}),a(p?`agent.copied`:`agent.copy`)]}),n(s,{variant:`unstyled`,onClick:_e,disabled:d,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1`,title:a(`agent.exportAsPng`),children:[t(oe,{className:`w-3 h-3`}),a(d?`agent.exporting`:`agent.export`)]}),se&&n(s,{variant:`unstyled`,onClick:Se,className:`text-xs px-2 py-1 rounded border border-gray-300 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700 cursor-pointer transition-colors flex items-center gap-1`,title:a(_?`agent.exitFullscreen`:`agent.fullscreen`),children:[t(_?pe:B,{className:`w-3 h-3`}),a(_?`agent.exit`:`agent.fullscreen`)]})]});if(P||me&&!k)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{className:`flex items-center justify-center bg-gray-50 dark:bg-gray-800 rounded`,style:{width:`100%`,height:R},children:n(`div`,{className:`flex items-center gap-2 text-gray-500 dark:text-gray-400`,children:[t(de,{className:`w-5 h-5 animate-spin`}),t(`span`,{className:`text-sm`,children:`Loading data from artifacts...`})]})})]})});if(ne)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{style:{width:`100%`,height:R},children:t(et,{error:ne,chartTitle:o})})]})});if(h)return t(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[t(`div`,{className:`flex items-center justify-between`,children:t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||`Chart`})}),t(`div`,{style:{width:`100%`,height:R},children:t(et,{error:h,chartTitle:o})})]})});let W=he(R),we=he(0,!0);return W?(typeof window<`u`&&localStorage.getItem(`DEBUG_VEGA_RENDERS`)&&console.log(`VegaLite rendering with spec:`,{title:o,hasData:!!W.data?.values,dataLength:W.data?.values?.length}),n(e,{children:[t(`div`,{className:qe(`bg-white dark:bg-gray-900 rounded-lg border border-gray-200 dark:border-gray-800 shadow-sm`,L&&`border-2`),children:n(`div`,{className:`flex flex-col gap-2 p-3`,children:[n(`div`,{className:`flex items-center justify-between`,children:[n(`div`,{className:`flex items-center gap-2`,children:[t(`span`,{className:`font-medium text-sm text-gray-900 dark:text-gray-100`,children:o||(L?`Dashboard`:`Chart`)}),L&&t(`span`,{className:`text-xs px-2 py-0.5 rounded-full bg-indigo-100 dark:bg-indigo-900 text-indigo-700 dark:text-indigo-300`,children:`Interactive`})]}),t(Ce,{})]}),c&&t(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:c}),t(`div`,{ref:x,className:`bg-white dark:bg-gray-900 rounded overflow-hidden`,style:{width:`100%`,height:R,minWidth:0},children:t(w,{fallback:t(tt,{}),children:t($e,{spec:W,onEmbed:e=>ve(e.view),onError:be,options:{renderer:l?.renderer||`canvas`,actions:!1}})})})]})}),n(nt,{isOpen:_,onClose:()=>v(!1),title:o||(L?`Dashboard`:`Chart`),description:c,children:[t(`div`,{className:`w-full h-full min-h-[calc(100vh-200px)]`,children:we&&t(w,{fallback:t(tt,{}),children:t($e,{spec:we,onEmbed:e=>ye(e.view),onError:be,options:{renderer:l?.renderer||`canvas`,actions:!1}})})}),t(`div`,{className:`absolute bottom-6 end-6`,children:t(Ce,{className:`bg-white dark:bg-gray-800 rounded-lg shadow-lg p-2 border border-gray-200 dark:border-gray-700`})})]})]})):null},(e,t)=>JSON.stringify(e.spec)===JSON.stringify(t.spec)&&e.artifactRunId===t.artifactRunId),mt={chart:{icon:F,label:`chart`,defaultHeight:200},mermaid:{icon:se,label:`diagram`,defaultHeight:150},proposal:{icon:fe,label:`options`,defaultHeight:100},code:{icon:I,label:`code`,defaultHeight:80},image:{icon:R,label:`image`,defaultHeight:150},link:{icon:le,label:`link`,defaultHeight:24},expand:{icon:oe,label:`content`,defaultHeight:100},table:{icon:ve,label:`table`,defaultHeight:150},markdown:{icon:L,label:`content`,defaultHeight:100},"fusion-fragment":{icon:I,label:`fragment`,defaultHeight:150}};function q({type:e,error:r,onRetry:i,message:a,height:o}){let c=mt[e],l=o??c.defaultHeight,u=e===`link`;if(r)return n(`div`,{className:`flex items-center gap-2 rounded border border-destructive/30 bg-destructive/5 text-destructive ${u?`inline-flex px-2 py-1 text-sm`:`p-4`}`,style:u?void 0:{minHeight:l},children:[n(`span`,{className:`text-destructive`,children:[`Failed to load `,c.label]}),i&&t(s,{variant:`unstyled`,onClick:i,className:`ms-2 rounded bg-destructive/10 px-2 py-1 text-xs hover:bg-destructive/20 transition-colors text-destructive`,children:`Retry`})]});let d=c.icon;return u?n(`span`,{className:`inline-flex items-center gap-1 text-muted animate-pulse`,children:[t(d,{className:`h-3 w-3`}),t(`span`,{children:a||`Loading ${c.label}...`})]}):n(`div`,{className:`flex flex-col items-center justify-center gap-3 rounded border border-border bg-muted/30 animate-pulse`,style:{minHeight:l},children:[t(d,{className:`h-8 w-8 text-muted`}),t(`span`,{className:`text-sm text-muted`,children:a||`Loading ${c.label}...`}),t(`div`,{className:`flex gap-1`,children:[...[,,,]].map((e,n)=>t(`div`,{className:`h-2 w-2 rounded-full bg-muted animate-bounce`,style:{animationDelay:`${n*150}ms`}},`dot-${n}`))})]})}var J=class extends C.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){console.error(`CodeBlock rendering error (${this.props.type}):`,e,t),this.props.onError?.(e)}handleRetry=()=>{this.setState({hasError:!1,error:void 0})};render(){if(this.state.hasError){let{type:e,fallbackCode:r}=this.props;return n(`div`,{className:`space-y-2`,children:[t(q,{type:e,error:this.state.error?.message||`Rendering failed`,onRetry:this.handleRetry}),r&&n(`details`,{className:`text-sm`,children:[t(`summary`,{className:`cursor-pointer text-muted hover:text-foreground`,children:`Show raw content`}),t(`pre`,{className:`mt-2 overflow-x-auto rounded bg-muted/50 p-2 text-xs`,children:t(`code`,{children:r})})]})]})}return this.props.children}};function ht(e,t,n){let r=t.split(`.`).pop()?.toLowerCase();if(r===`svg`)return`mockup`;if([`png`,`jpg`,`jpeg`,`gif`,`webp`].includes(r||``))return`image`;if(r===`md`)return`markdown`;if(r===`csv`)return`table`;if(n===`json`&&typeof e==`object`&&e){let t=e;if(typeof t.$schema==`string`&&t.$schema.includes(`vega`)||t.library===`vega-lite`&&`spec`in t)return`vega-lite`;if(`template`in t&&`data`in t)return`fusion-fragment`;if(Array.isArray(e)&&e.length>0&&typeof e[0]==`object`)return`table`}return`code`}function gt(e){if(typeof e!=`object`||!e)return null;let t=e;return t.library===`vega-lite`&&`spec`in t&&typeof t.spec==`object`&&t.spec!==null?t:typeof t.$schema==`string`&&t.$schema.includes(`vega`)?{library:`vega-lite`,spec:t}:null}function _t({content:e}){let{headers:r,rows:i}=j(()=>{if(!Array.isArray(e)||e.length===0)return{headers:[],rows:[]};let t=e[0];if(typeof t!=`object`||!t)return{headers:[],rows:[]};let n=Object.keys(t);return{headers:n,rows:e.map(e=>n.map(t=>{let n=e[t];return n==null?``:typeof n==`object`?JSON.stringify(n):String(n)}))}},[e]);return r.length===0?t(q,{type:`table`,error:`No table data found`}):n(`div`,{className:`overflow-x-auto`,children:[n(`table`,{className:`min-w-full text-sm border-collapse`,children:[t(`thead`,{children:t(`tr`,{className:`border-b`,children:r.map(e=>t(`th`,{className:`px-3 py-2 text-start font-medium text-muted`,children:e},e))})}),t(`tbody`,{children:i.slice(0,100).map((e,n)=>t(`tr`,{className:`border-b border-muted/20`,children:e.map((e,n)=>t(`td`,{className:`px-3 py-2`,children:e},`cell-${n}`))},`row-${n}`))})]}),i.length>100&&n(`div`,{className:`text-sm text-muted py-2`,children:[`Showing 100 of `,i.length,` rows`]})]})}function vt({content:e,path:n}){let r=n.split(`.`).pop()?.toLowerCase()||``,i=typeof e==`string`?e:JSON.stringify(e,null,2);return t(`pre`,{className:`overflow-x-auto p-3 bg-muted/10 rounded text-sm`,children:t(`code`,{className:`language-${r}`,children:i})})}function yt(e){return Te.sanitize(e,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:[`use`],FORBID_TAGS:[`foreignObject`]})}function bt(e){return e.replace(/<svg([^>]*)>/i,(e,t)=>{let n=t;if(!/viewBox/i.test(n)){let e=/\swidth\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(n),t=/\sheight\s*=\s*["']?(\d+(?:\.\d+)?)/i.exec(n);e&&t&&(n+=` viewBox="0 0 ${e[1]} ${t[1]}"`)}return n=n.replace(/\swidth\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/i,``).replace(/\sheight\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/i,``),/style="/i.test(n)?n=n.replace(/style="([^"]*)"/i,(e,t)=>`style="${t};width:100%;height:auto;display:block;max-width:100%;"`):n+=` style="width:100%;height:auto;display:block;max-width:100%;"`,/preserveAspectRatio=/i.test(n)||(n+=` preserveAspectRatio="xMidYMid meet"`),`<svg${n}>`})}function xt({content:e}){let n=j(()=>{let t=typeof e==`string`?e.trim():``;return t?bt(yt(t)):null},[e]);return n?t(`div`,{style:{margin:`16px 0`,width:`100%`,overflowX:`auto`},dangerouslySetInnerHTML:{__html:n}}):t(q,{type:`expand`,error:`Empty mockup`})}function St({content:e,path:n}){let r=typeof e==`string`?e:``,i=n.split(`/`).pop()||`Artifact image`;return t(`img`,{src:r,alt:i,className:`max-w-full h-auto rounded`,loading:`lazy`})}function Ct({content:e,renderType:n,path:r,runId:i,contentType:a}){let{MarkdownRenderer:o}=G();switch(j(()=>n===`auto`?ht(e,r,a):n,[e,r,a,n])){case`chart`:{let n=gt(e);return n?t(J,{type:`chart`,fallbackCode:JSON.stringify(e,null,2),children:t(K,{spec:n,artifactRunId:i})}):t(q,{type:`chart`,error:`Only Vega-Lite charts are supported. Recharts rendering has been retired.`})}case`vega-lite`:{let n=gt(e);return n?t(J,{type:`chart`,fallbackCode:JSON.stringify(e,null,2),children:t(K,{spec:n,artifactRunId:i})}):t(q,{type:`chart`,error:`Invalid Vega-Lite specification`})}case`fusion-fragment`:{let n=e;return console.log(`[ArtifactContentRenderer] fusion-fragment:`,{hasTemplate:!!n.template,hasData:!!n.data,runId:i,hasVegaLiteChart:!!K}),n.template&&n.data?t(J,{type:`fusion-fragment`,fallbackCode:JSON.stringify(e,null,2),children:t(we,{data:n.data,ChartComponent:K,artifactRunId:i,children:t(W,{code:JSON.stringify(n.template),data:n.data})})}):t(J,{type:`fusion-fragment`,fallbackCode:JSON.stringify(e,null,2),children:t(W,{code:JSON.stringify(e)})})}case`table`:return t(J,{type:`table`,fallbackCode:JSON.stringify(e,null,2),children:t(_t,{content:e})});case`markdown`:{let n=typeof e==`string`?e:String(e);return t(J,{type:`markdown`,fallbackCode:n,children:o?t(o,{artifactRunId:i,children:n}):t(`pre`,{className:`overflow-x-auto p-3 bg-muted/10 rounded text-sm`,children:t(`code`,{children:n})})})}case`mockup`:return t(J,{type:`expand`,fallbackCode:typeof e==`string`?e:r,children:t(xt,{content:e})});case`image`:return t(J,{type:`image`,fallbackCode:r,children:t(St,{content:e,path:r})});default:return t(vt,{content:e,path:r})}}const wt=`Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif`;function Tt(e){let t=e.trim(),n=``,r=!1,i=!1;for(let e=0;e<t.length;e++){let a=t[e],o=e>0?t[e-1]:``;if(a===`"`&&!i&&o!==`\\`){r=!r,n+=a;continue}if(a===`'`&&!r&&o!==`\\`){i=!i,n+=a;continue}if((r||i)&&a===`\\`){let r=e;for(;t[r]===`\\`;)r++;if(t[r]===`n`){n+=`<br/>`,e=r;continue}}n+=a}return n}function Et(e){return e.replace(/<svg([^<>]*)>/i,(e,t)=>{let n=t.replace(/\swidth="[^"]*"/i,``).replace(/\sheight="[^"]*"/i,``);return/style="/i.test(n)?n=n.replace(/style="([^"]*)"/i,(e,t)=>`style="${t};width:100%;height:auto;display:block;max-width:100%;"`):n+=` style="width:100%;height:auto;display:block;max-width:100%;"`,/preserveAspectRatio=/i.test(n)||(n+=` preserveAspectRatio="xMidYMid meet"`),`<svg${n}>`})}let Dt;function Ot(){return Dt||=import(`mermaid`).then(({default:e})=>(e.initialize({startOnLoad:!1,theme:`default`,securityLevel:`loose`,fontFamily:wt,suppressErrorRendering:!0,flowchart:{htmlLabels:!0,useMaxWidth:!0,nodeSpacing:40,rankSpacing:50,padding:12},sequence:{useMaxWidth:!0},themeVariables:{fontFamily:wt}}),e)),Dt}function kt({code:e,className:n}){let r=M(null),[i,a]=N(null),[o,s]=N(null),c=ee().replace(/:/g,`_`);return A(()=>{let t=!1;return(async()=>{if(!e.trim()){a(null),s(null);return}try{s(null);let n=`mermaid-${c}-${Date.now()}`,r=Tt(e),{svg:i}=await(await Ot()).render(n,r),o=Et(i);t||a(o)}catch(e){if(!t){let t=e instanceof Error?e.message:`Failed to render mermaid diagram`;s(t),a(null)}}})(),()=>{t=!0}},[e,c]),o?null:i?t(`div`,{ref:r,className:`my-4 w-full overflow-x-auto [&_svg]:mx-auto [&_svg]:w-full [&_svg]:h-auto [&_svg]:max-w-full ${n||``}`,dangerouslySetInnerHTML:{__html:i}}):t(`div`,{className:`my-4 p-4 bg-gray-50 dark:bg-gray-800 rounded-lg animate-pulse ${n||``}`,children:t(`div`,{className:`h-32 bg-gray-200 dark:bg-gray-700 rounded`})})}function At(e){switch(e.split(`.`).pop()?.toLowerCase()){case`json`:return`json`;case`md`:case`txt`:case`csv`:case`yaml`:case`yml`:return`text`;case`png`:case`jpg`:case`jpeg`:case`gif`:case`webp`:case`pdf`:return`binary`;default:return`text`}}function jt({runId:e,path:t,parseJson:n=!0}){let{client:r}=te(),i=Ye(),a=M(r);a.current=r;let o=M(i);o.current=i;let[s,c]=N({data:void 0,rawContent:void 0,isLoading:!0,error:void 0,contentType:void 0}),l=O(async()=>{if(!e){c({data:void 0,rawContent:void 0,isLoading:!1,error:`No run ID provided`,contentType:void 0});return}if(!t){c({data:void 0,rawContent:void 0,isLoading:!1,error:`No artifact path provided`,contentType:void 0});return}c(e=>({...e,isLoading:!0,error:void 0}));let r=a.current,i=o.current,s=At(t);try{let a=Ze(e,t,`inline`),o;o=i?await i.getOrFetch(a,async()=>(await r.files.getArtifactDownloadUrl(e,t,`inline`)).url):(await r.files.getArtifactDownloadUrl(e,t,`inline`)).url;let l=await fetch(o);if(!l.ok)throw Error(`Failed to fetch artifact: ${l.status} ${l.statusText}`);if(s===`binary`){c({data:o,rawContent:void 0,isLoading:!1,error:void 0,contentType:s,etag:l.headers.get(`etag`)?.replace(/^"(.*)"$/,`$1`)});return}let u=await l.text(),d;if(n&&s===`json`)try{d=JSON.parse(u)}catch{d=u}else d=u;c({data:d,rawContent:u,isLoading:!1,error:void 0,contentType:s,etag:l.headers.get(`etag`)?.replace(/^"(.*)"$/,`$1`)})}catch(e){let n=e instanceof Error?e.message:`Failed to fetch artifact`;console.error(`Failed to fetch artifact content:`,t,e),c({data:void 0,rawContent:void 0,isLoading:!1,error:n,contentType:s})}},[e,t,n]);A(()=>{l()},[l]);let u=O(()=>{c({data:void 0,rawContent:void 0,isLoading:!0,error:void 0,contentType:void 0}),l()},[l]);return{data:s.data,rawContent:s.rawContent,isLoading:s.isLoading,error:s.error,contentType:s.contentType,etag:s.etag,retry:u}}function Mt(e){let t=e.trim();if(t.length<2)return!0;if(!t.startsWith(`{`))return!1;try{return JSON.parse(t),!1}catch(e){let n=e instanceof Error?e.message:``,r=[`unexpected end`,`unterminated string`,`expected`,`unexpected token`],i=n.toLowerCase();if(r.some(e=>i.includes(e))){let e=0,n=0,r=!1,i=!1;for(let a of t){if(i){i=!1;continue}if(a===`\\`){i=!0;continue}if(a===`"`){r=!r;continue}r||(a===`{`?e++:a===`}`?e--:a===`[`?n++:a===`]`&&n--)}return e>0||n>0||r}return!1}}function Nt(e){try{let t=e.trim(),n=t.indexOf(`{`),r=t.lastIndexOf(`}`);return n!==-1&&r>n&&(t=t.slice(n,r+1)),JSON.parse(t)}catch{return null}}function Pt(e){let t=typeof e.$schema==`string`&&e.$schema.includes(`vega`),n=e.library===`vega-lite`&&`spec`in e;return t||n?`vega-lite`:null}function Ft({code:e}){let{artifactRunId:n}=G();n||console.warn(`[VegaLiteCodeBlockHandler] artifactRunId is missing from CodeBlockContext`);let r=j(()=>Mt(e),[e]),i=j(()=>{if(r)return null;let t=Nt(e);return t?{library:`vega-lite`,spec:t}:null},[e,r]);return r?t(q,{type:`chart`,message:`Loading chart...`}):i?t(J,{type:`chart`,fallbackCode:e,children:t(K,{spec:i,artifactRunId:n})}):t(q,{type:`chart`,error:`Invalid Vega-Lite specification`})}function It({code:e}){let{artifactRunId:n}=G();n||console.warn(`[ChartCodeBlockHandler] artifactRunId is missing from CodeBlockContext`);let r=j(()=>Mt(e),[e]),i=j(()=>{if(r)return null;let t=Nt(e);return!t||!Pt(t)?null:t.library===`vega-lite`&&`spec`in t&&typeof t.spec==`object`?t:{library:`vega-lite`,spec:t}},[e,r]);return r?t(q,{type:`chart`,message:`Loading chart...`}):i?t(J,{type:`chart`,fallbackCode:e,children:t(K,{spec:i,artifactRunId:n})}):t(q,{type:`chart`,error:`Invalid Vega-Lite chart specification`})}function Lt({code:e}){let n=e.trim();return n?t(J,{type:`mermaid`,fallbackCode:e,children:t(kt,{code:n})}):t(q,{type:`mermaid`,error:`Empty diagram`})}function Rt({code:e}){let n=j(()=>{let t=e.trim();return t?bt(yt(t)):null},[e]);return n?t(J,{type:`code`,fallbackCode:e,children:t(`div`,{style:{margin:`16px 0`,width:`100%`,overflowX:`auto`},dangerouslySetInnerHTML:{__html:n}})}):t(q,{type:`code`,error:`Empty mockup`})}function zt({code:e,language:n}){let{artifactRunId:r}=G(),i=e.trim(),a=j(()=>{if(!n?.includes(`:`))return`auto`;let e=n.split(`:`)[1];return[`chart`,`vega-lite`,`table`,`markdown`,`fusion-fragment`,`mockup`,`code`,`image`,`auto`].includes(e)?e:`auto`},[n]),{data:o,isLoading:s,error:c,contentType:l}=jt({runId:r,path:i});return r?s?t(q,{type:`expand`,message:`Loading ${i}...`}):c?t(q,{type:`expand`,error:`Failed to load artifact: ${c}`}):o===void 0?t(q,{type:`expand`,error:`No content found in artifact`}):t(Ct,{content:o,renderType:a,path:i,runId:r,contentType:l}):t(q,{type:`expand`,error:`No artifact run ID available`})}function Bt(e){return e?.startsWith(`expand`)??!1}function Vt(){return{chart:It,"vega-lite":Ft,vegalite:Ft,mermaid:Lt,mockup:Rt,svg:Rt}}const Ht=new Set([`store`,`document`,`collection`,`interaction`,`prompt`,`agent`,`workflow`,`process`,`run`]);function Ut(e){return e.trim().replace(/^\/+/,``)}function Wt(e){if(e.startsWith(`artifact:`))return{scheme:`artifact`,path:e.slice(9).trim()};if(e.startsWith(`image:`))return{scheme:`image`,path:e.slice(6).trim()};let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);if(Ht.has(n))return{scheme:n,path:Ut(e.slice(t+1))}}return{scheme:`standard`,path:e}}function Gt({rawUrl:e,artifactRunId:t,disposition:n=`inline`}){let{client:r}=te(),i=Ye(),a=M(r);a.current=r;let o=M(i);o.current=i;let{scheme:s,path:c}=Wt(e),[l,u]=N(()=>{if(s===`standard`)return{url:e,isLoading:!1,error:void 0};if(i&&(s===`artifact`||s===`image`)){let e;e=s===`artifact`&&t&&!Xe(c)?Ze(t,c,n):Qe(c);let r=i.getUrl(e);if(r)return{url:r,isLoading:!1,error:void 0}}return{url:void 0,isLoading:!0,error:void 0}}),d=O(async()=>{if(s===`standard`)return;if(s!==`artifact`&&s!==`image`){u({url:void 0,isLoading:!1,error:`Unknown scheme: ${s}`});return}u(e=>({...e,isLoading:!0,error:void 0}));let e=a.current,r=o.current;try{let i;if(s===`artifact`){if(t&&!Xe(c)){let a=Ze(t,c,n);i=r?await r.getOrFetch(a,async()=>(await e.files.getArtifactDownloadUrl(t,c,n)).url):(await e.files.getArtifactDownloadUrl(t,c,n)).url}else{let t=Qe(c);i=r?await r.getOrFetch(t,async()=>(await e.files.getDownloadUrl(c)).url):(await e.files.getDownloadUrl(c)).url}}else{let t=Qe(c);i=r?await r.getOrFetch(t,async()=>(await e.files.getDownloadUrl(c)).url):(await e.files.getDownloadUrl(c)).url}u({url:i,isLoading:!1,error:void 0})}catch(e){let t=e instanceof Error?e.message:`Failed to resolve URL`;console.error(`Failed to resolve URL:`,c,e),u({url:void 0,isLoading:!1,error:t})}},[s,c,t,n]);A(()=>{if(l.url&&!l.error)return;let e=!1;return e||(async()=>{await d()})(),()=>{e=!0}},[d,l.url,l.error]);let f=O(()=>{u({url:void 0,isLoading:!0,error:void 0}),d()},[d]);return{url:l.url,isLoading:l.isLoading,error:l.error,scheme:s,retry:f}}function Kt({src:e,alt:r,caption:i,className:a,artifactRunId:o}){let s=e||``,{scheme:c}=Wt(s);return c===`standard`?n(`figure`,{className:`my-4`,children:[t(`img`,{src:e,alt:r,className:a}),t(`figcaption`,{className:`mt-2 text-sm text-muted text-center italic`,children:i})]}):t(qt,{rawSrc:s,alt:r,caption:i,artifactRunId:o,className:a})}function qt({rawSrc:e,alt:r,caption:i,artifactRunId:a,className:o}){let{url:s,isLoading:c,error:l,retry:u}=Gt({rawUrl:e,artifactRunId:a,disposition:`inline`});return c?t(q,{type:`image`,message:r?`Loading ${r}...`:void 0}):l?t(q,{type:`image`,error:l,onRetry:u}):s?n(`figure`,{className:`my-4`,children:[t(`img`,{src:s,alt:r,className:o}),t(`figcaption`,{className:`mt-2 text-sm text-muted text-center italic`,children:i})]}):null}function Jt({node:e,src:n,alt:r,className:i,artifactRunId:a,ExistingImg:o,...s}){let c=n||``,{scheme:l}=Wt(c);return l===`standard`?typeof o==`function`?t(o,{node:e,src:n,alt:r,...s}):t(`img`,{src:n,alt:r,className:i,...s}):t(Yt,{rawSrc:c,alt:r,artifactRunId:a,className:i,rest:s})}function Yt({rawSrc:e,alt:n,artifactRunId:r,className:i,rest:a}){let{url:o,isLoading:s,error:c,retry:l}=Gt({rawUrl:e,artifactRunId:r,disposition:`inline`});return s?t(q,{type:`image`,message:n?`Loading ${n}...`:void 0}):c?t(q,{type:`image`,error:c,onRetry:l}):o?t(`img`,{src:o,alt:n,className:i,...a}):null}const Xt=T(()=>({kind:`none`}));Xt.Provider;function Zt(){return k(Xt)}const Qt={store:`document`,document:`document`,collection:`collection`,interaction:`interaction`,prompt:`prompt`,agent:`agent`,workflow:`workflow`,process:`process`,run:`interaction_run`};function $t(e){let t=e.indexOf(`:`);if(t<=0)return;let n=e.slice(0,t);if(!Object.hasOwn(Qt,n))return;let r=e.slice(t+1).trim().replace(/^\/+/,``);if(r)return{type:Qt[n],id:r}}function en({node:e,href:n,children:r,className:i,artifactRunId:a,onArtifactOpen:o,ExistingLink:s,...c}){let l=n||``,u=$t(l);if(u)return t(tn,{resource:u,rawHref:l,artifactRunId:a,className:i,ExistingLink:s,rest:c,children:r});let{scheme:d,path:f}=Wt(l);return d===`standard`?typeof s==`function`?t(s,{node:e,href:n,className:i,...c,children:r}):t(`a`,{href:n,...c,className:i,target:`_blank`,rel:`noopener noreferrer`,children:r}):t(nn,{rawHref:l,artifactRunId:a,artifactPath:d===`artifact`?f:void 0,onArtifactOpen:o,className:i,rest:c,children:r})}function tn({resource:e,rawHref:n,artifactRunId:r,className:i,children:a,ExistingLink:o,rest:c}){let l=Zt()(e,{workflowRunId:r,source:`markdown`,rawHref:n});return l.kind===`navigate`?typeof o==`function`?t(o,{href:l.href,className:i,...c,children:a}):t(`a`,{href:l.href,...c,className:i,target:`_blank`,rel:`noopener noreferrer`,children:a}):l.kind===`activate`?t(s,{variant:`link`,size:`none`,className:i,onClick:l.onActivate,children:a}):t(`span`,{className:i,children:a})}function nn({rawHref:e,artifactRunId:n,artifactPath:r,onArtifactOpen:i,className:a,children:o,rest:s}){let{url:c,isLoading:l,error:u,retry:d}=Gt({rawUrl:e,artifactRunId:n,disposition:`attachment`});return l?t(`span`,{className:`inline-flex items-center gap-1 text-muted`,children:t(q,{type:`link`})}):u?t(`span`,{className:`inline-flex items-center gap-1`,children:t(q,{type:`link`,error:u,onRetry:d})}):t(`a`,{href:c||`#`,...s,className:a,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>{r&&/\.md$/i.test(r)&&i&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&e.button===0&&(e.preventDefault(),i(r))},children:o})}const rn=[`artifact:`,`image:`,`store:`,`document://`,`collection:`,`interaction:`,`prompt:`,`agent:`,`workflow:`,`process:`,`run:`],an=/(!?\[[^[\]\n]*\]\()((?:artifact:|image:|store:|document:\/\/|collection:|interaction:|prompt:|agent:|workflow:|process:|run:)[^)[\n]+)(\))/g,on=/`[^`\n]*`/g,sn=/(^|\n)(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n\2(?=\n|$)/g,cn=/\s+("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\([^)]*\))\s*$/;function ln(e){return rn.some(t=>e.startsWith(t))}function un(e){let t=e.trim();if(t.startsWith(`<`)){let n=t.indexOf(`>`);if(n>0&&ln(t.slice(1,n).trim()))return e}let n=t.match(cn)?.index??-1,r=(n>=0?t.slice(0,n):t).trim(),i=n>=0?t.slice(n):``;return ln(r)?`<${r}>${i}`:e}function dn(e){return e.replace(an,(e,t,n,r)=>`${t}${un(n)}${r}`)}function fn(e){let t=``,n=0;for(let r of e.matchAll(on))t+=dn(e.slice(n,r.index)),t+=r[0],n=r.index+r[0].length;return t+=dn(e.slice(n)),t}function pn(e){if(!e||!rn.some(t=>e.includes(t)))return e;let t=``,n=0;for(let r of e.matchAll(sn))t+=fn(e.slice(n,r.index)),t+=r[0],n=r.index+r[0].length;return t+=fn(e.slice(n)),t}const mn=/^([ \t]*):::([^\n]*?):::[ \t]*$/gm,hn=/^\w+/;function gn(e){return e?.includes(`:::`)?e.replace(mn,(e,t,n)=>{let r=n.trim(),i=hn.exec(r);if(!i)return e;let a=i[0],o=r.slice(a.length).trim();return o?`${t}:::${a}\n${t}${o}\n${t}:::`:`${t}::${a}`}):e}const _n=/(^|\n)(`{3,}|~{3,})[^\n]*\n[\s\S]*?\n\2(?=\n|$)/g,vn=/`[^`\n]*`/g,yn=/\\\$/g,bn=/\\[^\s]/,xn=/[{}]/,Sn=/[_^][\w{]/,Cn=/^[a-zA-Z]$/,wn=/^[a-zA-Z]\s*=/,Tn=/^\s/,En=/\s$/,Dn=/[+*/-]$/,On=/\^[+-]$/;function kn(e){return bn.test(e)||xn.test(e)||Sn.test(e)||Cn.test(e)||wn.test(e)}function An(e){return!!(Tn.test(e)||En.test(e)||Dn.test(e)&&!On.test(e))}function jn(e){let t=[];for(let n=0;n<e.length;n++)if(e[n]===`$`&&!(n>0&&e[n-1]===`\\`)){if(n+1<e.length&&e[n+1]===`$`){n++;continue}n>0&&e[n-1]===`$`&&(n<2||e[n-2]!==`\\`)||t.push(n)}return t}function Mn(e,t,n){let r=e.slice(t+1,n);return r.length===0||r.includes(`
|
|
2
|
+
`)?null:r}function Nn(e){let t=jn(e);if(t.length<2)return e;let n=new Set,r=new Set,i=Array(t.length-1);for(let n=0;n<t.length-1;n++)i[n]=Mn(e,t[n],t[n+1]);let a=[];for(let e=0;e<t.length-1;e++){if(n.has(e))continue;let r=i[e];r!==null&&kn(r)&&(n.add(e),n.add(e+1),a.push([t[e],t[e+1]]))}let o=0;for(;o<t.length;){if(n.has(o)){o++;continue}let e=o+1;for(;e<t.length&&n.has(e);)e++;if(e>=t.length)break;if(e>o+1){r.add(t[o]),o++;continue}let a=i[o];if(a===null){o++;continue}An(a)&&(r.add(t[o]),r.add(t[e])),n.add(o),n.add(e),o=e+1}for(let e=0;e<t.length;e++)n.has(e)||e+1<t.length&&n.has(e+1)&&r.add(t[e]);if(r.size===0&&a.length===0)return e;let s=[],c=0,l=Array.from(r).sort((e,t)=>e-t),u=0,d=0;for(;u<l.length||d<a.length;){let t=u<l.length?l[u]:1/0;if(t<(d<a.length?a[d][0]:1/0))t>c&&s.push(e.slice(c,t)),s.push(`\\$`),c=t+1,u++;else{let[t,n]=a[d];t>c&&s.push(e.slice(c,t));let r=e.slice(t,n+1);for(s.push(r.replace(yn,`\\text{\\textdollar}`)),c=n+1;u<l.length&&l[u]<=n;)u++;d++}}return c<e.length&&s.push(e.slice(c)),s.join(``)}function Pn(e){let t=[],n=0;for(let r of e.matchAll(vn))t.push(Nn(e.slice(n,r.index))),t.push(r[0]),n=r.index+r[0].length;return t.push(Nn(e.slice(n))),t.join(``)}function Fn(e){if(!e?.includes(`$`))return e;let t=[],n=0;for(let r of e.matchAll(_n))t.push(Pn(e.slice(n,r.index))),t.push(r[0]),n=r.index+r[0].length;return t.push(Pn(e.slice(n))),t.join(``)}const In={note:`md-callout-info`,tip:`md-callout-info`,warning:`md-callout-attention`,important:`md-callout-attention`,caution:`md-callout-destructive`},Ln={note:`Note`,tip:`Tip`,warning:`Warning`,important:`Important`,caution:`Caution`};function Rn(){return e=>{Ie(e,e=>{if(e.type!==`containerDirective`&&e.type!==`leafDirective`&&e.type!==`textDirective`)return;let t=e;t.data||={};let n=t.data,r=t.attributes||{},i=t.name;if(i===`pagebreak`){n.hName=`hr`,n.hProperties={className:`md-pagebreak`};return}if(i===`columns`){n.hName=`div`,n.hProperties={className:`md-columns`};return}if(i===`column`){n.hName=`div`;let e={className:`md-column`};r.width&&(e.style=`flex-basis:${r.width};flex-grow:0;flex-shrink:0`),n.hProperties=e;return}if(i in In){n.hName=`div`,n.hProperties={className:`md-callout ${In[i]}`,"data-callout-type":i};let e=Ln[i];if(e&&t.children){let n={type:`paragraph`,data:{hName:`p`,hProperties:{className:`md-callout-title`}},children:[{type:`text`,value:e}]};t.children.unshift(n)}return}n.hName=`div`,n.hProperties={className:`md-${i}`,...Object.fromEntries(Object.entries(r).filter(([e])=>e!==`class`))},r.class&&(n.hProperties.className+=` ${r.class}`)})}}const zn=/(?:^|[^\\])\$/,Bn=[];let Vn,Hn;function Un(){return Hn||=import(`rehype-katex`).then(({default:e})=>(Vn=e,e)),Hn}function Wn(e){let t=C.useMemo(()=>zn.test(e),[e]),[n,r]=C.useState(()=>Vn);return C.useEffect(()=>{if(!t||n)return;let e=!1;return Un().then(t=>{e||r(()=>t)}).catch(e=>{console.error(`Failed to load KaTeX; math will render unstyled`,e)}),()=>{e=!0}},[t,n]),C.useMemo(()=>n?[n]:Bn,[n])}const Gn=[`artifact:`,`image:`,`store:`,`document:`,`document://`,`collection:`,`interaction:`,`prompt:`,`agent:`,`workflow:`,`process:`,`run:`];function Kn(e){return Gn.some(t=>e.startsWith(t))?e:De(e)}function qn(){return e=>{Ie(e,`html`,(e,t,n)=>{let r=e,i=n;if(typeof r.value==`string`&&/<!--[\s\S]*?-->/.test(r.value)&&i?.children&&typeof t==`number`)return i.children.splice(t,1),[Fe,t]})}}const Jn=Vt();function Y({children:e,components:n,remarkPlugins:r=[],removeComments:i=!0,artifactRunId:a,onArtifactOpen:o,className:s,codeClassName:c,inlineCodeClassName:l,linkClassName:u,imageClassName:d,onProposalSelect:f,onProposalSubmit:p,preserveSourcePositions:m=!1}){let h=Ke(),g=C.useMemo(()=>m?e:gn(pn(Fn(e))),[e,m]),_=C.useMemo(()=>{let e=[je,Ae,Rn,Me,ke,Pe,Ne,...r];return i&&e.push(qn),e},[r,i]),v=Wn(g),y=C.useMemo(()=>({handlers:{...Oe}}),[]),b=C.useMemo(()=>{let e=n||{},r=e.code,i=e.a,s=e.img,f=({node:e,className:n,children:i,...a})=>{let o=/language-([\w-]+)/.exec(n||``),s=!o,u=o?o[1]:``;if(!s&&u){if(h){let e=h.getComponent(u);if(e){let n=String(i||``).trim();return t(e,{code:n,language:u})}}if(Bt(u)){let e=String(i||``).trim();return t(zt,{code:e,language:u})}let e=Jn[u];if(e){let n=String(i||``).trim();return t(e,{code:n,language:u})}}return typeof r==`function`?t(r,{node:e,className:n,...a,children:i}):t(`code`,{...a,className:s?`px-1.5 py-0.5 rounded ${l||``}`:` ${c||``}`,children:i})},p=e=>{let{node:n,href:r,children:s,...c}=e;return t(en,{node:n,href:r,className:u,artifactRunId:a,onArtifactOpen:o,ExistingLink:typeof i==`function`?i:void 0,...c,children:s})},m=e=>{let{node:n,src:r,alt:i,title:o,...c}=e;return o?t(Kt,{src:r,alt:i,caption:o,className:d,artifactRunId:a}):t(Jt,{node:n,src:r,alt:i,className:d,artifactRunId:a,ExistingImg:typeof s==`function`?s:void 0,...c})};return{...e,code:f,a:p,img:m}},[n,a,o,h,c,l,u,d]),x=t(We,{artifactRunId:a,onProposalSelect:f,onProposalSubmit:p,MarkdownRenderer:Y,children:t(Ee,{remarkPlugins:_,rehypePlugins:v,remarkRehypeOptions:y,components:b,urlTransform:Kn,children:g})});return s?t(`div`,{className:`md-content ${s}`,children:x}):t(`div`,{className:`md-content`,children:x})}const X=e=>e.chain(),Yn=e=>e.can().chain();function Xn(e){let[,t]=N(0);A(()=>{if(!e)return;let n=()=>t(e=>e+1);return e.on(`transaction`,n),e.on(`selectionUpdate`,n),()=>{e.off(`transaction`,n),e.off(`selectionUpdate`,n)}},[e])}const Z=e=>e.preventDefault();function Zn(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`c-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Qn(e){let{from:t,to:n}=e.state.selection;if(t>=n)return null;let r=e.state.doc.textBetween(t,n,`
|
|
3
|
+
`,` `).trim();if(!r)return null;let i=e.state.doc.resolve(t),a=`paragraph`;for(let e=i.depth;e>=0;e--){let t=i.node(e).type.name;if(t===`heading`){a=`heading`;break}if(t===`codeBlock`||t===`vertesiaCodeBlock`){a=`code block`;break}if(t===`blockquote`){a=`quote`;break}if(t===`listItem`||t===`taskItem`){a=`list item`;break}if(t===`table`){a=`table`;break}}return{blockLabel:a,quote:r,from:t,to:n}}function $n(e){let t=e.length,n=e.map((e,t)=>`${t+1}. On the ${e.blockLabel} “${e.quote}”:\n ${e.comment}`);return[`I've left ${t} comment${t===1?``:`s`} on the document:`,``,...n,``,`Please revise the document to address each comment, preserving everything else.`].join(`
|
|
4
|
+
`)}function er(e,t){return{contextElement:e.view.dom,getBoundingClientRect:()=>{try{let n=e.view.coordsAtPos(t.to),r=Math.max(1,n.bottom-n.top);return new DOMRect(n.right,n.top,1,r)}catch{return e.view.dom.getBoundingClientRect()}}}}function tr({editor:e,selection:r,composing:i,draft:a,onStart:o,onDraftChange:c,onCancel:l,onAdd:u}){let{t:d}=S(),f=b(),{refs:p,floatingStyles:m}=He({placement:`right-start`,strategy:`fixed`,middleware:[Be(8),ze({fallbackPlacements:[`left-start`,`bottom-start`]}),Ve({padding:12})],whileElementsMounted:Re}),h=j(()=>er(e,r),[e,r]);return A(()=>{p.setPositionReference(h)},[h,p]),t(Le,{root:f,children:t(`div`,{ref:p.setFloating,style:m,className:`pointer-events-auto z-100`,children:i?n(`div`,{role:`dialog`,"aria-label":d(`agent.commentOnSelection`),className:`w-80 max-w-[calc(100vw-1.5rem)] space-y-2 rounded-lg border border-mixer-muted/25 bg-popover p-3 text-popover-foreground shadow-lg`,children:[n(`div`,{className:`line-clamp-2 text-xs text-muted`,children:[t(`span`,{className:`font-medium text-foreground`,children:d(`agent.commentingOn`)}),` `,n(`span`,{className:`italic`,children:[`“`,r.quote,`”`]})]}),t(_,{value:a,onChange:e=>c(e.target.value),placeholder:d(`agent.commentOnSelectionPlaceholder`),rows:3,autoFocus:!0,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),l();return}e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u())}}),n(`div`,{className:`flex justify-end gap-2`,children:[t(s,{variant:`outline`,size:`sm`,onClick:l,children:d(`store.cancelEdit`)}),t(s,{size:`sm`,onClick:u,disabled:!a.trim(),children:d(`agent.addComment`)})]})]}):t(v,{description:d(`agent.commentOnSelection`),asChild:!0,children:t(s,{variant:`secondary`,size:`sm`,onMouseDown:Z,onClick:o,"aria-label":d(`agent.commentOnSelection`),className:`size-9 rounded-full p-0 shadow-md`,children:t(V,{className:`size-4`})})})})})}function Q({icon:e,label:n,active:r=!1,disabled:i=!1,onClick:a}){return t(s,{variant:`ghost`,size:`sm`,"aria-label":n,title:n,"aria-pressed":r,disabled:i,onMouseDown:Z,onClick:a,className:y(`size-8 shrink-0 rounded-md p-0 text-foreground hover:bg-muted/60`,r&&`bg-muted text-foreground`),children:t(e,{className:`size-4`})})}function nr(){return t(`div`,{className:`mx-0.5 h-5 w-px shrink-0 bg-mixer-muted/30`,"aria-hidden":!0})}function rr({onSend:e,hasUnsentChanges:r,isSending:i,disabled:a}){let{t:o}=S();return n(s,{variant:r?`primary`:`ghost`,size:`sm`,className:y(`h-8 gap-1.5`,!r&&`text-muted`),onMouseDown:Z,onClick:()=>void e(),disabled:a||!r||i,children:[i?t(g,{size:`sm`}):t(he,{className:`size-3.5`}),o(`agent.sendChangesToAgent`)]})}function ir({editor:r,className:i,editable:a=!0,onSendComment:o,onSendChangesToAgent:f,hasUnsentChanges:p=!1,isSendingChanges:m=!1,sendChangesDisabled:h=!1,toolbarStatus:g}){let{t:_}=S(),v=x();Xn(r);let[b,C]=N(!1),[w,T]=N(``),[E,D]=N(null),[k,ee]=N(null),[j,P]=N([]),[te,F]=N(!1),[re,ae]=N(!1),oe=M(null);A(()=>{if(!r||!o)return;let e=()=>{let e=Qn(r);ee(e),e&&(oe.current=e)};return e(),r.on(`selectionUpdate`,e),r.on(`transaction`,e),()=>{r.off(`selectionUpdate`,e),r.off(`transaction`,e)}},[r,o]);let L=O(()=>{let e=oe.current;if(!e){v({status:`info`,title:_(`agent.selectTextToComment`),duration:2500});return}D(e),T(``),C(!0)},[_,v]),se=O(()=>{C(!1),D(null),T(``)},[]),R=O(()=>{let e=w.trim();!E||!e||(P(t=>[...t,{id:Zn(),...E,comment:e}]),C(!1),D(null),T(``),F(!0))},[w,E]),le=O(e=>{P(t=>t.filter(t=>t.id!==e))},[]),de=O(async()=>{if(!(!o||j.length===0||re)){ae(!0);try{await o($n(j)),P([]),F(!1)}finally{ae(!1)}}},[re,o,j]);if(!r)return null;let B=[1,2,3].find(e=>r.isActive(`heading`,{level:e})),fe=_(B===1?`richText.heading1`:B===2?`richText.heading2`:B===3?`richText.heading3`:`richText.paragraph`),V=r.isActive(`table`),pe=E??k;return n(e,{children:[n(`div`,{role:`toolbar`,"aria-label":_(`richText.blockStyle`),className:y(`flex min-h-10 shrink-0 items-center gap-0.5 overflow-x-auto border-b border-mixer-muted/25 px-1.5 py-1`,i),children:[t(Q,{icon:ye,label:_(`richText.undo`),disabled:!a||!Yn(r).focus().undo().run(),onClick:()=>X(r).focus().undo().run()}),t(Q,{icon:U,label:_(`richText.redo`),disabled:!a||!Yn(r).focus().redo().run(),onClick:()=>X(r).focus().redo().run()}),t(nr,{}),n(c,{children:[t(d,{asChild:!0,children:n(s,{variant:`ghost`,size:`sm`,disabled:!a,onMouseDown:Z,className:`h-8 shrink-0 gap-1 px-2 text-xs font-medium text-foreground hover:bg-muted/60`,children:[fe,t(ie,{className:`size-3 opacity-60`})]})}),n(l,{align:`start`,children:[t(u,{onClick:()=>X(r).focus().setParagraph().run(),children:_(`richText.paragraph`)}),t(u,{onClick:()=>X(r).focus().setHeading({level:1}).run(),children:_(`richText.heading1`)}),t(u,{onClick:()=>X(r).focus().setHeading({level:2}).run(),children:_(`richText.heading2`)}),t(u,{onClick:()=>X(r).focus().setHeading({level:3}).run(),children:_(`richText.heading3`)})]})]}),t(nr,{}),t(Q,{icon:ne,label:_(`richText.bold`),active:r.isActive(`bold`),disabled:!a,onClick:()=>X(r).focus().toggleBold().run()}),t(Q,{icon:ce,label:_(`richText.italic`),active:r.isActive(`italic`),disabled:!a,onClick:()=>X(r).focus().toggleItalic().run()}),t(Q,{icon:_e,label:_(`richText.strike`),active:r.isActive(`strike`),disabled:!a,onClick:()=>X(r).focus().toggleStrike().run()}),t(Q,{icon:I,label:_(`richText.inlineCode`),active:r.isActive(`code`),disabled:!a,onClick:()=>X(r).focus().toggleCode().run()}),t(nr,{}),t(Q,{icon:ue,label:_(`richText.bulletList`),active:r.isActive(`bulletList`),disabled:!a,onClick:()=>X(r).focus().toggleBulletList().run()}),t(Q,{icon:z,label:_(`richText.orderedList`),active:r.isActive(`orderedList`),disabled:!a,onClick:()=>X(r).focus().toggleOrderedList().run()}),t(Q,{icon:H,label:_(`richText.blockquote`),active:r.isActive(`blockquote`),disabled:!a,onClick:()=>X(r).focus().toggleBlockquote().run()}),t(Q,{icon:ge,label:_(`richText.codeBlock`),active:r.isActive(`codeBlock`),disabled:!a,onClick:()=>X(r).focus().toggleCodeBlock().run()}),t(nr,{}),t(Q,{icon:me,label:_(`richText.horizontalRule`),disabled:!a,onClick:()=>X(r).focus().setHorizontalRule().run()}),n(c,{children:[t(d,{asChild:!0,children:t(s,{variant:`ghost`,size:`sm`,disabled:!a,"aria-label":_(`richText.tableActions`),title:_(V?`richText.tableActions`:`richText.table`),onMouseDown:Z,className:y(`size-8 shrink-0 rounded-md p-0 text-foreground hover:bg-muted/60`,V&&`bg-muted`),children:t(ve,{className:`size-4`})})}),t(l,{align:`start`,children:V?n(e,{children:[t(u,{onClick:()=>X(r).focus().addRowBefore().run(),children:_(`richText.addRowAbove`)}),t(u,{onClick:()=>X(r).focus().addRowAfter().run(),children:_(`richText.addRowBelow`)}),t(u,{onClick:()=>X(r).focus().deleteRow().run(),children:_(`richText.deleteRow`)}),t(u,{onClick:()=>X(r).focus().addColumnBefore().run(),children:_(`richText.addColumnLeft`)}),t(u,{onClick:()=>X(r).focus().addColumnAfter().run(),children:_(`richText.addColumnRight`)}),t(u,{onClick:()=>X(r).focus().deleteColumn().run(),children:_(`richText.deleteColumn`)}),t(u,{onClick:()=>X(r).focus().deleteTable().run(),children:_(`richText.deleteTable`)})]}):t(u,{onClick:()=>X(r).focus().insertTable({rows:3,cols:3,withHeaderRow:!0}).run(),children:_(`richText.table`)})})]}),o||f?n(`div`,{className:`ms-auto flex shrink-0 items-center gap-1 ps-1`,children:[j.length>0?n(e,{children:[n(s,{variant:`ghost`,size:`sm`,className:`h-8 px-2 text-xs text-muted`,onClick:()=>F(e=>!e),children:[_(`agent.comments`),` (`,j.length,`)`]}),n(s,{size:`sm`,className:`h-8`,onClick:()=>void de(),disabled:re,children:[t(he,{className:`me-1 size-4`}),_(`agent.sendToAgent`)]})]}):null,f?n(e,{children:[g,t(rr,{onSend:f,hasUnsentChanges:p,isSending:m,disabled:h})]}):null]}):null]}),o&&pe?t(tr,{editor:r,selection:pe,composing:b,draft:w,onStart:L,onDraftChange:T,onCancel:se,onAdd:R}):null,te&&j.length>0?t(`ul`,{className:`max-h-48 shrink-0 space-y-1.5 overflow-y-auto border-b border-mixer-muted/15 px-3 py-2`,children:j.map(e=>n(`li`,{className:`flex items-start gap-2 rounded-md border border-mixer-muted/20 bg-muted/10 px-2 py-1.5`,children:[n(`div`,{className:`min-w-0 flex-1`,children:[n(`div`,{className:`truncate text-[11px] italic text-muted`,children:[`“`,e.quote,`”`]}),t(`div`,{className:`whitespace-pre-wrap text-xs text-foreground`,children:e.comment})]}),t(s,{variant:`ghost`,size:`sm`,"aria-label":_(`agent.deleteComment`),title:_(`agent.deleteComment`),className:`size-6 shrink-0 p-0 text-muted`,onClick:()=>le(e.id),children:t(be,{className:`size-3.5`})})]},e.id))}):null]})}const ar=Vt();function or({code:e,language:n}){let r=Ke(),i=n?r?.getComponent(n):void 0,a=n?ar[n]:void 0,o=n?.startsWith(`expand:`)?zt:i??a;return o?t(o,{code:e,language:n}):null}function sr({src:e,alt:n,title:r}){let{artifactRunId:i}=G();return r?t(Kt,{src:e,alt:n,caption:r,artifactRunId:i}):t(Jt,{src:e,alt:n,artifactRunId:i})}function cr({href:e,title:n,children:r}){let{artifactRunId:i}=G();return t(en,{href:e,artifactRunId:i,children:t(`span`,{title:n,children:r})})}function lr({raw:e}){let{artifactRunId:n}=G();return t(Y,{artifactRunId:n,children:e})}const $={codeBlock:or,image:sr,link:cr,opaqueBlock:lr};function ur({artifactRunId:e,...n}){return t(We,{artifactRunId:e,MarkdownRenderer:Y,children:t(a,{...n,...$})})}function dr({artifactRunId:e,className:i,contentClassName:a,editorClassName:o,onEditor:s,...c}){let[l,u]=N(null),d=O(e=>{u(e),s?.(e)},[s]);return t(We,{artifactRunId:e,MarkdownRenderer:Y,children:n(`div`,{className:y(`overflow-hidden rounded-md border border-mixer-muted/30 bg-background`,i),children:[t(ir,{editor:l,editable:c.editable!==!1}),t(r,{...c,...$,onEditor:d,contentClassName:y(`max-h-80 overflow-auto`,a),editorClassName:y(`vprose prose-sm min-h-24 max-w-none px-3 py-2 outline-none`,o)})]})})}function fr({artifactRunId:e,className:r,contentClassName:a,editorClassName:c,onEditor:l,onSendComment:u,onSendChangesToAgent:d,hasUnsentChanges:g=!1,isSendingChanges:v=!1,sendChangesDisabled:b=!1,toolbarStatus:x,...C}){let{t:w}=S(),[T,E]=N(null),D=O(e=>{E(e),l?.(e)},[l]),[k,A]=N(()=>o(C.value)===`lossy`?`choose`:`rich-text`);return n(We,{artifactRunId:e,MarkdownRenderer:Y,children:[(k===`choose`?`source`:k)===`rich-text`?n(`div`,{className:y(`flex h-full min-h-0 flex-col bg-background`,r),children:[t(ir,{editor:T,editable:C.editable!==!1,onSendComment:u,onSendChangesToAgent:d,hasUnsentChanges:g,isSendingChanges:v,sendChangesDisabled:b,toolbarStatus:x}),t(i,{...C,...$,onEditor:D,ariaLabel:C.ariaLabel??w(`richText.documentEditor`),className:`flex min-h-0 flex-1 flex-col`,contentClassName:y(`min-h-0 flex-1 overflow-auto`,a),editorClassName:y(`vprose prose-sm mx-auto min-h-full w-full max-w-5xl px-6 py-5 outline-none`,c)})]}):n(`div`,{className:y(`flex h-full min-h-0 flex-col bg-background`,r),children:[d?n(`div`,{className:`flex min-h-10 shrink-0 items-center justify-end gap-1 border-b border-mixer-muted/25 px-1.5 py-1`,children:[x,t(rr,{onSend:d,hasUnsentChanges:g,isSending:v,disabled:b})]}):null,t(_,{value:C.value,onChange:e=>C.onChange?.(e.target.value),onFocus:()=>C.onFocusChange?.(!0),onBlur:()=>C.onFocusChange?.(!1),disabled:C.editable===!1,"aria-label":w(`richText.markdownSourceEditor`),className:y(`vertesia-markdown-document-editor-content min-h-0 flex-1 resize-none rounded-none`,`border-0 px-6 py-5 font-mono text-sm leading-6 outline-none focus-visible:ring-0`,a,c)})]}),n(f,{isOpen:k===`choose`,onClose:()=>A(`source`),className:`sm:max-w-lg`,disableCloseOnClickOutside:!0,children:[t(h,{children:w(`richText.sourceCompatibilityWarningTitle`)}),t(p,{children:t(`p`,{className:`text-sm text-muted`,children:w(`richText.sourceCompatibilityWarningDescription`)})}),n(m,{align:`right`,children:[t(s,{variant:`outline`,onClick:()=>A(`source`),children:w(`richText.editMarkdownSource`)}),t(s,{variant:`secondary`,onClick:()=>A(`rich-text`),children:w(`richText.continueRichText`)})]})]})]})}export{dr as VertesiaMarkdownComponentEditor,fr as VertesiaMarkdownDocumentEditor,ur as VertesiaMarkdownRichTextEditor,$ as vertesiaRichTextRenderers};
|
|
5
5
|
//# sourceMappingURL=vertesia-ui-rich-text.js.map
|