@parhelia/core 0.4.12800 → 0.4.12825
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/dist/agents-view/AgentsWorkspaceView.d.ts +2 -0
- package/dist/agents-view/AgentsWorkspaceView.js +12 -3
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/components/WorkspaceHomeView.d.ts +14 -3
- package/dist/components/WorkspaceHomeView.js +7 -4
- package/dist/components/WorkspaceHomeView.js.map +1 -1
- package/dist/components/ui/dialog.d.ts +7 -1
- package/dist/components/ui/dialog.js +6 -3
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/popover.d.ts +8 -0
- package/dist/components/ui/popover.js +40 -6
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/tooltip.d.ts +2 -2
- package/dist/components/ui/tooltip.js +9 -4
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/config/config.js +5 -2
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ConfirmationDialog.d.ts +1 -0
- package/dist/editor/ConfirmationDialog.js +9 -2
- package/dist/editor/ConfirmationDialog.js.map +1 -1
- package/dist/editor/ContentTree.d.ts +9 -1
- package/dist/editor/ContentTree.js +50 -23
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldList.js +41 -4
- package/dist/editor/FieldList.js.map +1 -1
- package/dist/editor/FieldListField.js +156 -123
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/LinkEditorDialog.d.ts +3 -0
- package/dist/editor/LinkEditorDialog.js +9 -4
- package/dist/editor/LinkEditorDialog.js.map +1 -1
- package/dist/editor/MainLayout.js +9 -2
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/SetupWizard.js +1 -1
- package/dist/editor/SetupWizard.js.map +1 -1
- package/dist/editor/UsedBy.d.ts +2 -0
- package/dist/editor/UsedBy.js +50 -10
- package/dist/editor/UsedBy.js.map +1 -1
- package/dist/editor/agent-changes/agentChangeTargets.d.ts +58 -0
- package/dist/editor/agent-changes/agentChangeTargets.js +174 -0
- package/dist/editor/agent-changes/agentChangeTargets.js.map +1 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.d.ts +57 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js +109 -0
- package/dist/editor/agent-changes/agentChangeTextHighlight.js.map +1 -0
- package/dist/editor/ai/AgentImagePreview.d.ts +13 -0
- package/dist/editor/ai/AgentImagePreview.js +41 -0
- package/dist/editor/ai/AgentImagePreview.js.map +1 -0
- package/dist/editor/ai/AgentStatusBadge.js +11 -9
- package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
- package/dist/editor/ai/Agents.js +2 -2
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/ContentInspectorPopover.d.ts +2 -1
- package/dist/editor/ai/ContentInspectorPopover.js +3 -3
- package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
- package/dist/editor/ai/MediaImage.js +2 -1
- package/dist/editor/ai/MediaImage.js.map +1 -1
- package/dist/editor/ai/activityRowNavigation.d.ts +28 -0
- package/dist/editor/ai/activityRowNavigation.js +53 -0
- package/dist/editor/ai/activityRowNavigation.js.map +1 -0
- package/dist/editor/ai/agentDiagnostics.d.ts +1 -1
- package/dist/editor/ai/agentDiagnostics.js +8 -0
- package/dist/editor/ai/agentDiagnostics.js.map +1 -1
- package/dist/editor/ai/agentMessageGrouping.d.ts +1 -1
- package/dist/editor/ai/agentMessageGrouping.js +2 -13
- package/dist/editor/ai/agentMessageGrouping.js.map +1 -1
- package/dist/editor/ai/agentMessageHelpers.js +21 -1
- package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionSelectors.js +0 -4
- package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionSnapshot.d.ts +15 -0
- package/dist/editor/ai/terminal/agentSessionSnapshot.js +103 -3
- package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionState.d.ts +0 -2
- package/dist/editor/ai/terminal/agentSessionState.js +13 -13
- package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
- package/dist/editor/ai/terminal/agentTurnTiming.d.ts +2 -0
- package/dist/editor/ai/terminal/agentTurnTiming.js +26 -1
- package/dist/editor/ai/terminal/agentTurnTiming.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.d.ts +3 -1
- package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +53 -11
- package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentBanners.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentBanners.js +3 -2
- package/dist/editor/ai/terminal/components/AgentBanners.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js +6 -5
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentDocumentList.js +20 -10
- package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentGreeting.js +1 -1
- package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +12 -9
- package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.d.ts +9 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js +75 -0
- package/dist/editor/ai/terminal/components/AgentMemorySettingsSection.js.map +1 -0
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +4 -72
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentRunStatusBanners.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +2 -2
- package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentSettingsContent.js +2 -1
- package/dist/editor/ai/terminal/components/AgentSettingsContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentSettingsSections.d.ts +1 -0
- package/dist/editor/ai/terminal/components/AgentSettingsSections.js +1 -1
- package/dist/editor/ai/terminal/components/AgentSettingsSections.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js +2 -2
- package/dist/editor/ai/terminal/components/AgentSkillSettingsSection.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js +2 -2
- package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +9 -3
- package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +2 -6
- package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +8 -2
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentThinkingIndicator.d.ts +6 -1
- package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js +5 -3
- package/dist/editor/ai/terminal/components/AgentThinkingIndicator.js.map +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js +20 -16
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.js +2 -2
- package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.d.ts +3 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js +47 -0
- package/dist/editor/ai/terminal/components/CreateItemToolCallContent.js.map +1 -0
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js +15 -4
- package/dist/editor/ai/terminal/components/ResponseTurnDuration.js.map +1 -1
- package/dist/editor/ai/terminal/components/ToolCallDisplay.d.ts +2 -1
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js +22 -54
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/UserMessage.d.ts +6 -0
- package/dist/editor/ai/terminal/components/UserMessage.js +17 -4
- package/dist/editor/ai/terminal/components/UserMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/agentThinkingStyles.d.ts +5 -0
- package/dist/editor/ai/terminal/components/agentThinkingStyles.js +5 -0
- package/dist/editor/ai/terminal/components/agentThinkingStyles.js.map +1 -1
- package/dist/editor/ai/terminal/components/toolCallContentRenderers.d.ts +2 -0
- package/dist/editor/ai/terminal/components/toolCallContentRenderers.js +6 -0
- package/dist/editor/ai/terminal/components/toolCallContentRenderers.js.map +1 -1
- package/dist/editor/ai/terminal/components/toolCallResultJson.d.ts +1 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js +46 -0
- package/dist/editor/ai/terminal/components/toolCallResultJson.js.map +1 -0
- package/dist/editor/ai/terminal/types.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentDraftInitializer.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentDraftInitializer.js +51 -14
- package/dist/editor/ai/terminal/useAgentDraftInitializer.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentEditorContext.js +13 -3
- package/dist/editor/ai/terminal/useAgentEditorContext.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentLoadPipeline.d.ts +2 -0
- package/dist/editor/ai/terminal/useAgentLoadPipeline.js +3 -1
- package/dist/editor/ai/terminal/useAgentLoadPipeline.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js +5 -1
- package/dist/editor/ai/terminal/useAgentOperationHistoryLoader.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js +33 -1
- package/dist/editor/ai/terminal/useAgentOperationSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentProviderWait.d.ts +18 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js +23 -0
- package/dist/editor/ai/terminal/useAgentProviderWait.js.map +1 -0
- package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.d.ts +1 -1
- package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js +3 -3
- package/dist/editor/ai/terminal/useAgentRunCompletionSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunDeltaRouter.d.ts +2 -2
- package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js +5 -5
- package/dist/editor/ai/terminal/useAgentRunDeltaRouter.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js +14 -10
- package/dist/editor/ai/terminal/useAgentRunDeltaSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +6 -7
- package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js +5 -5
- package/dist/editor/ai/terminal/useAgentRunMessagePipeline.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.d.ts +1 -1
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +23 -16
- package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentServerReconciler.js +11 -0
- package/dist/editor/ai/terminal/useAgentServerReconciler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSession.d.ts +0 -2
- package/dist/editor/ai/terminal/useAgentSession.js +8 -15
- package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSessionFacade.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentSessionFacade.js +2 -0
- package/dist/editor/ai/terminal/useAgentSessionFacade.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSettleCompletedRun.d.ts +1 -1
- package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js +3 -3
- package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentStreamPipeline.d.ts +2 -2
- package/dist/editor/ai/terminal/useAgentStreamPipeline.js +5 -5
- package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.d.ts +0 -1
- package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js +3 -12
- package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +24 -7
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js +6 -1
- package/dist/editor/ai/terminal/useAgentSubmitResponseHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js +13 -10
- package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/bridge/bridgeKeys.d.ts +5 -0
- package/dist/editor/bridge/bridgeKeys.js +8 -0
- package/dist/editor/bridge/bridgeKeys.js.map +1 -0
- package/dist/editor/bridge/linkDownload.d.ts +3 -0
- package/dist/editor/bridge/linkDownload.js +52 -0
- package/dist/editor/bridge/linkDownload.js.map +1 -0
- package/dist/editor/bridge/protocol.d.ts +39 -0
- package/dist/editor/bridge/protocol.js +3 -1
- package/dist/editor/bridge/protocol.js.map +1 -1
- package/dist/editor/client/EditorShell.js +34 -24
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/OperationDialogContent.d.ts +10 -3
- package/dist/editor/client/OperationDialogContent.js +27 -4
- package/dist/editor/client/OperationDialogContent.js.map +1 -1
- package/dist/editor/client/agentLoadItemPolicy.d.ts +22 -0
- package/dist/editor/client/agentLoadItemPolicy.js +60 -0
- package/dist/editor/client/agentLoadItemPolicy.js.map +1 -0
- package/dist/editor/client/editContext.d.ts +16 -0
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +5 -0
- package/dist/editor/client/hooks/useSocketMessageHandler.js +56 -14
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/itemsRepository.js +26 -7
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/localUserEditActivity.d.ts +3 -0
- package/dist/editor/client/localUserEditActivity.js +12 -0
- package/dist/editor/client/localUserEditActivity.js.map +1 -0
- package/dist/editor/client/operations.js +60 -15
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/commands/commands.d.ts +6 -0
- package/dist/editor/commands/commands.js.map +1 -1
- package/dist/editor/commands/undo.js +8 -2
- package/dist/editor/commands/undo.js.map +1 -1
- package/dist/editor/componentVisualMode.d.ts +14 -0
- package/dist/editor/componentVisualMode.js +43 -0
- package/dist/editor/componentVisualMode.js.map +1 -0
- package/dist/editor/field-types/ImageFieldEditor.js +1 -1
- package/dist/editor/field-types/ImageFieldEditor.js.map +1 -1
- package/dist/editor/field-types/MultiLineText.js +29 -46
- package/dist/editor/field-types/MultiLineText.js.map +1 -1
- package/dist/editor/field-types/PictureFieldEditor.js +1 -1
- package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
- package/dist/editor/field-types/RichTextEditorComponent.js +19 -3
- package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
- package/dist/editor/field-types/SingleLineText.js +28 -79
- package/dist/editor/field-types/SingleLineText.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.js +67 -10
- package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
- package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js +4 -1
- package/dist/editor/field-types/richtext/components/SimpleToolbarButton.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ToolbarButton.js +4 -1
- package/dist/editor/field-types/richtext/components/ToolbarButton.js.map +1 -1
- package/dist/editor/field-types/richtext/types.d.ts +7 -0
- package/dist/editor/field-types/richtext/types.js.map +1 -1
- package/dist/editor/field-types/richtext/utils/changeHighlight.d.ts +18 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js +57 -0
- package/dist/editor/field-types/richtext/utils/changeHighlight.js.map +1 -0
- package/dist/editor/field-types/useFormFieldCaretPresence.d.ts +11 -0
- package/dist/editor/field-types/useFormFieldCaretPresence.js +33 -16
- package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
- package/dist/editor/field-types/useFormFieldSelectionRange.d.ts +36 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js +123 -0
- package/dist/editor/field-types/useFormFieldSelectionRange.js.map +1 -0
- package/dist/editor/field-types/useTextCompletion.js +13 -3
- package/dist/editor/field-types/useTextCompletion.js.map +1 -1
- package/dist/editor/find-replace/FindReplacePanel.d.ts +11 -0
- package/dist/editor/find-replace/FindReplacePanel.js +311 -0
- package/dist/editor/find-replace/FindReplacePanel.js.map +1 -0
- package/dist/editor/find-replace/findReplaceCommand.d.ts +8 -0
- package/dist/editor/find-replace/findReplaceCommand.js +25 -0
- package/dist/editor/find-replace/findReplaceCommand.js.map +1 -0
- package/dist/editor/find-replace/findReplaceMatches.d.ts +42 -0
- package/dist/editor/find-replace/findReplaceMatches.js +66 -0
- package/dist/editor/find-replace/findReplaceMatches.js.map +1 -0
- package/dist/editor/find-replace/findReplaceStore.d.ts +30 -0
- package/dist/editor/find-replace/findReplaceStore.js +61 -0
- package/dist/editor/find-replace/findReplaceStore.js.map +1 -0
- package/dist/editor/find-replace/findReplaceTargets.d.ts +49 -0
- package/dist/editor/find-replace/findReplaceTargets.js +110 -0
- package/dist/editor/find-replace/findReplaceTargets.js.map +1 -0
- package/dist/editor/find-replace/findReplaceText.d.ts +50 -0
- package/dist/editor/find-replace/findReplaceText.js +189 -0
- package/dist/editor/find-replace/findReplaceText.js.map +1 -0
- package/dist/editor/media-selector/AiImageSearchPrompt.d.ts +2 -1
- package/dist/editor/media-selector/AiImageSearchPrompt.js +2 -2
- package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
- package/dist/editor/media-selector/Thumbnails.d.ts +2 -1
- package/dist/editor/media-selector/Thumbnails.js +2 -2
- package/dist/editor/media-selector/Thumbnails.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +142 -42
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/media-selector/UploadZone.d.ts +6 -1
- package/dist/editor/media-selector/UploadZone.js +10 -7
- package/dist/editor/media-selector/UploadZone.js.map +1 -1
- package/dist/editor/media-selector/mediaFileType.d.ts +2 -0
- package/dist/editor/media-selector/mediaFileType.js +37 -0
- package/dist/editor/media-selector/mediaFileType.js.map +1 -1
- package/dist/editor/menubar/ActiveUsers.js +1 -1
- package/dist/editor/menubar/ActiveUsers.js.map +1 -1
- package/dist/editor/menubar/GenericToolbar.d.ts +2 -1
- package/dist/editor/menubar/GenericToolbar.js +2 -2
- package/dist/editor/menubar/GenericToolbar.js.map +1 -1
- package/dist/editor/menubar/ToolbarFactory.js +10 -2
- package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
- package/dist/editor/menubar/VersionSelector.js +2 -2
- package/dist/editor/menubar/VersionSelector.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +10 -3
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.d.ts +6 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js +31 -0
- package/dist/editor/menubar/toolbar-sections/FindReplaceControls.js.map +1 -0
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js +6 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js +1 -0
- package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
- package/dist/editor/notifications/WatchButton.js +11 -4
- package/dist/editor/notifications/WatchButton.js.map +1 -1
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.d.ts +20 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js +31 -0
- package/dist/editor/page-editor-chrome/AgentChangeHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +2 -2
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.d.ts +33 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js +290 -0
- package/dist/editor/page-editor-chrome/DiffHighlightOverlay.js.map +1 -0
- package/dist/editor/page-editor-chrome/FieldActionIndicator.js +8 -4
- package/dist/editor/page-editor-chrome/FieldActionIndicator.js.map +1 -1
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.d.ts +11 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js +117 -0
- package/dist/editor/page-editor-chrome/FindReplaceHighlightings.js.map +1 -0
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +27 -10
- package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -1
- package/dist/editor/page-editor-chrome/InsertComponentMenu.d.ts +6 -1
- package/dist/editor/page-editor-chrome/InsertComponentMenu.js +53 -6
- package/dist/editor/page-editor-chrome/InsertComponentMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.js +3 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +14 -2
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +67 -14
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +1 -1
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +6 -271
- package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
- package/dist/editor/page-editor-chrome/diffRulerSegments.d.ts +18 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js +37 -0
- package/dist/editor/page-editor-chrome/diffRulerSegments.js.map +1 -0
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +15 -2
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +2 -0
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +58 -5
- package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
- package/dist/editor/page-viewer/DeviceToolbar.js +53 -10
- package/dist/editor/page-viewer/DeviceToolbar.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.d.ts +6 -2
- package/dist/editor/page-viewer/MiniMap.js +152 -36
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +225 -32
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/bridgeFieldPatch.js +1 -0
- package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +6 -0
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +19 -1
- package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
- package/dist/editor/page-viewer/compareFrameWidth.d.ts +8 -0
- package/dist/editor/page-viewer/compareFrameWidth.js +25 -0
- package/dist/editor/page-viewer/compareFrameWidth.js.map +1 -0
- package/dist/editor/page-viewer/minimapViewport.d.ts +2 -0
- package/dist/editor/page-viewer/minimapViewport.js +31 -0
- package/dist/editor/page-viewer/minimapViewport.js.map +1 -0
- package/dist/editor/page-viewer/pageViewContext.d.ts +2 -1
- package/dist/editor/page-viewer/pageViewContext.js +10 -4
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/pageModel.d.ts +2 -0
- package/dist/editor/reviews/Comment.js +13 -12
- package/dist/editor/reviews/Comment.js.map +1 -1
- package/dist/editor/reviews/CommentDisplayPopover.js +25 -29
- package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/CommentEditor.js +58 -19
- package/dist/editor/reviews/CommentEditor.js.map +1 -1
- package/dist/editor/reviews/CommentImageAttachments.d.ts +12 -0
- package/dist/editor/reviews/CommentImageAttachments.js +19 -0
- package/dist/editor/reviews/CommentImageAttachments.js.map +1 -0
- package/dist/editor/reviews/CommentQuote.d.ts +4 -0
- package/dist/editor/reviews/CommentQuote.js +30 -0
- package/dist/editor/reviews/CommentQuote.js.map +1 -0
- package/dist/editor/reviews/CommentThreadAgentLink.d.ts +23 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js +37 -0
- package/dist/editor/reviews/CommentThreadAgentLink.js.map +1 -0
- package/dist/editor/reviews/CommentView.d.ts +2 -3
- package/dist/editor/reviews/CommentView.js +17 -14
- package/dist/editor/reviews/CommentView.js.map +1 -1
- package/dist/editor/reviews/Comments.js +14 -5
- package/dist/editor/reviews/Comments.js.map +1 -1
- package/dist/editor/reviews/MentionText.d.ts +5 -1
- package/dist/editor/reviews/MentionText.js +23 -0
- package/dist/editor/reviews/MentionText.js.map +1 -1
- package/dist/editor/reviews/ReviewCard.js +14 -8
- package/dist/editor/reviews/ReviewCard.js.map +1 -1
- package/dist/editor/reviews/ReviewersPanel.js +7 -2
- package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
- package/dist/editor/reviews/SuggestedEdit.js +75 -15
- package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
- package/dist/editor/reviews/SuggestionCommentThread.js +5 -4
- package/dist/editor/reviews/SuggestionCommentThread.js.map +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.d.ts +3 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js +7 -2
- package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/commentAgentAttachments.d.ts +5 -0
- package/dist/editor/reviews/commentAgentAttachments.js +51 -0
- package/dist/editor/reviews/commentAgentAttachments.js.map +1 -0
- package/dist/editor/reviews/commentAi.d.ts +29 -3
- package/dist/editor/reviews/commentAi.js +122 -34
- package/dist/editor/reviews/commentAi.js.map +1 -1
- package/dist/editor/reviews/commentImages.d.ts +49 -0
- package/dist/editor/reviews/commentImages.js +164 -0
- package/dist/editor/reviews/commentImages.js.map +1 -0
- package/dist/editor/reviews/feedbackAvatar.js +11 -5
- package/dist/editor/reviews/feedbackAvatar.js.map +1 -1
- package/dist/editor/reviews/feedbackCommentRules.d.ts +1 -1
- package/dist/editor/reviews/feedbackCommentRules.js +3 -9
- package/dist/editor/reviews/feedbackCommentRules.js.map +1 -1
- package/dist/editor/reviews/feedbackSelection.d.ts +13 -0
- package/dist/editor/reviews/feedbackSelection.js +37 -0
- package/dist/editor/reviews/feedbackSelection.js.map +1 -1
- package/dist/editor/reviews/suggestionDisplayValue.d.ts +24 -2
- package/dist/editor/reviews/suggestionDisplayValue.js +28 -4
- package/dist/editor/reviews/suggestionDisplayValue.js.map +1 -1
- package/dist/editor/reviews/useCommentImagePaste.d.ts +72 -0
- package/dist/editor/reviews/useCommentImagePaste.js +188 -0
- package/dist/editor/reviews/useCommentImagePaste.js.map +1 -0
- package/dist/editor/services/agentErrorMessage.js +5 -1
- package/dist/editor/services/agentErrorMessage.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +12 -0
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/agentStatus.d.ts +1 -0
- package/dist/editor/services/agentStatus.js +14 -0
- package/dist/editor/services/agentStatus.js.map +1 -1
- package/dist/editor/services/contentService.d.ts +2 -0
- package/dist/editor/services/contentService.js.map +1 -1
- package/dist/editor/services/editService.d.ts +17 -2
- package/dist/editor/services/editService.js +7 -2
- package/dist/editor/services/editService.js.map +1 -1
- package/dist/editor/services/searchService.d.ts +2 -1
- package/dist/editor/services/searchService.js +2 -1
- package/dist/editor/services/searchService.js.map +1 -1
- package/dist/editor/services/userResolution.js +6 -5
- package/dist/editor/services/userResolution.js.map +1 -1
- package/dist/editor/settings/index/RecentBatchesList.js +2 -1
- package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +12 -4
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +41 -22
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/EditHistory.js +2 -2
- package/dist/editor/sidebar/EditHistory.js.map +1 -1
- package/dist/editor/sidebar/MainContentTree.js +1 -1
- package/dist/editor/sidebar/MainContentTree.js.map +1 -1
- package/dist/editor/sidebar/MorePanelsButton.js +2 -2
- package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
- package/dist/editor/sidebar/NavigationPanelMenuItem.js +2 -2
- package/dist/editor/sidebar/NavigationPanelMenuItem.js.map +1 -1
- package/dist/editor/sidebar/OperationItem.js +2 -1
- package/dist/editor/sidebar/OperationItem.js.map +1 -1
- package/dist/editor/sidebar/Validation.js +38 -44
- package/dist/editor/sidebar/Validation.js.map +1 -1
- package/dist/editor/sidebar/liveComponentThumbnails.d.ts +66 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js +220 -0
- package/dist/editor/sidebar/liveComponentThumbnails.js.map +1 -0
- package/dist/editor/ui/ItemCollectionEditor.d.ts +17 -1
- package/dist/editor/ui/ItemCollectionEditor.js +17 -5
- package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
- package/dist/editor/ui/ItemList.d.ts +5 -0
- package/dist/editor/ui/ItemList.js +10 -2
- package/dist/editor/ui/ItemList.js.map +1 -1
- package/dist/editor/ui/ItemSearch.d.ts +7 -0
- package/dist/editor/ui/ItemSearch.js +14 -6
- package/dist/editor/ui/ItemSearch.js.map +1 -1
- package/dist/editor/ui/ParheliaMark.d.ts +15 -0
- package/dist/editor/ui/ParheliaMark.js +12 -0
- package/dist/editor/ui/ParheliaMark.js.map +1 -0
- package/dist/editor/ui/PublishDialog.js +3 -2
- package/dist/editor/ui/PublishDialog.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.js +58 -3
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.d.ts +15 -0
- package/dist/editor/ui/Splitter.js +77 -100
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/ui/TreeListSelector.d.ts +15 -1
- package/dist/editor/ui/TreeListSelector.js +2 -2
- package/dist/editor/ui/TreeListSelector.js.map +1 -1
- package/dist/editor/ui/WorkboxItemsTable.d.ts +6 -1
- package/dist/editor/ui/WorkboxItemsTable.js +44 -48
- package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
- package/dist/editor/ui/publishReadiness.d.ts +13 -0
- package/dist/editor/ui/publishReadiness.js +56 -0
- package/dist/editor/ui/publishReadiness.js.map +1 -1
- package/dist/editor/undoEligibility.d.ts +2 -0
- package/dist/editor/undoEligibility.js +8 -0
- package/dist/editor/undoEligibility.js.map +1 -0
- package/dist/editor/utils/keyboardNavigation.js +16 -0
- package/dist/editor/utils/keyboardNavigation.js.map +1 -1
- package/dist/editor/validation/ValidationIssuesPopover.d.ts +39 -0
- package/dist/editor/validation/ValidationIssuesPopover.js +51 -0
- package/dist/editor/validation/ValidationIssuesPopover.js.map +1 -0
- package/dist/editor/validation/navigateToValidationIssue.d.ts +13 -0
- package/dist/editor/validation/navigateToValidationIssue.js +43 -0
- package/dist/editor/validation/navigateToValidationIssue.js.map +1 -0
- package/dist/editor/validation/validationFixAgent.d.ts +26 -0
- package/dist/editor/validation/validationFixAgent.js +124 -0
- package/dist/editor/validation/validationFixAgent.js.map +1 -0
- package/dist/editor/validation/validationSeverity.d.ts +15 -0
- package/dist/editor/validation/validationSeverity.js +47 -0
- package/dist/editor/validation/validationSeverity.js.map +1 -0
- package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -4
- package/dist/editor/version-diff/versionDiffGeometryKeys.js +21 -7
- package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -1
- package/dist/editor/version-diff/versionDiffTargets.d.ts +6 -1
- package/dist/editor/version-diff/versionDiffTargets.js +5 -5
- package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
- package/dist/editor/views/editorSlotContext.d.ts +4 -0
- package/dist/editor/views/editorSlotContext.js +37 -1
- package/dist/editor/views/editorSlotContext.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +7 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/splash-screen/ModernSplashScreen.js +10 -8
- package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
- package/dist/splash-screen/RecentPages.js +35 -20
- package/dist/splash-screen/RecentPages.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +243 -81
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/AttentionPromptDialog.d.ts +13 -0
- package/dist/task-board/components/AttentionPromptDialog.js +45 -0
- package/dist/task-board/components/AttentionPromptDialog.js.map +1 -0
- package/dist/task-board/components/CommentsList.js +11 -11
- package/dist/task-board/components/CommentsList.js.map +1 -1
- package/dist/task-board/components/GoalDataView.d.ts +53 -1
- package/dist/task-board/components/GoalDataView.js +164 -55
- package/dist/task-board/components/GoalDataView.js.map +1 -1
- package/dist/task-board/components/GoalFindingsTable.d.ts +43 -0
- package/dist/task-board/components/GoalFindingsTable.js +160 -0
- package/dist/task-board/components/GoalFindingsTable.js.map +1 -0
- package/dist/task-board/components/GoalsMatrix.js +33 -6
- package/dist/task-board/components/GoalsMatrix.js.map +1 -1
- package/dist/task-board/components/IssuePanel.d.ts +31 -0
- package/dist/task-board/components/IssuePanel.js +268 -0
- package/dist/task-board/components/IssuePanel.js.map +1 -0
- package/dist/task-board/components/ProjectDashboard.d.ts +2 -18
- package/dist/task-board/components/ProjectDashboard.js +2 -206
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/ProjectGoalsPanel.js +173 -15
- package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
- package/dist/task-board/components/ProjectProgressIndicator.d.ts +8 -0
- package/dist/task-board/components/ProjectProgressIndicator.js +17 -0
- package/dist/task-board/components/ProjectProgressIndicator.js.map +1 -0
- package/dist/task-board/components/SubgoalFindings.d.ts +40 -0
- package/dist/task-board/components/SubgoalFindings.js +88 -0
- package/dist/task-board/components/SubgoalFindings.js.map +1 -0
- package/dist/task-board/components/TaskAgentPanel.d.ts +2 -0
- package/dist/task-board/components/TaskAgentPanel.js +5 -4
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
- package/dist/task-board/components/TaskBoardHomeView.d.ts +11 -0
- package/dist/task-board/components/TaskBoardHomeView.js +40 -2
- package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
- package/dist/task-board/components/TaskBoardProjectListSidebar.js +2 -11
- package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +58 -23
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
- package/dist/task-board/components/WizardCommunicationCenter.d.ts +2 -0
- package/dist/task-board/components/WizardCommunicationCenter.js +5 -3
- package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
- package/dist/task-board/components/WizardCommunicationShared.js +2 -1
- package/dist/task-board/components/WizardCommunicationShared.js.map +1 -1
- package/dist/task-board/components/WizardTask.d.ts +2 -0
- package/dist/task-board/components/WizardTask.js +2 -2
- package/dist/task-board/components/WizardTask.js.map +1 -1
- package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +4 -0
- package/dist/task-board/components/WizardTaskDetailsPanel.js +16 -3
- package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
- package/dist/task-board/components/commentAuthor.d.ts +14 -0
- package/dist/task-board/components/commentAuthor.js +25 -0
- package/dist/task-board/components/commentAuthor.js.map +1 -0
- package/dist/task-board/services/issueService.d.ts +193 -0
- package/dist/task-board/services/issueService.js +97 -0
- package/dist/task-board/services/issueService.js.map +1 -0
- package/dist/task-board/taskBoardNavStore.d.ts +6 -0
- package/dist/task-board/taskBoardNavStore.js +36 -1
- package/dist/task-board/taskBoardNavStore.js.map +1 -1
- package/dist/task-board/types.d.ts +28 -0
- package/dist/task-board/utils/projectDashboardModel.d.ts +68 -0
- package/dist/task-board/utils/projectDashboardModel.js +363 -0
- package/dist/task-board/utils/projectDashboardModel.js.map +1 -0
- package/dist/task-board/views/DependencyGraphView.d.ts +7 -1
- package/dist/task-board/views/DependencyGraphView.js +58 -19
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/task-board/views/ProjectDashboardView.d.ts +28 -0
- package/dist/task-board/views/ProjectDashboardView.js +316 -0
- package/dist/task-board/views/ProjectDashboardView.js.map +1 -0
- package/dist/tour/Tour.js +21 -2
- package/dist/tour/Tour.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/images/Parhelia-Onboarding-Beach.jpg +0 -0
- package/package.json +1 -1
- package/styles.css +57 -3
- package/images/Parhelia-Onboarding-BG.jpg +0 -0
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { getComponentById } from "../componentTreeHelper";
|
|
2
|
+
import { formatDate } from "../utils";
|
|
3
|
+
import { getFeedbackAuthorName } from "./feedbackAvatar";
|
|
4
|
+
import { splitCommentImages } from "./commentImages";
|
|
2
5
|
function idsMatch(left, right) {
|
|
3
6
|
const normalize = (value) => (value ?? "").replace(/[{}-]/g, "").toLowerCase();
|
|
4
7
|
const a = normalize(left);
|
|
@@ -14,22 +17,125 @@ function buildCommentTargetPromptParts(comment) {
|
|
|
14
17
|
const parts = [];
|
|
15
18
|
const mainItemId = comment.mainItemId;
|
|
16
19
|
const targetItemId = comment.itemId;
|
|
17
|
-
if (comment.mainItemName
|
|
18
|
-
parts.push(`Page: ${comment.mainItemName
|
|
20
|
+
if (comment.mainItemName) {
|
|
21
|
+
parts.push(`Page: ${comment.mainItemName}`);
|
|
19
22
|
}
|
|
20
|
-
if (targetItemId &&
|
|
21
|
-
|
|
23
|
+
if (targetItemId &&
|
|
24
|
+
!idsMatch(targetItemId, mainItemId) &&
|
|
25
|
+
comment.itemName) {
|
|
26
|
+
parts.push(`Anchored item/component: ${comment.itemName}`);
|
|
22
27
|
}
|
|
23
|
-
if (comment.
|
|
24
|
-
parts.push(`Field: ${comment.fieldName
|
|
28
|
+
if (comment.fieldName) {
|
|
29
|
+
parts.push(`Field: ${comment.fieldName}`);
|
|
25
30
|
}
|
|
26
31
|
return parts;
|
|
27
32
|
}
|
|
33
|
+
function getSelectedText(comment) {
|
|
34
|
+
if (typeof comment.rangeStart === "number" &&
|
|
35
|
+
typeof comment.rangeEnd === "number" &&
|
|
36
|
+
comment.fieldValue) {
|
|
37
|
+
try {
|
|
38
|
+
return comment.fieldValue.substring(Math.max(0, comment.rangeStart), Math.max(comment.rangeStart, comment.rangeEnd));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
function getCreatedTime(comment) {
|
|
47
|
+
const time = new Date(comment.created || "").getTime();
|
|
48
|
+
return Number.isNaN(time) ? 0 : time;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Orders a thread for the agent: the root comment first, then every reply in
|
|
52
|
+
* the order it was written. Comments that provably belong to another thread
|
|
53
|
+
* (their chain ends at a different top-level comment) are dropped; a reply
|
|
54
|
+
* whose parent is not loaded is kept, matching how the sidebar groups
|
|
55
|
+
* threads. The root is added when the caller only passed replies.
|
|
56
|
+
*/
|
|
57
|
+
export function orderCommentThread(rootComment, threadComments) {
|
|
58
|
+
const byId = new Map(threadComments.map((comment) => [comment.id, comment]));
|
|
59
|
+
byId.set(rootComment.id, byId.get(rootComment.id) || rootComment);
|
|
60
|
+
const belongsToThread = (comment) => {
|
|
61
|
+
let current = comment;
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
while (current) {
|
|
64
|
+
if (current.id === rootComment.id)
|
|
65
|
+
return true;
|
|
66
|
+
if (!current.parentCommentId)
|
|
67
|
+
return false;
|
|
68
|
+
if (seen.has(current.id))
|
|
69
|
+
return false;
|
|
70
|
+
seen.add(current.id);
|
|
71
|
+
if (current.parentCommentId === rootComment.id)
|
|
72
|
+
return true;
|
|
73
|
+
const parent = byId.get(current.parentCommentId);
|
|
74
|
+
if (!parent)
|
|
75
|
+
return true;
|
|
76
|
+
current = parent;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
};
|
|
80
|
+
const replies = threadComments
|
|
81
|
+
.filter((comment) => comment.id !== rootComment.id)
|
|
82
|
+
.filter(belongsToThread)
|
|
83
|
+
.sort((a, b) => getCreatedTime(a) - getCreatedTime(b));
|
|
84
|
+
return [byId.get(rootComment.id), ...replies];
|
|
85
|
+
}
|
|
86
|
+
export function buildCommentThreadEntries(orderedThread, resolvedAuthorNames) {
|
|
87
|
+
return orderedThread.map((comment) => ({
|
|
88
|
+
id: comment.id,
|
|
89
|
+
author: comment.author,
|
|
90
|
+
authorDisplayName: getFeedbackAuthorName(comment, comment.author ? resolvedAuthorNames?.[comment.author] : undefined),
|
|
91
|
+
created: comment.created,
|
|
92
|
+
text: comment.text,
|
|
93
|
+
parentCommentId: comment.parentCommentId,
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Context message for the agent: human-readable target names and selected
|
|
98
|
+
* text followed by every comment of the conversation in order. Structured
|
|
99
|
+
* item, component, and field identifiers are supplied through AgentMetadata,
|
|
100
|
+
* while general workflow instructions belong to the Resolve Comments profile.
|
|
101
|
+
*/
|
|
102
|
+
export function buildCommentThreadPrompt(rootComment, orderedThread, resolvedAuthorNames) {
|
|
103
|
+
const targetParts = buildCommentTargetPromptParts(rootComment);
|
|
104
|
+
const selectedText = getSelectedText(rootComment);
|
|
105
|
+
if (selectedText)
|
|
106
|
+
targetParts.push(`Selected text: "${selectedText}"`);
|
|
107
|
+
const entries = buildCommentThreadEntries(orderedThread, resolvedAuthorNames);
|
|
108
|
+
const nameById = new Map(entries.map((entry) => [entry.id, entry.authorDisplayName]));
|
|
109
|
+
const lines = entries.map((entry, index) => {
|
|
110
|
+
const created = entry.created ? new Date(entry.created) : undefined;
|
|
111
|
+
const when = created && !Number.isNaN(created.getTime())
|
|
112
|
+
? ` (${formatDate(created)})`
|
|
113
|
+
: "";
|
|
114
|
+
const replyTo = entry.parentCommentId && entry.parentCommentId !== rootComment.id
|
|
115
|
+
? ` [in reply to ${nameById.get(entry.parentCommentId) || "an earlier comment"}]`
|
|
116
|
+
: "";
|
|
117
|
+
const text = splitCommentImages(entry.text || "")
|
|
118
|
+
.map((segment) => segment.type === "image"
|
|
119
|
+
? `[Attached image: comment-image-${segment.imageId} (${segment.alt})]`
|
|
120
|
+
: segment.value)
|
|
121
|
+
.join("\n")
|
|
122
|
+
.trim() || "(no text)";
|
|
123
|
+
return `${index + 1}. ${entry.authorDisplayName}${when}${replyTo}: ${text}`;
|
|
124
|
+
});
|
|
125
|
+
const count = entries.length;
|
|
126
|
+
return [
|
|
127
|
+
...(targetParts.length > 0 ? [targetParts.join(" | ")] : []),
|
|
128
|
+
"",
|
|
129
|
+
`Conversation (${count} ${count === 1 ? "comment" : "comments"}, oldest first):`,
|
|
130
|
+
...lines,
|
|
131
|
+
].join("\n");
|
|
132
|
+
}
|
|
28
133
|
/**
|
|
29
|
-
* Opens the Agents panel and
|
|
30
|
-
* Safe to call with an
|
|
134
|
+
* Opens the Agents panel and starts a new agent seeded with the complete
|
|
135
|
+
* comment thread (root comment plus every reply). Safe to call with an
|
|
136
|
+
* undefined editContext; it will no-op.
|
|
31
137
|
*/
|
|
32
|
-
export function
|
|
138
|
+
export function openAiAgentForCommentThread(rootComment, threadComments, editContext, resolvedAuthorNames) {
|
|
33
139
|
if (!editContext)
|
|
34
140
|
return;
|
|
35
141
|
const hasAgentsPanel = editContext.configuration?.editor?.sidebars?.some((sidebar) => sidebar.id === "agents-panel");
|
|
@@ -41,29 +147,10 @@ export function openAiAgentForComment(comment, editContext) {
|
|
|
41
147
|
editContext.showToast?.("AI quota exceeded. Please try again later or adjust settings.");
|
|
42
148
|
return;
|
|
43
149
|
}
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
return comment.fieldValue.substring(Math.max(0, comment.rangeStart), Math.max(comment.rangeStart, comment.rangeEnd));
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return undefined;
|
|
56
|
-
})();
|
|
57
|
-
const promptParts = [];
|
|
58
|
-
const text = (comment.text || "").trim();
|
|
59
|
-
if (text)
|
|
60
|
-
promptParts.push(`Comment: "${text}"`);
|
|
61
|
-
if (selectedText)
|
|
62
|
-
promptParts.push(`Selected text: "${selectedText}"`);
|
|
63
|
-
promptParts.push(...buildCommentTargetPromptParts(comment));
|
|
64
|
-
const initialPrompt = promptParts.length > 0
|
|
65
|
-
? `Please help resolve this review comment. ${promptParts.join(" | ")}`
|
|
66
|
-
: "Please help resolve this review comment.";
|
|
150
|
+
const comment = rootComment;
|
|
151
|
+
const orderedThread = orderCommentThread(rootComment, threadComments);
|
|
152
|
+
const selectedText = getSelectedText(comment);
|
|
153
|
+
const initialPrompt = buildCommentThreadPrompt(comment, orderedThread, resolvedAuthorNames);
|
|
67
154
|
try {
|
|
68
155
|
if (editContext.isMobile) {
|
|
69
156
|
editContext.openSidebar("agents-panel");
|
|
@@ -155,6 +242,7 @@ export function openAiAgentForComment(comment, editContext) {
|
|
|
155
242
|
selectedText: selectedText,
|
|
156
243
|
rangeStart: comment.rangeStart,
|
|
157
244
|
rangeEnd: comment.rangeEnd,
|
|
245
|
+
thread: buildCommentThreadEntries(orderedThread, resolvedAuthorNames),
|
|
158
246
|
},
|
|
159
247
|
additionalData: {
|
|
160
248
|
initialPrompt,
|
|
@@ -181,8 +269,8 @@ export function openAiAgentForComment(comment, editContext) {
|
|
|
181
269
|
}
|
|
182
270
|
}
|
|
183
271
|
catch (e) {
|
|
184
|
-
console.error("Failed to start agent for comment:", e);
|
|
185
|
-
editContext.showToast?.("Failed to start AI agent for this
|
|
272
|
+
console.error("Failed to start agent for comment thread:", e);
|
|
273
|
+
editContext.showToast?.("Failed to start AI agent for this conversation.");
|
|
186
274
|
}
|
|
187
275
|
}
|
|
188
276
|
//# sourceMappingURL=commentAi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commentAi.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentAi.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"commentAi.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentAi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Images pasted into comments (review comments and task-board comments).
|
|
3
|
+
*
|
|
4
|
+
* A pasted image is uploaded to `/parhelia/comments/uploadImage` and referenced
|
|
5
|
+
* from the plain-text comment body as a markdown image whose URL points at the
|
|
6
|
+
* comment image endpoint. Only that endpoint is rendered as an image; any other
|
|
7
|
+
* markdown-looking text stays plain text, so comments cannot embed arbitrary URLs.
|
|
8
|
+
*/
|
|
9
|
+
export type CommentImageScope = "review" | "task";
|
|
10
|
+
export declare const COMMENT_IMAGE_URL_PREFIX = "/parhelia/comments/image?id=";
|
|
11
|
+
export declare const COMMENT_IMAGE_MAX_BYTES: number;
|
|
12
|
+
export declare const DEFAULT_COMMENT_IMAGE_ALT = "screenshot";
|
|
13
|
+
export type CommentTextSegment = {
|
|
14
|
+
type: "text";
|
|
15
|
+
value: string;
|
|
16
|
+
} | {
|
|
17
|
+
type: "image";
|
|
18
|
+
alt: string;
|
|
19
|
+
src: string;
|
|
20
|
+
imageId: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function buildCommentImageUrl(imageId: string): string;
|
|
23
|
+
export declare function buildCommentImageMarkdown(imageId: string, alt?: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Splits a comment body into plain-text runs and comment-image tokens. A single
|
|
26
|
+
* newline directly before or after an image token is folded into the token so
|
|
27
|
+
* block-rendered images do not produce blank lines in `whitespace-pre-wrap` text.
|
|
28
|
+
*/
|
|
29
|
+
export declare function splitCommentImages(text: string): CommentTextSegment[];
|
|
30
|
+
export declare function commentHasImages(text: string | null | undefined): boolean;
|
|
31
|
+
/** Replaces image tokens with their alt text, for one-line previews and notifications. */
|
|
32
|
+
export declare function stripCommentImages(text: string | null | undefined): string;
|
|
33
|
+
/**
|
|
34
|
+
* Inserts `insert` at the selection of a textarea value on its own line,
|
|
35
|
+
* returning the new value and the caret position after the insertion.
|
|
36
|
+
*/
|
|
37
|
+
export declare function insertCommentImageMarkdown(value: string, selectionStart: number, selectionEnd: number, insert: string): {
|
|
38
|
+
value: string;
|
|
39
|
+
cursor: number;
|
|
40
|
+
};
|
|
41
|
+
/** Extracts pasted or dropped image files from a DataTransfer, ignoring plain text. */
|
|
42
|
+
export declare function getImageFilesFromDataTransfer(data: DataTransfer | null | undefined): File[];
|
|
43
|
+
export type CommentImageUploadResult = {
|
|
44
|
+
imageId: string;
|
|
45
|
+
url: string;
|
|
46
|
+
contentType?: string;
|
|
47
|
+
fileSize?: number;
|
|
48
|
+
};
|
|
49
|
+
export declare function uploadCommentImage(file: File, scope: CommentImageScope, scopeId?: string | null, scopeLanguage?: string | null): Promise<CommentImageUploadResult>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Images pasted into comments (review comments and task-board comments).
|
|
3
|
+
*
|
|
4
|
+
* A pasted image is uploaded to `/parhelia/comments/uploadImage` and referenced
|
|
5
|
+
* from the plain-text comment body as a markdown image whose URL points at the
|
|
6
|
+
* comment image endpoint. Only that endpoint is rendered as an image; any other
|
|
7
|
+
* markdown-looking text stays plain text, so comments cannot embed arbitrary URLs.
|
|
8
|
+
*/
|
|
9
|
+
export const COMMENT_IMAGE_URL_PREFIX = "/parhelia/comments/image?id=";
|
|
10
|
+
export const COMMENT_IMAGE_MAX_BYTES = 5 * 1024 * 1024;
|
|
11
|
+
export const DEFAULT_COMMENT_IMAGE_ALT = "screenshot";
|
|
12
|
+
const GUID_PATTERN = "[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}";
|
|
13
|
+
const COMMENT_IMAGE_PATTERN = new RegExp(`!\\[([^\\]\\n]*)\\]\\(${COMMENT_IMAGE_URL_PREFIX.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}(${GUID_PATTERN})\\)`, "g");
|
|
14
|
+
export function buildCommentImageUrl(imageId) {
|
|
15
|
+
return `${COMMENT_IMAGE_URL_PREFIX}${imageId.toLowerCase()}`;
|
|
16
|
+
}
|
|
17
|
+
export function buildCommentImageMarkdown(imageId, alt = DEFAULT_COMMENT_IMAGE_ALT) {
|
|
18
|
+
const safeAlt = alt.replace(/[\]\n\r]/g, " ").trim() || DEFAULT_COMMENT_IMAGE_ALT;
|
|
19
|
+
return `})`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Splits a comment body into plain-text runs and comment-image tokens. A single
|
|
23
|
+
* newline directly before or after an image token is folded into the token so
|
|
24
|
+
* block-rendered images do not produce blank lines in `whitespace-pre-wrap` text.
|
|
25
|
+
*/
|
|
26
|
+
export function splitCommentImages(text) {
|
|
27
|
+
const segments = [];
|
|
28
|
+
if (!text)
|
|
29
|
+
return segments;
|
|
30
|
+
let cursor = 0;
|
|
31
|
+
COMMENT_IMAGE_PATTERN.lastIndex = 0;
|
|
32
|
+
let match;
|
|
33
|
+
while ((match = COMMENT_IMAGE_PATTERN.exec(text)) !== null) {
|
|
34
|
+
let before = text.slice(cursor, match.index);
|
|
35
|
+
if (before.endsWith("\n"))
|
|
36
|
+
before = before.slice(0, -1);
|
|
37
|
+
if (before)
|
|
38
|
+
segments.push({ type: "text", value: before });
|
|
39
|
+
const imageId = (match[2] ?? "").toLowerCase();
|
|
40
|
+
segments.push({
|
|
41
|
+
type: "image",
|
|
42
|
+
alt: match[1] || DEFAULT_COMMENT_IMAGE_ALT,
|
|
43
|
+
src: buildCommentImageUrl(imageId),
|
|
44
|
+
imageId,
|
|
45
|
+
});
|
|
46
|
+
cursor = match.index + match[0].length;
|
|
47
|
+
if (text[cursor] === "\n")
|
|
48
|
+
cursor += 1;
|
|
49
|
+
}
|
|
50
|
+
if (cursor < text.length) {
|
|
51
|
+
segments.push({ type: "text", value: text.slice(cursor) });
|
|
52
|
+
}
|
|
53
|
+
return segments;
|
|
54
|
+
}
|
|
55
|
+
export function commentHasImages(text) {
|
|
56
|
+
if (!text)
|
|
57
|
+
return false;
|
|
58
|
+
COMMENT_IMAGE_PATTERN.lastIndex = 0;
|
|
59
|
+
return COMMENT_IMAGE_PATTERN.test(text);
|
|
60
|
+
}
|
|
61
|
+
/** Replaces image tokens with their alt text, for one-line previews and notifications. */
|
|
62
|
+
export function stripCommentImages(text) {
|
|
63
|
+
if (!text)
|
|
64
|
+
return "";
|
|
65
|
+
return splitCommentImages(text)
|
|
66
|
+
.map((segment) => segment.type === "image" ? `[${segment.alt}]` : segment.value)
|
|
67
|
+
.join(" ")
|
|
68
|
+
.replace(/[ \t]+/g, " ")
|
|
69
|
+
.trim();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Inserts `insert` at the selection of a textarea value on its own line,
|
|
73
|
+
* returning the new value and the caret position after the insertion.
|
|
74
|
+
*/
|
|
75
|
+
export function insertCommentImageMarkdown(value, selectionStart, selectionEnd, insert) {
|
|
76
|
+
const start = Math.max(0, Math.min(selectionStart, value.length));
|
|
77
|
+
const end = Math.max(start, Math.min(selectionEnd, value.length));
|
|
78
|
+
const before = value.slice(0, start);
|
|
79
|
+
const after = value.slice(end);
|
|
80
|
+
const leading = before.length === 0 || before.endsWith("\n") ? "" : "\n";
|
|
81
|
+
const trailing = after.length === 0 || after.startsWith("\n") ? "" : "\n";
|
|
82
|
+
const block = `${leading}${insert}${trailing}`;
|
|
83
|
+
const nextValue = `${before}${block}${after}`;
|
|
84
|
+
const cursor = before.length + block.length;
|
|
85
|
+
return { value: nextValue, cursor };
|
|
86
|
+
}
|
|
87
|
+
function extensionForType(type) {
|
|
88
|
+
const subtype = type.split("/")[1]?.toLowerCase() ?? "png";
|
|
89
|
+
return subtype === "jpeg" ? "jpg" : subtype;
|
|
90
|
+
}
|
|
91
|
+
/** Extracts pasted or dropped image files from a DataTransfer, ignoring plain text. */
|
|
92
|
+
export function getImageFilesFromDataTransfer(data) {
|
|
93
|
+
if (!data)
|
|
94
|
+
return [];
|
|
95
|
+
const files = [];
|
|
96
|
+
const items = data.items;
|
|
97
|
+
if (items && items.length > 0) {
|
|
98
|
+
for (let index = 0; index < items.length; index++) {
|
|
99
|
+
const item = items[index];
|
|
100
|
+
if (!item || item.kind !== "file" || !item.type.startsWith("image/")) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const file = item.getAsFile();
|
|
104
|
+
if (file)
|
|
105
|
+
files.push(file);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else if (data.files && data.files.length > 0) {
|
|
109
|
+
for (let index = 0; index < data.files.length; index++) {
|
|
110
|
+
const file = data.files[index];
|
|
111
|
+
if (file && file.type.startsWith("image/"))
|
|
112
|
+
files.push(file);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return files.map((file) => {
|
|
116
|
+
// Clipboard images arrive as a generic "image.png"; give them a distinct name.
|
|
117
|
+
if (!file.name || /^image\.[a-z]+$/i.test(file.name)) {
|
|
118
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
119
|
+
return new File([file], `pasted-image-${stamp}.${extensionForType(file.type)}`, { type: file.type });
|
|
120
|
+
}
|
|
121
|
+
return file;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
export async function uploadCommentImage(file, scope, scopeId, scopeLanguage) {
|
|
125
|
+
if (file.size > COMMENT_IMAGE_MAX_BYTES) {
|
|
126
|
+
throw new Error(`Image is too large. Maximum allowed size is ${COMMENT_IMAGE_MAX_BYTES / (1024 * 1024)} MB.`);
|
|
127
|
+
}
|
|
128
|
+
if (!scopeId) {
|
|
129
|
+
throw new Error("Images can only be added to a comment on an open item.");
|
|
130
|
+
}
|
|
131
|
+
const params = new URLSearchParams({ scope, scopeId });
|
|
132
|
+
if (scopeLanguage)
|
|
133
|
+
params.set("scopeLanguage", scopeLanguage);
|
|
134
|
+
const formData = new FormData();
|
|
135
|
+
formData.append("file", file, file.name);
|
|
136
|
+
const response = await fetch(`/parhelia/comments/uploadImage?${params.toString()}`, { method: "POST", credentials: "include", body: formData });
|
|
137
|
+
const body = await response.text();
|
|
138
|
+
let raw = {};
|
|
139
|
+
if (body) {
|
|
140
|
+
try {
|
|
141
|
+
raw = JSON.parse(body);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
raw = { summary: body };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (!response.ok) {
|
|
148
|
+
const summary = (typeof raw.summary === "string" && raw.summary) ||
|
|
149
|
+
(typeof raw.Summary === "string" && raw.Summary) ||
|
|
150
|
+
response.statusText ||
|
|
151
|
+
"Image upload failed";
|
|
152
|
+
throw new Error(summary);
|
|
153
|
+
}
|
|
154
|
+
const imageId = String(raw.imageId ?? raw.ImageId ?? "");
|
|
155
|
+
if (!imageId)
|
|
156
|
+
throw new Error("Image upload returned no image id");
|
|
157
|
+
return {
|
|
158
|
+
imageId,
|
|
159
|
+
url: String(raw.url ?? raw.Url ?? buildCommentImageUrl(imageId)),
|
|
160
|
+
contentType: (raw.contentType ?? raw.ContentType),
|
|
161
|
+
fileSize: (raw.fileSize ?? raw.FileSize),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=commentImages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentImages.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentImages.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,15 @@ export function formatFeedbackAccountName(userName) {
|
|
|
19
19
|
}
|
|
20
20
|
export function getFeedbackAuthorName(item, resolvedAuthorName) {
|
|
21
21
|
const storedDisplayName = item.authorDisplayName?.trim();
|
|
22
|
+
// Agent feedback stores its attribution in this label rather than a separate field.
|
|
23
|
+
if (storedDisplayName?.includes("(executed by "))
|
|
24
|
+
return storedDisplayName;
|
|
25
|
+
const resolvedName = resolvedAuthorName?.trim();
|
|
26
|
+
if (resolvedName &&
|
|
27
|
+
resolvedName !== formatFeedbackAccountName(item.author) &&
|
|
28
|
+
!namesEqual(resolvedName, item.author)) {
|
|
29
|
+
return resolvedName;
|
|
30
|
+
}
|
|
22
31
|
if (storedDisplayName &&
|
|
23
32
|
storedDisplayName.localeCompare(item.author || "", undefined, {
|
|
24
33
|
sensitivity: "accent",
|
|
@@ -57,16 +66,13 @@ export function useFeedbackAuthor(item, resolvedAuthorName) {
|
|
|
57
66
|
namesEqual(editContext?.user?.fullName, resolvedAuthorName)
|
|
58
67
|
? editContext?.user
|
|
59
68
|
: undefined;
|
|
60
|
-
const seededDisplayName =
|
|
61
|
-
resolvedAuthorName ||
|
|
62
|
-
authorSession?.user.fullName ||
|
|
63
|
-
currentUser?.fullName;
|
|
69
|
+
const seededDisplayName = currentUser?.fullName || authorSession?.user.fullName;
|
|
64
70
|
const seededAvatarUrl = authorSession?.user.avatarUrl || currentUser?.avatarUrl;
|
|
65
71
|
const resolvedAuthor = useResolvedUser(item.author, {
|
|
66
72
|
fullName: seededDisplayName,
|
|
67
73
|
avatarUrl: seededAvatarUrl,
|
|
68
74
|
});
|
|
69
|
-
const displayName = getFeedbackAuthorName(item, resolvedAuthor.displayName);
|
|
75
|
+
const displayName = getFeedbackAuthorName(item, seededDisplayName || resolvedAuthor.displayName || resolvedAuthorName);
|
|
70
76
|
return {
|
|
71
77
|
displayName,
|
|
72
78
|
avatarUrl: resolvedAuthor.avatarUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackAvatar.js","sourceRoot":"","sources":["../../../src/editor/reviews/feedbackAvatar.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"feedbackAvatar.js","sourceRoot":"","sources":["../../../src/editor/reviews/feedbackAvatar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Comment } from "../../types";
|
|
2
2
|
export declare function canReplyToComment(comment: Comment, rootComment: Comment | undefined, readonly?: boolean): boolean;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function getQuotedComment(comment: Comment, comments: Comment[] | undefined): Comment | undefined;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
export function canReplyToComment(comment, rootComment, readonly) {
|
|
2
2
|
return !comment.isNew && !rootComment?.isResolved && !readonly;
|
|
3
3
|
}
|
|
4
|
-
export function
|
|
5
|
-
if (!comment.parentCommentId || !comments)
|
|
4
|
+
export function getQuotedComment(comment, comments) {
|
|
5
|
+
if (!comment.quoteParentComment || !comment.parentCommentId || !comments)
|
|
6
6
|
return undefined;
|
|
7
|
-
|
|
8
|
-
const words = (parent?.text || "")
|
|
9
|
-
.trim()
|
|
10
|
-
.split(/\s+/)
|
|
11
|
-
.filter((word) => word.length > 0)
|
|
12
|
-
.slice(0, 3);
|
|
13
|
-
return words.length > 0 ? words.join(" ") : undefined;
|
|
7
|
+
return comments.find((candidate) => candidate.id === comment.parentCommentId);
|
|
14
8
|
}
|
|
15
9
|
//# sourceMappingURL=feedbackCommentRules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackCommentRules.js","sourceRoot":"","sources":["../../../src/editor/reviews/feedbackCommentRules.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,WAAgC,EAChC,QAAkB;IAElB,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"feedbackCommentRules.js","sourceRoot":"","sources":["../../../src/editor/reviews/feedbackCommentRules.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,WAAgC,EAChC,QAAkB;IAElB,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,UAAU,IAAI,CAAC,QAAQ,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,QAA+B;IAE/B,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,QAAQ;QACtE,OAAO,SAAS,CAAC;IAEnB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import type { Comment, SuggestedEdit } from "../../types";
|
|
2
2
|
import type { EditContextType, FieldsEditContextType } from "../client/editContext";
|
|
3
|
+
/**
|
|
4
|
+
* True when a click inside `container` is really the mouse release that ended
|
|
5
|
+
* a drag-to-select: the pointer moved since it was pressed and a non-collapsed
|
|
6
|
+
* text selection now sits inside the container. Callers skip their "select
|
|
7
|
+
* this card" behaviour in that case so highlighting comment text does not jump
|
|
8
|
+
* the canvas. A plain click (no movement) is never treated as a selection,
|
|
9
|
+
* even while an older selection is still live — Chromium collapses that
|
|
10
|
+
* selection right after the click anyway.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isTextSelectionClick(container: Element | null, click: {
|
|
13
|
+
clientX: number;
|
|
14
|
+
clientY: number;
|
|
15
|
+
}): boolean;
|
|
3
16
|
export declare function selectFeedbackComment(comment: Comment, editContext: EditContextType | undefined, fieldsContext: FieldsEditContextType | undefined): Promise<void>;
|
|
4
17
|
export declare function selectFeedbackSuggestedEdit(edit: SuggestedEdit, editContext: EditContextType | undefined, fieldsContext: FieldsEditContextType | undefined): void;
|
|
@@ -7,6 +7,43 @@ function bridgeIdsMatch(left, right) {
|
|
|
7
7
|
const normalizedRight = normalizeBridgeId(right);
|
|
8
8
|
return (!!normalizedLeft && !!normalizedRight && normalizedLeft === normalizedRight);
|
|
9
9
|
}
|
|
10
|
+
const DRAG_SELECT_THRESHOLD_PX = 3;
|
|
11
|
+
let lastPointerDown = null;
|
|
12
|
+
let pointerDownTrackingInstalled = false;
|
|
13
|
+
function ensurePointerDownTracking() {
|
|
14
|
+
if (pointerDownTrackingInstalled || typeof document === "undefined")
|
|
15
|
+
return;
|
|
16
|
+
pointerDownTrackingInstalled = true;
|
|
17
|
+
document.addEventListener("pointerdown", (event) => {
|
|
18
|
+
lastPointerDown = { x: event.clientX, y: event.clientY };
|
|
19
|
+
}, { capture: true, passive: true });
|
|
20
|
+
}
|
|
21
|
+
ensurePointerDownTracking();
|
|
22
|
+
/**
|
|
23
|
+
* True when a click inside `container` is really the mouse release that ended
|
|
24
|
+
* a drag-to-select: the pointer moved since it was pressed and a non-collapsed
|
|
25
|
+
* text selection now sits inside the container. Callers skip their "select
|
|
26
|
+
* this card" behaviour in that case so highlighting comment text does not jump
|
|
27
|
+
* the canvas. A plain click (no movement) is never treated as a selection,
|
|
28
|
+
* even while an older selection is still live — Chromium collapses that
|
|
29
|
+
* selection right after the click anyway.
|
|
30
|
+
*/
|
|
31
|
+
export function isTextSelectionClick(container, click) {
|
|
32
|
+
if (!container || typeof window === "undefined")
|
|
33
|
+
return false;
|
|
34
|
+
ensurePointerDownTracking();
|
|
35
|
+
if (lastPointerDown &&
|
|
36
|
+
Math.abs(click.clientX - lastPointerDown.x) < DRAG_SELECT_THRESHOLD_PX &&
|
|
37
|
+
Math.abs(click.clientY - lastPointerDown.y) < DRAG_SELECT_THRESHOLD_PX) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const selection = window.getSelection();
|
|
41
|
+
if (!selection || selection.isCollapsed || selection.rangeCount === 0) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const anchor = selection.anchorNode;
|
|
45
|
+
return !!anchor && container.contains(anchor);
|
|
46
|
+
}
|
|
10
47
|
export async function selectFeedbackComment(comment, editContext, fieldsContext) {
|
|
11
48
|
const currentPageId = editContext?.currentItemDescriptor?.id;
|
|
12
49
|
if (currentPageId &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedbackSelection.js","sourceRoot":"","sources":["../../../src/editor/reviews/feedbackSelection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feedbackSelection.js","sourceRoot":"","sources":["../../../src/editor/reviews/feedbackSelection.ts"],"names":[],"mappings":"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"}
|