@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
|
@@ -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;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"commentAi.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentAi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { type CommentImageScope } from "./commentImages";
|
|
3
|
+
export type CommentImageAttachmentStatus = "uploading" | "done" | "error";
|
|
4
|
+
export interface CommentImageAttachment {
|
|
5
|
+
/** Local key; stable across upload and removal. */
|
|
6
|
+
key: string;
|
|
7
|
+
/** Server image id once uploaded. */
|
|
8
|
+
imageId?: string;
|
|
9
|
+
/** Object URL of the pasted file, or the served image URL for existing images. */
|
|
10
|
+
previewUrl: string;
|
|
11
|
+
fileName: string;
|
|
12
|
+
status: CommentImageAttachmentStatus;
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
3
15
|
export interface UseCommentImagePasteOptions {
|
|
4
16
|
scope: CommentImageScope;
|
|
5
17
|
/** Main item id (review comments) or task id (task comments) the composer targets. */
|
|
6
18
|
scopeId?: string | null;
|
|
7
19
|
/** Item language for review comments; lets reviewers without Sitecore read access upload. */
|
|
8
20
|
scopeLanguage?: string | null;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
onValueChange: (value: string) => void;
|
|
21
|
+
/** Comment text being edited; image references in it become attachments. */
|
|
22
|
+
initialText?: string;
|
|
12
23
|
disabled?: boolean;
|
|
13
24
|
}
|
|
14
25
|
export interface CommentImagePasteState {
|
|
@@ -22,24 +33,40 @@ export interface CommentImagePasteState {
|
|
|
22
33
|
onDragOver: (event: React.DragEvent<HTMLTextAreaElement>) => void;
|
|
23
34
|
/** Attach to the composer textarea (`onDrop`). Handles dropped image files. */
|
|
24
35
|
onDrop: (event: React.DragEvent<HTMLTextAreaElement>) => void;
|
|
36
|
+
/** Thumbnails to show above the textarea, in paste order. */
|
|
37
|
+
attachments: CommentImageAttachment[];
|
|
38
|
+
removeAttachment: (key: string) => void;
|
|
39
|
+
/** Drops every attachment, e.g. after the comment was posted or cancelled. */
|
|
40
|
+
clearAttachments: () => void;
|
|
41
|
+
/** True while at least one attachment is still uploading. */
|
|
25
42
|
uploading: boolean;
|
|
26
|
-
|
|
27
|
-
|
|
43
|
+
/** Uploaded images that will be part of the comment. */
|
|
44
|
+
readyCount: number;
|
|
28
45
|
/**
|
|
29
46
|
* Resolves once no upload is pending for the current target, so a submit
|
|
30
|
-
* triggered mid-upload can wait for the image
|
|
47
|
+
* triggered mid-upload can wait for the image references.
|
|
31
48
|
*/
|
|
32
49
|
waitForUploads: () => Promise<void>;
|
|
33
|
-
/** The
|
|
34
|
-
|
|
50
|
+
/** The text to save: the typed text plus one reference line per uploaded image. */
|
|
51
|
+
buildSubmitText: (text: string) => string;
|
|
35
52
|
}
|
|
36
53
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
54
|
+
* Splits the text of a comment being edited into the plain text and the
|
|
55
|
+
* attachments for the images it references. Order of the images is kept;
|
|
56
|
+
* on save they are appended after the text again.
|
|
57
|
+
*/
|
|
58
|
+
export declare function splitInitialCommentText(initialText: string | undefined): {
|
|
59
|
+
text: string;
|
|
60
|
+
attachments: CommentImageAttachment[];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Lets a comment composer accept pasted (or dropped) screenshots. Each image
|
|
64
|
+
* shows up as a thumbnail above the textarea while it uploads; the composer
|
|
65
|
+
* keeps typing text only, and `buildSubmitText` appends one markdown
|
|
66
|
+
* reference line per uploaded image when the comment is saved.
|
|
40
67
|
*
|
|
41
68
|
* Uploads are bound to the composer target: when `scope`/`scopeId` change while
|
|
42
|
-
* an upload is in flight (e.g. the task panel switches tasks), the
|
|
43
|
-
*
|
|
69
|
+
* an upload is in flight (e.g. the task panel switches tasks), the attachments
|
|
70
|
+
* are dropped instead of ending up on the new target's comment.
|
|
44
71
|
*/
|
|
45
|
-
export declare function useCommentImagePaste({ scope, scopeId, scopeLanguage,
|
|
72
|
+
export declare function useCommentImagePaste({ scope, scopeId, scopeLanguage, initialText, disabled, }: UseCommentImagePasteOptions): CommentImagePasteState;
|
|
@@ -1,103 +1,132 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { buildCommentImageMarkdown, getImageFilesFromDataTransfer,
|
|
2
|
+
import { buildCommentImageMarkdown, getImageFilesFromDataTransfer, splitCommentImages, uploadCommentImage, } from "./commentImages";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Splits the text of a comment being edited into the plain text and the
|
|
5
|
+
* attachments for the images it references. Order of the images is kept;
|
|
6
|
+
* on save they are appended after the text again.
|
|
7
|
+
*/
|
|
8
|
+
export function splitInitialCommentText(initialText) {
|
|
9
|
+
if (!initialText)
|
|
10
|
+
return { text: "", attachments: [] };
|
|
11
|
+
const attachments = [];
|
|
12
|
+
const textParts = [];
|
|
13
|
+
for (const segment of splitCommentImages(initialText)) {
|
|
14
|
+
if (segment.type === "image") {
|
|
15
|
+
attachments.push({
|
|
16
|
+
key: `existing-${segment.imageId}`,
|
|
17
|
+
imageId: segment.imageId,
|
|
18
|
+
previewUrl: segment.src,
|
|
19
|
+
fileName: `${segment.alt}.png`,
|
|
20
|
+
status: "done",
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
textParts.push(segment.value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { text: textParts.join("\n").trim(), attachments };
|
|
28
|
+
}
|
|
29
|
+
let attachmentSequence = 0;
|
|
30
|
+
/**
|
|
31
|
+
* Lets a comment composer accept pasted (or dropped) screenshots. Each image
|
|
32
|
+
* shows up as a thumbnail above the textarea while it uploads; the composer
|
|
33
|
+
* keeps typing text only, and `buildSubmitText` appends one markdown
|
|
34
|
+
* reference line per uploaded image when the comment is saved.
|
|
7
35
|
*
|
|
8
36
|
* Uploads are bound to the composer target: when `scope`/`scopeId` change while
|
|
9
|
-
* an upload is in flight (e.g. the task panel switches tasks), the
|
|
10
|
-
*
|
|
37
|
+
* an upload is in flight (e.g. the task panel switches tasks), the attachments
|
|
38
|
+
* are dropped instead of ending up on the new target's comment.
|
|
11
39
|
*/
|
|
12
|
-
export function useCommentImagePaste({ scope, scopeId, scopeLanguage,
|
|
13
|
-
const [
|
|
14
|
-
const
|
|
15
|
-
|
|
40
|
+
export function useCommentImagePaste({ scope, scopeId, scopeLanguage, initialText, disabled = false, }) {
|
|
41
|
+
const [attachments, setAttachments] = React.useState(() => splitInitialCommentText(initialText).attachments);
|
|
42
|
+
const attachmentsRef = React.useRef(attachments);
|
|
43
|
+
attachmentsRef.current = attachments;
|
|
16
44
|
const waitersRef = React.useRef([]);
|
|
17
|
-
// Latest composer value: follows the prop whenever the parent changes it, but
|
|
18
|
-
// keeps an inserted reference across re-renders where the prop did not move.
|
|
19
|
-
const valueRef = React.useRef(value);
|
|
20
|
-
const lastPropValueRef = React.useRef(value);
|
|
21
|
-
if (lastPropValueRef.current !== value) {
|
|
22
|
-
lastPropValueRef.current = value;
|
|
23
|
-
valueRef.current = value;
|
|
24
|
-
}
|
|
25
45
|
const mountedRef = React.useRef(true);
|
|
26
46
|
// Every target change starts a new generation; uploads remember the generation
|
|
27
47
|
// they started in and become no-ops once it moves on.
|
|
28
48
|
const targetKey = `${scope}:${scopeId ?? ""}`;
|
|
29
49
|
const targetKeyRef = React.useRef(targetKey);
|
|
30
50
|
const generationRef = React.useRef(0);
|
|
51
|
+
const pendingCount = React.useMemo(() => attachments.filter((a) => a.status === "uploading").length, [attachments]);
|
|
52
|
+
const readyCount = React.useMemo(() => attachments.filter((a) => a.status === "done" && a.imageId).length, [attachments]);
|
|
31
53
|
const resolveWaiters = React.useCallback(() => {
|
|
32
54
|
const waiters = waitersRef.current;
|
|
33
55
|
waitersRef.current = [];
|
|
34
56
|
waiters.forEach((resolve) => resolve());
|
|
35
57
|
}, []);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
setPendingCount(pendingCountRef.current);
|
|
39
|
-
if (pendingCountRef.current === 0)
|
|
58
|
+
React.useEffect(() => {
|
|
59
|
+
if (pendingCount === 0)
|
|
40
60
|
resolveWaiters();
|
|
41
|
-
}, [resolveWaiters]);
|
|
61
|
+
}, [pendingCount, resolveWaiters]);
|
|
62
|
+
const revokePreview = (attachment) => {
|
|
63
|
+
if (attachment.previewUrl.startsWith("blob:")) {
|
|
64
|
+
URL.revokeObjectURL(attachment.previewUrl);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
42
67
|
React.useEffect(() => {
|
|
43
68
|
mountedRef.current = true;
|
|
44
69
|
return () => {
|
|
45
70
|
mountedRef.current = false;
|
|
46
71
|
generationRef.current += 1;
|
|
72
|
+
attachmentsRef.current.forEach(revokePreview);
|
|
47
73
|
resolveWaiters();
|
|
48
74
|
};
|
|
49
75
|
}, [resolveWaiters]);
|
|
76
|
+
const clearAttachments = React.useCallback(() => {
|
|
77
|
+
generationRef.current += 1;
|
|
78
|
+
attachmentsRef.current.forEach(revokePreview);
|
|
79
|
+
setAttachments([]);
|
|
80
|
+
resolveWaiters();
|
|
81
|
+
}, [resolveWaiters]);
|
|
50
82
|
React.useEffect(() => {
|
|
51
83
|
if (targetKeyRef.current === targetKey)
|
|
52
84
|
return;
|
|
53
85
|
targetKeyRef.current = targetKey;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const textarea = textareaRef.current;
|
|
60
|
-
// The textarea's own value/selection is the freshest source while the
|
|
61
|
-
// user keeps typing during the upload; fall back to the last known value.
|
|
62
|
-
const currentValue = textarea?.value ?? valueRef.current;
|
|
63
|
-
const selectionStart = textarea?.selectionStart ?? currentValue.length;
|
|
64
|
-
const selectionEnd = textarea?.selectionEnd ?? selectionStart;
|
|
65
|
-
const next = insertCommentImageMarkdown(currentValue, selectionStart, selectionEnd, markdown);
|
|
66
|
-
valueRef.current = next.value;
|
|
67
|
-
onValueChange(next.value);
|
|
68
|
-
window.requestAnimationFrame(() => {
|
|
69
|
-
const node = textareaRef.current;
|
|
70
|
-
if (!node)
|
|
71
|
-
return;
|
|
72
|
-
node.focus();
|
|
73
|
-
node.setSelectionRange(next.cursor, next.cursor);
|
|
74
|
-
});
|
|
75
|
-
}, [onValueChange, textareaRef]);
|
|
86
|
+
clearAttachments();
|
|
87
|
+
}, [clearAttachments, targetKey]);
|
|
88
|
+
const updateAttachment = React.useCallback((key, patch) => {
|
|
89
|
+
setAttachments((current) => current.map((a) => (a.key === key ? { ...a, ...patch } : a)));
|
|
90
|
+
}, []);
|
|
76
91
|
const uploadFiles = React.useCallback(async (files) => {
|
|
77
92
|
const generation = generationRef.current;
|
|
78
93
|
const isStale = () => !mountedRef.current || generation !== generationRef.current;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
94
|
+
const created = files.map((file) => ({
|
|
95
|
+
key: `pasted-${Date.now()}-${attachmentSequence++}`,
|
|
96
|
+
previewUrl: URL.createObjectURL(file),
|
|
97
|
+
fileName: file.name,
|
|
98
|
+
status: "uploading",
|
|
99
|
+
}));
|
|
100
|
+
setAttachments((current) => [...current, ...created]);
|
|
101
|
+
for (let index = 0; index < files.length; index++) {
|
|
102
|
+
const file = files[index];
|
|
103
|
+
const key = created[index].key;
|
|
82
104
|
try {
|
|
83
105
|
const uploaded = await uploadCommentImage(file, scope, scopeId, scopeLanguage);
|
|
84
106
|
if (isStale())
|
|
85
107
|
return;
|
|
86
|
-
|
|
108
|
+
updateAttachment(key, { imageId: uploaded.imageId, status: "done" });
|
|
87
109
|
}
|
|
88
110
|
catch (err) {
|
|
89
111
|
if (isStale())
|
|
90
112
|
return;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
setPending(pendingCountRef.current - 1);
|
|
113
|
+
updateAttachment(key, {
|
|
114
|
+
status: "error",
|
|
115
|
+
error: err instanceof Error && err.message
|
|
116
|
+
? err.message
|
|
117
|
+
: "Image upload failed",
|
|
118
|
+
});
|
|
98
119
|
}
|
|
99
120
|
}
|
|
100
|
-
}, [
|
|
121
|
+
}, [scope, scopeId, scopeLanguage, updateAttachment]);
|
|
122
|
+
const removeAttachment = React.useCallback((key) => {
|
|
123
|
+
setAttachments((current) => {
|
|
124
|
+
const target = current.find((a) => a.key === key);
|
|
125
|
+
if (target)
|
|
126
|
+
revokePreview(target);
|
|
127
|
+
return current.filter((a) => a.key !== key);
|
|
128
|
+
});
|
|
129
|
+
}, []);
|
|
101
130
|
const onPaste = React.useCallback((event) => {
|
|
102
131
|
if (disabled)
|
|
103
132
|
return;
|
|
@@ -126,24 +155,34 @@ export function useCommentImagePaste({ scope, scopeId, scopeLanguage, textareaRe
|
|
|
126
155
|
event.preventDefault();
|
|
127
156
|
void uploadFiles(files);
|
|
128
157
|
}, [disabled, uploadFiles]);
|
|
129
|
-
const clearError = React.useCallback(() => setError(null), []);
|
|
130
158
|
const waitForUploads = React.useCallback(() => new Promise((resolve) => {
|
|
131
|
-
|
|
159
|
+
const pending = attachmentsRef.current.some((a) => a.status === "uploading");
|
|
160
|
+
if (!pending) {
|
|
132
161
|
resolve();
|
|
133
162
|
return;
|
|
134
163
|
}
|
|
135
164
|
waitersRef.current.push(resolve);
|
|
136
165
|
}), []);
|
|
137
|
-
const
|
|
166
|
+
const buildSubmitText = React.useCallback((text) => {
|
|
167
|
+
const references = attachmentsRef.current
|
|
168
|
+
.filter((a) => a.status === "done" && a.imageId)
|
|
169
|
+
.map((a) => buildCommentImageMarkdown(a.imageId));
|
|
170
|
+
const body = text.trim();
|
|
171
|
+
if (references.length === 0)
|
|
172
|
+
return body;
|
|
173
|
+
return body ? `${body}\n${references.join("\n")}` : references.join("\n");
|
|
174
|
+
}, []);
|
|
138
175
|
return {
|
|
139
176
|
onPaste,
|
|
140
177
|
onDragOver,
|
|
141
178
|
onDrop,
|
|
179
|
+
attachments,
|
|
180
|
+
removeAttachment,
|
|
181
|
+
clearAttachments,
|
|
142
182
|
uploading: pendingCount > 0,
|
|
143
|
-
|
|
144
|
-
clearError,
|
|
183
|
+
readyCount,
|
|
145
184
|
waitForUploads,
|
|
146
|
-
|
|
185
|
+
buildSubmitText,
|
|
147
186
|
};
|
|
148
187
|
}
|
|
149
188
|
//# sourceMappingURL=useCommentImagePaste.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCommentImagePaste.js","sourceRoot":"","sources":["../../../src/editor/reviews/useCommentImagePaste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,
|
|
1
|
+
{"version":3,"file":"useCommentImagePaste.js","sourceRoot":"","sources":["../../../src/editor/reviews/useCommentImagePaste.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ export declare const AGENT_STATUSES: readonly ["new", "running", "waitingForAppr
|
|
|
2
2
|
export type AgentStatus = (typeof AGENT_STATUSES)[number];
|
|
3
3
|
export declare const TRANSIENT_AGENT_RUN_STATES: Set<string>;
|
|
4
4
|
export declare function isAgentStatus(value: unknown): value is AgentStatus;
|
|
5
|
+
export declare function getAgentStatusLabel(status: AgentStatus): string;
|
|
5
6
|
export declare function parseAgentStatus(value: unknown): AgentStatus | undefined;
|
|
6
7
|
export declare function parseAgentRunStatusData(data: unknown): AgentStatus | undefined;
|
|
7
8
|
export declare function isTransientAgentRunState(value: unknown): boolean;
|
|
@@ -9,6 +9,17 @@ export const AGENT_STATUSES = [
|
|
|
9
9
|
"idle",
|
|
10
10
|
"costLimitReached",
|
|
11
11
|
];
|
|
12
|
+
const AGENT_STATUS_LABELS = {
|
|
13
|
+
new: "New",
|
|
14
|
+
running: "Running",
|
|
15
|
+
waitingForApproval: "Waiting for approval",
|
|
16
|
+
waitingForInput: "Waiting for input",
|
|
17
|
+
completed: "Completed",
|
|
18
|
+
closed: "Closed",
|
|
19
|
+
error: "Error",
|
|
20
|
+
idle: "Idle",
|
|
21
|
+
costLimitReached: "Cost limit reached",
|
|
22
|
+
};
|
|
12
23
|
const AGENT_STATUS_SET = new Set(AGENT_STATUSES);
|
|
13
24
|
export const TRANSIENT_AGENT_RUN_STATES = new Set([
|
|
14
25
|
"toolApprovalGranted",
|
|
@@ -23,6 +34,9 @@ export const TRANSIENT_AGENT_RUN_STATES = new Set([
|
|
|
23
34
|
export function isAgentStatus(value) {
|
|
24
35
|
return typeof value === "string" && AGENT_STATUS_SET.has(value);
|
|
25
36
|
}
|
|
37
|
+
export function getAgentStatusLabel(status) {
|
|
38
|
+
return AGENT_STATUS_LABELS[status];
|
|
39
|
+
}
|
|
26
40
|
export function parseAgentStatus(value) {
|
|
27
41
|
if (isAgentStatus(value)) {
|
|
28
42
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentStatus.js","sourceRoot":"","sources":["../../../src/editor/services/agentStatus.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK;IACL,SAAS;IACT,oBAAoB;IACpB,iBAAiB;IACjB,WAAW;IACX,QAAQ;IACR,OAAO;IACP,MAAM;IACN,kBAAkB;CACV,CAAC;AAIX,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAS;IACxD,qBAAqB;IACrB,sBAAsB;IACtB,uBAAuB;IACvB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,gBAAgB;IAChB,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,oBAAoB,CAAC;QAC1B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,sBAAsB;YACzB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,iBAAiB,CAAC;QACvB,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB;YACtB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,kBAAkB,CAAC;QACxB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB;YACvB,OAAO,kBAAkB,CAAC;QAC5B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAa;IAEb,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAIf,CAAC;IAEF,MAAM,YAAY,GAChB,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IACE,OAAO,CAAC,gBAAgB;QACxB,OAAO,CAAC,KAAK,KAAK,uBAAuB;QACzC,OAAO,CAAC,KAAK,KAAK,uBAAuB;QACzC,OAAO,CAAC,MAAM,KAAK,uBAAuB;QAC1C,OAAO,CAAC,MAAM,KAAK,uBAAuB,EAC1C,CAAC;QACD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAsC;IAEtC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAsC;IAClE,OAAO,MAAM,KAAK,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAsC;IAEtC,OAAO,MAAM,KAAK,SAAS,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAsC,EACtC,WAAsC,EACtC,iBAA4C;IAE5C,IACE,MAAM,KAAK,oBAAoB;QAC/B,MAAM,KAAK,iBAAiB;QAC5B,MAAM,KAAK,kBAAkB,EAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACrE,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,UAAU,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAsC;IAEtC,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,oBAAoB,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAsC;IAEtC,OAAO,CACL,MAAM,KAAK,SAAS;QACpB,MAAM,KAAK,oBAAoB;QAC/B,MAAM,KAAK,iBAAiB;QAC5B,MAAM,KAAK,kBAAkB;QAC7B,MAAM,KAAK,MAAM,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAsC;IAEtC,OAAO,CACL,MAAM,KAAK,oBAAoB;QAC/B,MAAM,KAAK,iBAAiB;QAC5B,MAAM,KAAK,kBAAkB;QAC7B,MAAM,KAAK,OAAO;QAClB,MAAM,KAAK,MAAM;QACjB,MAAM,KAAK,WAAW,CACvB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"agentStatus.js","sourceRoot":"","sources":["../../../src/editor/services/agentStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { Layers } from "lucide-react";
|
|
|
3
3
|
import { SettingsCard as Card } from "../SettingsCard";
|
|
4
4
|
import { formatDateOnly } from "../../utils";
|
|
5
5
|
import { getBatchStatusIcon, getBatchStatusLabelStyles } from "./utils";
|
|
6
|
+
import { capitalizeFirstLetter } from "../../../lib/utils";
|
|
6
7
|
/**
|
|
7
8
|
* Displays a list of recent embedding batches
|
|
8
9
|
*/
|
|
@@ -10,7 +11,7 @@ export function RecentBatchesList({ batches }) {
|
|
|
10
11
|
if (!batches || batches.length === 0) {
|
|
11
12
|
return null;
|
|
12
13
|
}
|
|
13
|
-
return (_jsx(Card, { icon: _jsx(Layers, { strokeWidth: 1, className: "h-5 w-5" }), title: "Recent batches", description: "The most recent embedding batch runs and their results.", children: _jsx("div", { className: "space-y-2 overflow-y-auto", children: batches.map((batch) => (_jsxs("div", { className: "bg-neutral-grey-5 rounded p-2 text-sm", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("div", { className: "flex flex-1 flex-wrap items-center gap-2", children: [getBatchStatusIcon(batch.status), _jsx("span", { className: `badge-pad-sm rounded text-xs font-medium ${getBatchStatusLabelStyles(batch.status)}`, children: batch.status ?? "Unknown" }), _jsx("span", { className: "font-mono text-xs", children: batch.id?.slice(-8) ?? "Unknown" })] }), _jsxs("div", { className: "shrink-0 text-right", children: [_jsxs("div", { className: "text-neutral-grey-50", children: [batch.numberOfItems ?? 0, " items"] }), _jsx("div", { className: "text-neutral-grey-50 text-xs", children: batch.created
|
|
14
|
+
return (_jsx(Card, { icon: _jsx(Layers, { strokeWidth: 1, className: "h-5 w-5" }), title: "Recent batches", description: "The most recent embedding batch runs and their results.", children: _jsx("div", { className: "space-y-2 overflow-y-auto", children: batches.map((batch) => (_jsxs("div", { className: "bg-neutral-grey-5 rounded p-2 text-sm", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs("div", { className: "flex flex-1 flex-wrap items-center gap-2", children: [getBatchStatusIcon(batch.status), _jsx("span", { className: `badge-pad-sm rounded text-xs font-medium ${getBatchStatusLabelStyles(batch.status)}`, children: capitalizeFirstLetter(batch.status ?? "Unknown") }), _jsx("span", { className: "font-mono text-xs", children: batch.id?.slice(-8) ?? "Unknown" })] }), _jsxs("div", { className: "shrink-0 text-right", children: [_jsxs("div", { className: "text-neutral-grey-50", children: [batch.numberOfItems ?? 0, " items"] }), _jsx("div", { className: "text-neutral-grey-50 text-xs", children: batch.created
|
|
14
15
|
? formatDateOnly(new Date(batch.created))
|
|
15
16
|
: "Unknown" })] })] }), ((batch.firstErrors && batch.firstErrors.length > 0) ||
|
|
16
17
|
batch.errorMessage) && (_jsx("div", { className: "text-feedback-red mt-1 text-xs", children: (() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecentBatchesList.js","sourceRoot":"","sources":["../../../../src/editor/settings/index/RecentBatchesList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"RecentBatchesList.js","sourceRoot":"","sources":["../../../../src/editor/settings/index/RecentBatchesList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { Plus, LayoutTemplate, Pentagon, Folder, Square, ChevronRight, Circle, F
|
|
|
14
14
|
import { SimpleIconButton, SimpleIconButtonStyleProvider, } from "../ui/SimpleIconButton";
|
|
15
15
|
import { Spinner } from "../ui/Spinner";
|
|
16
16
|
import { useComponentVisualMode } from "../componentVisualMode";
|
|
17
|
-
import { findThumbnailRect, getThumbnailBackgroundStyle, useLiveComponentThumbnails, } from "./liveComponentThumbnails";
|
|
17
|
+
import { LIVE_THUMBNAIL_BOX, findThumbnailRect, getThumbnailBackgroundStyle, useLiveComponentThumbnails, } from "./liveComponentThumbnails";
|
|
18
18
|
import { SearchInput } from "../../components/SearchInput";
|
|
19
19
|
import { Tooltip, TooltipContent, TooltipTrigger, } from "../../components/ui/tooltip";
|
|
20
20
|
import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover";
|
|
@@ -1051,7 +1051,10 @@ export function ComponentTree({ pageViewContext, itemDescriptor, item, isLoading
|
|
|
1051
1051
|
editContext.readonly ||
|
|
1052
1052
|
editContext.mode !== "edit", onClick: toggleInsertMode, children: _jsx("span", { className: "min-w-0 truncate", children: "Add component" }) }) }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(SimpleIconButton, { icon: _jsx(ImageIcon, { strokeWidth: 1, className: "h-5 w-5" }), label: showThumbnails ? "Hide thumbnails" : "Show thumbnails", size: "small", className: "h-[30px] w-[30px]", selected: showThumbnails, "data-testid": "component-tree-toggle-thumbnails", onClick: () => setVisualMode(showThumbnails ? "icon" : "thumbnail") }), _jsx(SimpleIconButton, { icon: _jsx(LayoutTemplate, { strokeWidth: 1, className: "h-5 w-5" }), label: editContext?.showLayoutComponents
|
|
1053
1053
|
? "Hide layout"
|
|
1054
|
-
: "Show layout", size: "small", className: "h-[30px] w-[30px]", selected: editContext?.showLayoutComponents, "data-testid": "component-tree-toggle-layout", onClick: () => editContext?.setShowLayoutComponents(!editContext.showLayoutComponents) })] })] }) }), _jsx("div", { className: "border-border-default border-b p-2", "data-testid": "component-tree-search", children: _jsx(SearchInput, { value: filter, onChange: setFilter, className: "w-full", placeholder: "Search IDs, names, types..." }) }), _jsx("div", {
|
|
1054
|
+
: "Show layout", size: "small", className: "h-[30px] w-[30px]", selected: editContext?.showLayoutComponents, "data-testid": "component-tree-toggle-layout", onClick: () => editContext?.setShowLayoutComponents(!editContext.showLayoutComponents) })] })] }) }), _jsx("div", { className: "border-border-default border-b p-2", "data-testid": "component-tree-search", children: _jsx(SearchInput, { value: filter, onChange: setFilter, className: "w-full", placeholder: "Search IDs, names, types..." }) }), _jsx("div", {
|
|
1055
|
+
// Center 32px reorder targets in the 8px card gaps so they overlap
|
|
1056
|
+
// both neighboring cards and remain easy to hit while dragging.
|
|
1057
|
+
className: "min-h-0 flex-1 overflow-auto overflow-x-hidden p-2 [&_.drop-zone]:-top-1 [&_.drop-zone]:h-8", ref: treeRef, "data-testid": "component-tree", children: isFiltering && visibleRootNodes.length === 0 ? (_jsxs("div", { className: "text-neutral-grey-50 flex h-full items-center justify-center px-4 text-center text-xs", children: ["No components match \"", filter.trim(), "\"."] })) : (_jsx(PerfectTree, { nodes: visibleRootNodes, isDragging: !isFiltering && !!editContext?.dragObject, multiDragNoun: "components", selectedKeys: selectedItems, expandedKeys: expandedItems, onToggleExpand: isFiltering ? undefined : handleToggle, onSelect: handleTreeSelection, onContextMenu: handleTreeContextMenu, enableDragAndDrop: !isFiltering, onDragOverZone: handleDragOverZone, isValidDropZone: handleIsValidDropZone, onStartDrag: handleStartDrag, onDragEnd: handleDragEnd, onDrop: handleDropZone, onNodeMouseMove: handleNodeInsertTargetHover, onNodeMouseLeave: handleNodeInsertTargetLeave, renderNodePrefix: (node) => {
|
|
1055
1058
|
const treeNode = node;
|
|
1056
1059
|
if (treeNode.type !== "component")
|
|
1057
1060
|
return null;
|
|
@@ -1315,7 +1318,7 @@ function filterComponentTreeNodes(nodes, filter) {
|
|
|
1315
1318
|
expandedKeys: Array.from(expandedKeys),
|
|
1316
1319
|
};
|
|
1317
1320
|
}
|
|
1318
|
-
const NODE_THUMBNAIL_BOX =
|
|
1321
|
+
const NODE_THUMBNAIL_BOX = LIVE_THUMBNAIL_BOX;
|
|
1319
1322
|
/**
|
|
1320
1323
|
* Live crop of the component out of the shared page sheet. While the first
|
|
1321
1324
|
* sheet is on its way the box shows a spinner. Components the host did not
|