386534a415
- 为避免prop drilling把原有的刷新画布集中到一个useContext中, 在此基础上实现画布聚焦, 并在画布agent中使用  Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/123 Co-authored-by: 王德宇 <kvtodev@outlook.com> Co-committed-by: 王德宇 <kvtodev@outlook.com>
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import type { MouseEvent as ReactMouseEvent } from 'react';
|
|
|
|
import type { EditorAgentAttachmentRef } from '@/packages/shared/src/contracts';
|
|
|
|
export enum EditorAgentRightClickAction {
|
|
CopyText = 'copy_text',
|
|
CopyImage = 'copy_image',
|
|
ReferenceImage = 'reference_image',
|
|
FocusCanvas = 'focus_canvas',
|
|
DownloadAsset = 'download_asset',
|
|
}
|
|
|
|
export type EditorAgentContextAsset =
|
|
| (EditorAgentAttachmentRef & {
|
|
kind: 'attachment';
|
|
mediaType: 'image';
|
|
suggestedFileName: string;
|
|
})
|
|
| {
|
|
kind: 'generated_media';
|
|
mediaType: 'image' | 'video' | 'audio';
|
|
mediaSrc: string;
|
|
objectKey?: string | null;
|
|
resourceId?: string | null;
|
|
suggestedFileName: string;
|
|
};
|
|
|
|
export type RightClickMenuTarget =
|
|
| { kind: 'text'; text: string }
|
|
| { kind: 'asset'; asset: EditorAgentContextAsset };
|
|
|
|
export type RightClickMenuHandler = (
|
|
event: ReactMouseEvent<HTMLElement>,
|
|
asset: EditorAgentContextAsset,
|
|
) => void;
|
|
|
|
export function attachmentKey(attachment: EditorAgentAttachmentRef) {
|
|
return `${attachment.source}:${attachment.referenceId}`;
|
|
}
|
|
|
|
export function contextAssetMediaSrc(asset: EditorAgentContextAsset) {
|
|
return asset.kind === 'attachment' ? asset.imageSrc : asset.mediaSrc;
|
|
}
|