@parhelia/core 0.4.12818 → 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/config/config.js +3 -0
- package/dist/config/config.js.map +1 -1
- 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/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/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.js +5 -1
- package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +5 -5
- package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.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/AiResponseMessage.js +8 -7
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.js +1 -1
- package/dist/editor/ai/terminal/components/ContextInfoBar.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/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/useAgentServerReconciler.js +11 -0
- package/dist/editor/ai/terminal/useAgentServerReconciler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.d.ts +1 -0
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.js +6 -2
- package/dist/editor/ai/terminal/useAgentSubmitHandlers.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentTerminalController.js +4 -0
- package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
- package/dist/editor/bridge/protocol.d.ts +5 -0
- package/dist/editor/bridge/protocol.js.map +1 -1
- package/dist/editor/client/EditorShell.js +4 -3
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js +3 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/operations.js +34 -2
- 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/field-types/RichTextEditorComponent.js +10 -1
- package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
- package/dist/editor/field-types/richtext/components/ReactSlate.js +8 -2
- package/dist/editor/field-types/richtext/components/ReactSlate.js.map +1 -1
- package/dist/editor/field-types/useFormFieldCaretPresence.js +1 -0
- package/dist/editor/field-types/useFormFieldCaretPresence.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/menubar/ActiveUsers.js +1 -1
- package/dist/editor/menubar/ActiveUsers.js.map +1 -1
- package/dist/editor/menubar/ToolbarFactory.js +9 -1
- 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/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/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/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/PageEditorChrome.js +2 -1
- package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +8 -1
- package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.d.ts +6 -2
- package/dist/editor/page-viewer/MiniMap.js +139 -21
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +21 -5
- package/dist/editor/page-viewer/PageViewerFrame.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/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/reviews/CommentEditor.js +34 -29
- 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/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 +4 -2
- package/dist/editor/reviews/commentAi.js +19 -12
- package/dist/editor/reviews/commentAi.js.map +1 -1
- package/dist/editor/reviews/useCommentImagePaste.d.ts +41 -14
- package/dist/editor/reviews/useCommentImagePaste.js +102 -63
- package/dist/editor/reviews/useCommentImagePaste.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/settings/index/RecentBatchesList.js +2 -1
- package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +6 -3
- package/dist/editor/sidebar/ComponentTree.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/liveComponentThumbnails.d.ts +6 -2
- package/dist/editor/sidebar/liveComponentThumbnails.js +7 -2
- package/dist/editor/sidebar/liveComponentThumbnails.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/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/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 +4 -3
- package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
- package/dist/splash-screen/RecentPages.js +3 -3
- package/dist/splash-screen/RecentPages.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +179 -33
- 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/GoalDataView.d.ts +22 -1
- package/dist/task-board/components/GoalDataView.js +63 -17
- 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/ProjectGoalsPanel.js +66 -13
- package/dist/task-board/components/ProjectGoalsPanel.js.map +1 -1
- 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/TaskDetailPanel.js +8 -12
- 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/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/types.d.ts +24 -0
- package/dist/task-board/utils/projectDashboardModel.js +8 -0
- package/dist/task-board/utils/projectDashboardModel.js.map +1 -1
- package/package.json +1 -1
- package/styles.css +57 -3
|
@@ -12,4 +12,10 @@ export declare function isBridgeUndoRedoKeyboardShortcut(interaction: Interactio
|
|
|
12
12
|
* keyboard layouts where bracket keys need AltGr.
|
|
13
13
|
*/
|
|
14
14
|
export declare function getBridgeFieldHistoryStepDirection(interaction: InteractionEventPayload): "older" | "newer" | undefined;
|
|
15
|
+
/** Ctrl+H / Cmd+H: the "Find and replace" command (editor/find-replace). */
|
|
16
|
+
export declare function isBridgeFindReplaceKeyboardShortcut(interaction: InteractionEventPayload): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Keystrokes the bridge cancels inside the canvas and the host replays on
|
|
19
|
+
* `window`, where the keyboard command bindings listen.
|
|
20
|
+
*/
|
|
15
21
|
export declare function createKeyboardEventFromBridgeInteraction(interaction: InteractionEventPayload): KeyboardEvent | undefined;
|
|
@@ -11,6 +11,8 @@ function getBridgeKeyboardKey(interaction) {
|
|
|
11
11
|
return interaction.shiftKey ? "Z" : "z";
|
|
12
12
|
if (interaction.code === "KeyY")
|
|
13
13
|
return interaction.shiftKey ? "Y" : "y";
|
|
14
|
+
if (interaction.code === "KeyH")
|
|
15
|
+
return interaction.shiftKey ? "H" : "h";
|
|
14
16
|
return "";
|
|
15
17
|
}
|
|
16
18
|
export function isBridgeUndoRedoKeyboardShortcut(interaction) {
|
|
@@ -46,9 +48,25 @@ export function getBridgeFieldHistoryStepDirection(interaction) {
|
|
|
46
48
|
}
|
|
47
49
|
return undefined;
|
|
48
50
|
}
|
|
51
|
+
/** Ctrl+H / Cmd+H: the "Find and replace" command (editor/find-replace). */
|
|
52
|
+
export function isBridgeFindReplaceKeyboardShortcut(interaction) {
|
|
53
|
+
if (interaction.kind !== "keydown")
|
|
54
|
+
return false;
|
|
55
|
+
if (!interaction.ctrlKey && !interaction.metaKey)
|
|
56
|
+
return false;
|
|
57
|
+
if (interaction.altKey || interaction.shiftKey)
|
|
58
|
+
return false;
|
|
59
|
+
return getBridgeKeyboardKey(interaction).toLowerCase() === "h";
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Keystrokes the bridge cancels inside the canvas and the host replays on
|
|
63
|
+
* `window`, where the keyboard command bindings listen.
|
|
64
|
+
*/
|
|
49
65
|
export function createKeyboardEventFromBridgeInteraction(interaction) {
|
|
50
|
-
if (!isBridgeUndoRedoKeyboardShortcut(interaction)
|
|
66
|
+
if (!isBridgeUndoRedoKeyboardShortcut(interaction) &&
|
|
67
|
+
!isBridgeFindReplaceKeyboardShortcut(interaction)) {
|
|
51
68
|
return undefined;
|
|
69
|
+
}
|
|
52
70
|
return new KeyboardEvent("keydown", {
|
|
53
71
|
bubbles: true,
|
|
54
72
|
cancelable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeKeyboardShortcuts.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/bridgeKeyboardShortcuts.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAE7E,SAAS,oBAAoB,CAAC,WAAoC;IAChE,IAAI,WAAW,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC;IAC5C,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACzE,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,WAAoC;IAEpC,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,WAAW,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAErC,MAAM,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAChD,WAAoC;IAEpC,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,CAAC,WAAW,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,CAAC,GAAG,KAAK,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,WAAoC;IAEpC,
|
|
1
|
+
{"version":3,"file":"bridgeKeyboardShortcuts.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/bridgeKeyboardShortcuts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// A minimap iframe is as tall as the whole page. Resolve viewport units before
|
|
2
|
+
// loading it so nested cards, spacing and backgrounds retain the live layout.
|
|
3
|
+
export function resolveMinimapViewportUnits(css, width, height) {
|
|
4
|
+
// Consume strings, comments, URLs and identifiers intact, including escaped
|
|
5
|
+
// Tailwind selectors. Only CSS dimension tokens should be rewritten.
|
|
6
|
+
return css.replace(/\/\*[\s\S]*?\*\/|"(?:\\[\s\S]|[^"\\])*"|'(?:\\[\s\S]|[^'\\])*'|url\((?:\\[\s\S]|[^)\\])*\)|[+-]?(?:\d*\.\d+|\d+\.?\d*)(?:e[+-]?\d+)?(?:[a-zA-Z_\u0080-\uFFFF]|\\[^\r\n])(?:[\w\u0080-\uFFFF-]|\\[^\r\n])*|(?:[a-zA-Z_\u0080-\uFFFF-]|\\[^\r\n])(?:[\w\u0080-\uFFFF-]|\\[^\r\n])*/gi, (token) => {
|
|
7
|
+
const dimension = token.match(/^([+-]?(?:\d*\.\d+|\d+\.?\d*)(?:e[+-]?\d+)?)([dls]?v[wh]|[dls]?vmin|[dls]?vmax)$/i);
|
|
8
|
+
if (!dimension)
|
|
9
|
+
return token;
|
|
10
|
+
const unit = dimension[2].toLowerCase();
|
|
11
|
+
const size = unit.endsWith("min")
|
|
12
|
+
? Math.min(width, height)
|
|
13
|
+
: unit.endsWith("max")
|
|
14
|
+
? Math.max(width, height)
|
|
15
|
+
: unit.endsWith("h")
|
|
16
|
+
? height
|
|
17
|
+
: width;
|
|
18
|
+
if (!Number.isFinite(size) || size <= 0)
|
|
19
|
+
return token;
|
|
20
|
+
return `${Math.round(((Number(dimension[1]) * size) / 100) * 1000) / 1000}px`;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function preserveMinimapViewport(doc, width, height) {
|
|
24
|
+
doc.querySelectorAll("style").forEach((style) => {
|
|
25
|
+
style.textContent = resolveMinimapViewportUnits(style.textContent || "", width, height);
|
|
26
|
+
});
|
|
27
|
+
doc.querySelectorAll("[style]").forEach((element) => {
|
|
28
|
+
element.setAttribute("style", resolveMinimapViewportUnits(element.getAttribute("style") || "", width, height));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=minimapViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimapViewport.js","sourceRoot":"","sources":["../../../src/editor/page-viewer/minimapViewport.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,UAAU,2BAA2B,CACzC,GAAW,EACX,KAAa,EACb,MAAc;IAEd,4EAA4E;IAC5E,qEAAqE;IACrE,OAAO,GAAG,CAAC,OAAO,CAChB,oRAAoR,EACpR,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAC3B,mFAAmF,CACpF,CAAC;QACF,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;gBACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAClB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,KAAK,CAAC;QACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAa,EACb,KAAa,EACb,MAAc;IAEd,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,KAAK,CAAC,WAAW,GAAG,2BAA2B,CAC7C,KAAK,CAAC,WAAW,IAAI,EAAE,EACvB,KAAK,EACL,MAAM,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAClD,OAAO,CAAC,YAAY,CAClB,OAAO,EACP,2BAA2B,CACzB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EACnC,KAAK,EACL,MAAM,CACP,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -5,14 +5,18 @@ import { Button } from "../../components/ui/button";
|
|
|
5
5
|
import { MentionTextarea } from "../../components/ui/mention-textarea";
|
|
6
6
|
import { cn } from "../../lib/utils";
|
|
7
7
|
import { useEditContext } from "../client/editContext";
|
|
8
|
-
import { ArrowUp,
|
|
9
|
-
import { useCommentImagePaste } from "./useCommentImagePaste";
|
|
8
|
+
import { ArrowUp, X } from "lucide-react";
|
|
9
|
+
import { splitInitialCommentText, useCommentImagePaste, } from "./useCommentImagePaste";
|
|
10
|
+
import { CommentImageAttachments } from "./CommentImageAttachments";
|
|
10
11
|
const COMMENT_TEXTAREA_MIN_HEIGHT = 32;
|
|
11
12
|
export const COMMENT_INPUT_PLACEHOLDER = "Add a comment and notify others with @";
|
|
12
13
|
export function CommentEditor({ editContext: externalEditContext, initialText = "", onSave, onCancel, isSaving = false, availableTags = [], selectedTags: initialSelectedTags = [], placeholder = COMMENT_INPUT_PLACEHOLDER, autoFocus = true, submitLabel = "Save", cancelLabel = "Cancel", showTagSelector = true, compact = false, showCancelButton = true, clearOnSave = false, onKeyDown, }) {
|
|
13
14
|
const contextFromHook = useEditContext();
|
|
14
15
|
const editContext = externalEditContext || contextFromHook;
|
|
15
|
-
|
|
16
|
+
// Image references in an edited comment become thumbnails, not text.
|
|
17
|
+
const [text, setText] = React.useState(() => splitInitialCommentText(initialText).text);
|
|
18
|
+
const textRef = React.useRef(text);
|
|
19
|
+
textRef.current = text;
|
|
16
20
|
const [selectedTags, setSelectedTags] = React.useState(initialSelectedTags);
|
|
17
21
|
const textareaRef = React.useRef(null);
|
|
18
22
|
const currentSession = editContext?.activeSessions.find((session) => session.sessionId === editContext?.sessionId);
|
|
@@ -20,7 +24,6 @@ export function CommentEditor({ editContext: externalEditContext, initialText =
|
|
|
20
24
|
const userName = currentUser?.fullName?.trim() || currentUser?.name?.trim() || "User";
|
|
21
25
|
const avatarUrl = currentSession?.user.avatarUrl ?? editContext?.user?.avatarUrl;
|
|
22
26
|
const avatarFallbackColor = currentSession?.color;
|
|
23
|
-
const hasCommentText = text.trim().length > 0;
|
|
24
27
|
const resizeTextarea = React.useCallback(() => {
|
|
25
28
|
const textarea = textareaRef.current;
|
|
26
29
|
if (!textarea)
|
|
@@ -58,7 +61,7 @@ export function CommentEditor({ editContext: externalEditContext, initialText =
|
|
|
58
61
|
// Escape to cancel
|
|
59
62
|
else if (e.key === "Escape" && !e.defaultPrevented) {
|
|
60
63
|
e.preventDefault();
|
|
61
|
-
|
|
64
|
+
handleCancel();
|
|
62
65
|
}
|
|
63
66
|
};
|
|
64
67
|
const handleTextChange = (value) => {
|
|
@@ -69,17 +72,16 @@ export function CommentEditor({ editContext: externalEditContext, initialText =
|
|
|
69
72
|
scope: "review",
|
|
70
73
|
scopeId: editContext?.currentItemDescriptor?.id ?? null,
|
|
71
74
|
scopeLanguage: editContext?.currentItemDescriptor?.language ?? null,
|
|
72
|
-
|
|
73
|
-
value: text,
|
|
74
|
-
onValueChange: handleTextChange,
|
|
75
|
+
initialText,
|
|
75
76
|
disabled: isSaving,
|
|
76
77
|
});
|
|
78
|
+
const hasCommentText = text.trim().length > 0 || imagePaste.readyCount > 0;
|
|
77
79
|
const submitQueuedRef = React.useRef(false);
|
|
78
80
|
const handleSave = async () => {
|
|
79
81
|
if (isSaving || submitQueuedRef.current)
|
|
80
82
|
return;
|
|
81
83
|
// A submit while a pasted image is still uploading waits for the image
|
|
82
|
-
//
|
|
84
|
+
// to finish instead of posting without it.
|
|
83
85
|
if (imagePaste.uploading) {
|
|
84
86
|
submitQueuedRef.current = true;
|
|
85
87
|
try {
|
|
@@ -89,32 +91,35 @@ export function CommentEditor({ editContext: externalEditContext, initialText =
|
|
|
89
91
|
submitQueuedRef.current = false;
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
|
-
const
|
|
93
|
-
if (!
|
|
94
|
+
const submitText = imagePaste.buildSubmitText(textRef.current);
|
|
95
|
+
if (!submitText)
|
|
94
96
|
return;
|
|
95
|
-
await onSave(
|
|
97
|
+
await onSave(submitText, selectedTags);
|
|
96
98
|
if (clearOnSave) {
|
|
97
99
|
setText("");
|
|
98
100
|
setSelectedTags([]);
|
|
101
|
+
imagePaste.clearAttachments();
|
|
99
102
|
}
|
|
100
103
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
104
|
+
const handleCancel = () => {
|
|
105
|
+
imagePaste.clearAttachments();
|
|
106
|
+
onCancel();
|
|
107
|
+
};
|
|
108
|
+
return (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx(Avatar, { src: avatarUrl, name: userName, size: "sm", fallbackColor: avatarFallbackColor, fallbackClassName: "bg-highlight-100 text-white", title: userName, className: "!text-[10px] font-medium" }), _jsxs("div", { className: cn("border-border-default focus-within:border-neutral-grey-15 flex min-w-0 flex-1 flex-col gap-2 overflow-hidden rounded-lg border bg-white p-2 transition-colors"), children: [_jsx(CommentImageAttachments, { attachments: imagePaste.attachments, onRemove: imagePaste.removeAttachment, disabled: isSaving }), _jsxs("div", { className: "flex items-end", children: [_jsx(MentionTextarea, { ref: textareaRef, "data-testid": "add-comment-textarea", value: text, onValueChange: handleTextChange, onKeyDown: handleKeyDown, onPaste: imagePaste.onPaste, onDragOver: imagePaste.onDragOver, onDrop: imagePaste.onDrop, placeholder: placeholder, className: cn("text-neutral-grey-100 placeholder:text-neutral-grey-50 !field-sizing-fixed h-8 !min-h-8 flex-1 resize-none appearance-none overflow-hidden !rounded-none !border-0 !bg-transparent !p-0 text-sm leading-4 !shadow-none !transition-none !outline-none focus:!border-0 focus:!shadow-none focus:!ring-0 focus:!outline-none focus-visible:!border-0 focus-visible:!shadow-none focus-visible:!ring-0 focus-visible:!outline-none"), style: {
|
|
109
|
+
backgroundColor: "transparent",
|
|
110
|
+
border: "none",
|
|
111
|
+
height: 32,
|
|
112
|
+
boxShadow: "none",
|
|
113
|
+
outline: "none",
|
|
114
|
+
}, rows: 1, disabled: isSaving, autoFocus: autoFocus }), _jsxs("div", { className: "flex shrink-0 items-end gap-1", children: [showCancelButton && (_jsx("button", { type: "button", onClick: handleCancel, disabled: isSaving, className: "text-neutral-grey-100 hover:bg-neutral-grey-5 disabled:text-neutral-grey-50 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-white transition-colors", "data-testid": "add-comment-cancel", "aria-label": cancelLabel, title: cancelLabel, children: _jsx(X, { className: "h-4 w-4", strokeWidth: 1 }) })), hasCommentText && (_jsx("button", { type: "button", onClick: handleSave, disabled: isSaving || imagePaste.uploading, className: "bg-neutral-grey-100 hover:bg-neutral-grey-100/90 focus-visible:ring-neutral-grey-100/30 disabled:bg-neutral-grey-5 disabled:text-neutral-grey-50 disabled:hover:bg-neutral-grey-5 ml-2 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded text-white shadow-sm transition-colors focus-visible:ring-2 focus-visible:outline-none disabled:cursor-default disabled:shadow-none", "data-testid": "add-comment-submit", "aria-label": isSaving
|
|
115
|
+
? "Saving comment"
|
|
116
|
+
: imagePaste.uploading
|
|
117
|
+
? "Waiting for image upload"
|
|
118
|
+
: submitLabel, title: isSaving
|
|
119
|
+
? "Saving..."
|
|
120
|
+
: imagePaste.uploading
|
|
121
|
+
? "Waiting for image upload…"
|
|
122
|
+
: submitLabel, children: _jsx(ArrowUp, { className: "h-4 w-4", strokeWidth: 1 }) }))] })] })] })] }), showTagSelector && availableTags.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "text-muted-foreground text-xs", children: "Tags" }), _jsx("div", { className: "flex flex-wrap gap-2", children: availableTags.map((tag) => {
|
|
118
123
|
const isSelected = selectedTags.includes(tag.label);
|
|
119
124
|
return (_jsx(Button, { type: "button", size: "sm", variant: isSelected ? "secondary" : "outline", className: "h-6 px-2 text-xs", onClick: () => {
|
|
120
125
|
setSelectedTags((prev) => prev.includes(tag.label)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentEditor.js","sourceRoot":"","sources":["../../../src/editor/reviews/CommentEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CommentEditor.js","sourceRoot":"","sources":["../../../src/editor/reviews/CommentEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CommentImageAttachment } from "./useCommentImagePaste";
|
|
2
|
+
/**
|
|
3
|
+
* Thumbnail strip shown above a comment composer for pasted or dropped
|
|
4
|
+
* screenshots. Uploading thumbs show a spinner, failed ones a red frame with
|
|
5
|
+
* the error as tooltip; finished ones open the shared image viewer.
|
|
6
|
+
*/
|
|
7
|
+
export declare function CommentImageAttachments({ attachments, onRemove, disabled, className, }: {
|
|
8
|
+
attachments: CommentImageAttachment[];
|
|
9
|
+
onRemove: (key: string) => void;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Loader2, X } from "lucide-react";
|
|
4
|
+
import { cn } from "../../lib/utils";
|
|
5
|
+
import { AgentImagePreview } from "../ai/AgentImagePreview";
|
|
6
|
+
/**
|
|
7
|
+
* Thumbnail strip shown above a comment composer for pasted or dropped
|
|
8
|
+
* screenshots. Uploading thumbs show a spinner, failed ones a red frame with
|
|
9
|
+
* the error as tooltip; finished ones open the shared image viewer.
|
|
10
|
+
*/
|
|
11
|
+
export function CommentImageAttachments({ attachments, onRemove, disabled = false, className, }) {
|
|
12
|
+
if (attachments.length === 0)
|
|
13
|
+
return null;
|
|
14
|
+
return (_jsx("div", { className: cn("flex flex-wrap items-start gap-2", className), "data-testid": "comment-image-attachments", children: attachments.map((attachment) => {
|
|
15
|
+
const thumb = (_jsx("img", { src: attachment.previewUrl, alt: attachment.fileName, className: cn("h-12 w-12 rounded-md object-cover", attachment.status !== "done" && "opacity-60"), draggable: false }));
|
|
16
|
+
return (_jsxs("div", { className: cn("border-border-default group relative shrink-0 overflow-hidden rounded-md border bg-white", attachment.status === "error" && "border-destructive"), "data-testid": "comment-image-attachment", "data-status": attachment.status, "data-image-id": attachment.imageId, title: attachment.error ?? attachment.fileName, children: [attachment.status === "done" ? (_jsx(AgentImagePreview, { src: attachment.previewUrl, alt: attachment.fileName, fileName: attachment.fileName, overlayClassName: "z-[300]", contentClassName: "z-[301]", portalContainer: typeof document === "undefined" ? null : document.body, children: _jsx("button", { type: "button", className: "block cursor-zoom-in", "aria-label": `Preview ${attachment.fileName}`, children: thumb }) })) : (thumb), attachment.status === "uploading" && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-white/60", "data-testid": "comment-image-uploading", role: "status", "aria-label": "Uploading image", children: _jsx(Loader2, { className: "text-neutral-grey-100 h-4 w-4 animate-spin", strokeWidth: 1.5 }) })), attachment.status === "error" && (_jsx("div", { className: "bg-destructive/80 absolute inset-x-0 bottom-0 truncate px-1 text-[9px] leading-4 text-white", "data-testid": "comment-image-upload-error", role: "alert", children: "Upload failed" })), !disabled && (_jsx("button", { type: "button", onClick: () => onRemove(attachment.key), className: "bg-neutral-grey-100 hover:bg-neutral-grey-100/90 absolute top-0.5 right-0.5 inline-flex h-4 w-4 items-center justify-center rounded-full text-white shadow-sm", "aria-label": "Remove image", title: "Remove image", "data-testid": "comment-image-remove", children: _jsx(X, { className: "h-3 w-3", strokeWidth: 2 }) }))] }, attachment.key));
|
|
17
|
+
}) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CommentImageAttachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommentImageAttachments.js","sourceRoot":"","sources":["../../../src/editor/reviews/CommentImageAttachments.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,WAAW,EACX,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,SAAS,GAMV;IACC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,iBAChD,2BAA2B,YAEtC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,CACZ,cACE,GAAG,EAAE,UAAU,CAAC,UAAU,EAC1B,GAAG,EAAE,UAAU,CAAC,QAAQ,EACxB,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,UAAU,CAAC,MAAM,KAAK,MAAM,IAAI,YAAY,CAC7C,EACD,SAAS,EAAE,KAAK,GAChB,CACH,CAAC;YAEF,OAAO,CACL,eAEE,SAAS,EAAE,EAAE,CACX,0FAA0F,EAC1F,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,oBAAoB,CACtD,iBACW,0BAA0B,iBACzB,UAAU,CAAC,MAAM,mBACf,UAAU,CAAC,OAAO,EACjC,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,aAE7C,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAC9B,KAAC,iBAAiB,IAChB,GAAG,EAAE,UAAU,CAAC,UAAU,EAC1B,GAAG,EAAE,UAAU,CAAC,QAAQ,EACxB,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,gBAAgB,EAAC,SAAS,EAC1B,gBAAgB,EAAC,SAAS,EAC1B,eAAe,EACb,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,YAGxD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,gBACpB,WAAW,UAAU,CAAC,QAAQ,EAAE,YAE3C,KAAK,GACC,GACS,CACrB,CAAC,CAAC,CAAC,CACF,KAAK,CACN,EAEA,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,CACpC,cACE,SAAS,EAAC,+DAA+D,iBAC7D,yBAAyB,EACrC,IAAI,EAAC,QAAQ,gBACF,iBAAiB,YAE5B,KAAC,OAAO,IACN,SAAS,EAAC,4CAA4C,EACtD,WAAW,EAAE,GAAG,GAChB,GACE,CACP,EACA,UAAU,CAAC,MAAM,KAAK,OAAO,IAAI,CAChC,cACE,SAAS,EAAC,6FAA6F,iBAC3F,4BAA4B,EACxC,IAAI,EAAC,OAAO,8BAGR,CACP,EAEA,CAAC,QAAQ,IAAI,CACZ,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EACvC,SAAS,EAAC,+JAA+J,gBAC9J,cAAc,EACzB,KAAK,EAAC,cAAc,iBACR,sBAAsB,YAElC,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,GAClC,CACV,KAnEI,UAAU,CAAC,GAAG,CAoEf,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { SuggestedEdit } from "../../types";
|
|
3
3
|
interface SuggestionDisplayPopoverProps {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
onOpenChange?: (open: boolean) => void;
|
|
4
6
|
suggestion: SuggestedEdit;
|
|
5
7
|
children: React.ReactNode;
|
|
6
8
|
onSuggestionUpdated?: () => void;
|
|
7
9
|
}
|
|
8
|
-
export declare function SuggestionDisplayPopover({ suggestion, children, onSuggestionUpdated, }: SuggestionDisplayPopoverProps): React.JSX.Element;
|
|
10
|
+
export declare function SuggestionDisplayPopover({ suggestion, children, onSuggestionUpdated, open, onOpenChange, }: SuggestionDisplayPopoverProps): React.JSX.Element;
|
|
9
11
|
export {};
|
|
@@ -22,11 +22,16 @@ import { markSuggestedEditRemoved } from "./suggestedEditState";
|
|
|
22
22
|
import { applySuggestedEditPatch, replaceSuggestedEditCompletely, } from "./applySuggestedEditActions";
|
|
23
23
|
import { getConflictingSuggestionPeers, getSuggestedEditItemLanguage, getSuggestedEditItemVersion, getSuggestionDisplayValue, getSuggestionSelectionKey, } from "./suggestionDisplayValue";
|
|
24
24
|
import { applySuggestionPatchToValue } from "./suggestionPatch";
|
|
25
|
-
export function SuggestionDisplayPopover({ suggestion, children, onSuggestionUpdated, }) {
|
|
25
|
+
export function SuggestionDisplayPopover({ suggestion, children, onSuggestionUpdated, open, onOpenChange, }) {
|
|
26
26
|
const editContext = useEditContext();
|
|
27
27
|
const fieldsContext = useFieldsEditContext();
|
|
28
28
|
const author = useFeedbackAuthor(suggestion);
|
|
29
|
-
const [
|
|
29
|
+
const [localOpen, setLocalOpen] = useState(false);
|
|
30
|
+
const isOpen = open ?? localOpen;
|
|
31
|
+
const setIsOpen = (value) => {
|
|
32
|
+
setLocalOpen(value);
|
|
33
|
+
onOpenChange?.(value);
|
|
34
|
+
};
|
|
30
35
|
const [isApplying, setIsApplying] = useState(false);
|
|
31
36
|
const [item, setItem] = useState(null);
|
|
32
37
|
const [patchPossible, setPatchPossible] = useState(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuggestionDisplayPopover.js","sourceRoot":"","sources":["../../../src/editor/reviews/SuggestionDisplayPopover.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SuggestionDisplayPopover.js","sourceRoot":"","sources":["../../../src/editor/reviews/SuggestionDisplayPopover.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type AgentMessageAttachment, type AgentMetadata } from "../services/agentService";
|
|
2
|
+
/** Copy authorized comment images into the agent document store, whose images
|
|
3
|
+
* are included as visual inputs by the backend message builder. Keep successful
|
|
4
|
+
* uploads in the caller's cache so a failed submission can be retried. */
|
|
5
|
+
export declare function prepareCommentAgentAttachments(agentId: string, comment: AgentMetadata["comment"], profileId: string | undefined, cache: Map<string, AgentMessageAttachment>): Promise<AgentMessageAttachment[]>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { uploadDocument, } from "../services/agentService";
|
|
2
|
+
import { COMMENT_IMAGE_MAX_BYTES, splitCommentImages } from "./commentImages";
|
|
3
|
+
/** Copy authorized comment images into the agent document store, whose images
|
|
4
|
+
* are included as visual inputs by the backend message builder. Keep successful
|
|
5
|
+
* uploads in the caller's cache so a failed submission can be retried. */
|
|
6
|
+
export async function prepareCommentAgentAttachments(agentId, comment, profileId, cache) {
|
|
7
|
+
const images = new Map();
|
|
8
|
+
for (const entry of comment?.thread ?? (comment ? [comment] : [])) {
|
|
9
|
+
for (const segment of splitCommentImages(entry.text || "")) {
|
|
10
|
+
if (segment.type === "image")
|
|
11
|
+
images.set(segment.imageId, segment.src);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const attachments = [];
|
|
15
|
+
for (const [imageId, src] of images) {
|
|
16
|
+
const key = `${agentId}:${imageId}`;
|
|
17
|
+
const cached = cache.get(key);
|
|
18
|
+
if (cached) {
|
|
19
|
+
attachments.push(cached);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
// Only the recognized local comment-image endpoint is fetched. It enforces
|
|
23
|
+
// the current user's access to the comment before returning image bytes.
|
|
24
|
+
const response = await fetch(src, { credentials: "include" });
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
throw new Error("Could not load a comment screenshot. Please try again.");
|
|
27
|
+
}
|
|
28
|
+
const blob = await response.blob();
|
|
29
|
+
const extension = {
|
|
30
|
+
"image/png": "png",
|
|
31
|
+
"image/jpeg": "jpg",
|
|
32
|
+
"image/gif": "gif",
|
|
33
|
+
"image/webp": "webp",
|
|
34
|
+
}[blob.type];
|
|
35
|
+
if (!extension || !blob.size || blob.size > COMMENT_IMAGE_MAX_BYTES) {
|
|
36
|
+
throw new Error("A comment screenshot is invalid or too large to attach.");
|
|
37
|
+
}
|
|
38
|
+
const file = new File([blob], `comment-image-${imageId}.${extension}`, {
|
|
39
|
+
type: blob.type,
|
|
40
|
+
});
|
|
41
|
+
const result = await uploadDocument(agentId, file, profileId);
|
|
42
|
+
if (!result.success || !result.document) {
|
|
43
|
+
throw new Error(result.error || "Could not attach a comment screenshot.");
|
|
44
|
+
}
|
|
45
|
+
const { extractedText: _extractedText, ...attachment } = result.document;
|
|
46
|
+
cache.set(key, attachment);
|
|
47
|
+
attachments.push(attachment);
|
|
48
|
+
}
|
|
49
|
+
return attachments;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=commentAgentAttachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commentAgentAttachments.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentAgentAttachments.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAGf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;0EAE0E;AAC1E,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAe,EACf,OAAiC,EACjC,SAA6B,EAC7B,KAA0C;IAE1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;gBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,MAAM;SACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,uBAAuB,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,iBAAiB,OAAO,IAAI,SAAS,EAAE,EAAE;YACrE,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,wCAAwC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC3B,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -19,8 +19,10 @@ export type CommentThreadEntry = {
|
|
|
19
19
|
};
|
|
20
20
|
export declare function buildCommentThreadEntries(orderedThread: readonly CommentType[], resolvedAuthorNames?: Record<string, string>): CommentThreadEntry[];
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* Context message for the agent: human-readable target names and selected
|
|
23
|
+
* text followed by every comment of the conversation in order. Structured
|
|
24
|
+
* item, component, and field identifiers are supplied through AgentMetadata,
|
|
25
|
+
* while general workflow instructions belong to the Resolve Comments profile.
|
|
24
26
|
*/
|
|
25
27
|
export declare function buildCommentThreadPrompt(rootComment: CommentType, orderedThread: readonly CommentType[], resolvedAuthorNames?: Record<string, string>): string;
|
|
26
28
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getComponentById } from "../componentTreeHelper";
|
|
2
2
|
import { formatDate } from "../utils";
|
|
3
3
|
import { getFeedbackAuthorName } from "./feedbackAvatar";
|
|
4
|
+
import { splitCommentImages } from "./commentImages";
|
|
4
5
|
function idsMatch(left, right) {
|
|
5
6
|
const normalize = (value) => (value ?? "").replace(/[{}-]/g, "").toLowerCase();
|
|
6
7
|
const a = normalize(left);
|
|
@@ -16,14 +17,16 @@ function buildCommentTargetPromptParts(comment) {
|
|
|
16
17
|
const parts = [];
|
|
17
18
|
const mainItemId = comment.mainItemId;
|
|
18
19
|
const targetItemId = comment.itemId;
|
|
19
|
-
if (comment.mainItemName
|
|
20
|
-
parts.push(`Page: ${comment.mainItemName
|
|
20
|
+
if (comment.mainItemName) {
|
|
21
|
+
parts.push(`Page: ${comment.mainItemName}`);
|
|
21
22
|
}
|
|
22
|
-
if (targetItemId &&
|
|
23
|
-
|
|
23
|
+
if (targetItemId &&
|
|
24
|
+
!idsMatch(targetItemId, mainItemId) &&
|
|
25
|
+
comment.itemName) {
|
|
26
|
+
parts.push(`Anchored item/component: ${comment.itemName}`);
|
|
24
27
|
}
|
|
25
|
-
if (comment.
|
|
26
|
-
parts.push(`Field: ${comment.fieldName
|
|
28
|
+
if (comment.fieldName) {
|
|
29
|
+
parts.push(`Field: ${comment.fieldName}`);
|
|
27
30
|
}
|
|
28
31
|
return parts;
|
|
29
32
|
}
|
|
@@ -91,8 +94,10 @@ export function buildCommentThreadEntries(orderedThread, resolvedAuthorNames) {
|
|
|
91
94
|
}));
|
|
92
95
|
}
|
|
93
96
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
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.
|
|
96
101
|
*/
|
|
97
102
|
export function buildCommentThreadPrompt(rootComment, orderedThread, resolvedAuthorNames) {
|
|
98
103
|
const targetParts = buildCommentTargetPromptParts(rootComment);
|
|
@@ -109,18 +114,20 @@ export function buildCommentThreadPrompt(rootComment, orderedThread, resolvedAut
|
|
|
109
114
|
const replyTo = entry.parentCommentId && entry.parentCommentId !== rootComment.id
|
|
110
115
|
? ` [in reply to ${nameById.get(entry.parentCommentId) || "an earlier comment"}]`
|
|
111
116
|
: "";
|
|
112
|
-
const text = (entry.text || "")
|
|
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)";
|
|
113
123
|
return `${index + 1}. ${entry.authorDisplayName}${when}${replyTo}: ${text}`;
|
|
114
124
|
});
|
|
115
125
|
const count = entries.length;
|
|
116
126
|
return [
|
|
117
|
-
"Please help resolve this review comment thread.",
|
|
118
127
|
...(targetParts.length > 0 ? [targetParts.join(" | ")] : []),
|
|
119
128
|
"",
|
|
120
129
|
`Conversation (${count} ${count === 1 ? "comment" : "comments"}, oldest first):`,
|
|
121
130
|
...lines,
|
|
122
|
-
"",
|
|
123
|
-
`When the changes are done, ask me whether I am satisfied with them and whether you should add a reply to this thread that summarizes the changes. Only after I confirm, add that reply with the add-comment tool using parentCommentId=${rootComment.id}. Do not add it unasked.`,
|
|
124
131
|
].join("\n");
|
|
125
132
|
}
|
|
126
133
|
/**
|