import { CanvasNodeAnnotationDialog, type CanvasImageAnnotationPayload } from "@/components/canvas/canvas-node-annotation-dialog"; import { CanvasNodeCropDialog, type CanvasImageCropRect } from "@/components/canvas/canvas-node-crop-dialog"; import { CanvasNodeMaskEditDialog, type CanvasImageMaskEditPayload } from "@/components/canvas/canvas-node-mask-edit-dialog"; import { CanvasNodeUpscaleDialog, type CanvasImageUpscaleParams } from "@/components/canvas/canvas-node-upscale-dialog"; import { CanvasNodeImageEditDialog, type CanvasImageEditPayload } from "@/components/canvas/canvas-node-image-edit-dialog"; import { CanvasNodeLayerDecompositionDialog, type CanvasImageLayerDecompositionPayload } from "@/components/canvas/canvas-node-layer-decomposition-dialog"; import { CanvasNodeTextEditDialog, type CanvasImageTextEditPayload } from "@/components/canvas/canvas-node-text-edit-dialog"; import type { CanvasNodeData } from "@/types/canvas"; import type { AiConfig } from "@/stores/use-config-store"; type CanvasProjectMediaDialogsProps = { cropNode: CanvasNodeData | null; annotationNode: CanvasNodeData | null; annotationEditNode: CanvasNodeData | null; maskEditNode: CanvasNodeData | null; imageEditNode: CanvasNodeData | null; layerDecompositionNode: CanvasNodeData | null; textEditNode: CanvasNodeData | null; imageEditPreset?: "remove-background" | null; upscaleNode: CanvasNodeData | null; onCloseCrop: () => void; onCloseAnnotation: () => void; onCloseAnnotationEdit: () => void; onCloseMaskEdit: () => void; onCloseUpscale: () => void; onCloseImageEdit: () => void; onCloseLayerDecomposition: () => void; onCloseTextEdit: () => void; onCrop: (node: CanvasNodeData, crop: CanvasImageCropRect) => void; onAnnotate: (node: CanvasNodeData, dataUrl: string) => void; onAnnotationEdit: (node: CanvasNodeData, payload: CanvasImageAnnotationPayload) => void; onMaskEdit: (node: CanvasNodeData, payload: CanvasImageMaskEditPayload) => void; onUpscale: (node: CanvasNodeData, params: CanvasImageUpscaleParams) => void; onImageOperation: (node: CanvasNodeData, payload: CanvasImageEditPayload) => void; onLayerDecomposition: (node: CanvasNodeData, payload: CanvasImageLayerDecompositionPayload) => void; onDetectText: () => Promise; onTextEdit: (node: CanvasNodeData, payload: CanvasImageTextEditPayload) => void; config: AiConfig; }; export function CanvasProjectMediaDialogs({ cropNode, annotationNode, annotationEditNode, maskEditNode, imageEditNode, layerDecompositionNode, textEditNode, imageEditPreset, upscaleNode, onCloseCrop, onCloseAnnotation, onCloseAnnotationEdit, onCloseMaskEdit, onCloseUpscale, onCloseImageEdit, onCloseLayerDecomposition, onCloseTextEdit, onCrop, onAnnotate, onAnnotationEdit, onMaskEdit, onUpscale, onImageOperation, onLayerDecomposition, onDetectText, onTextEdit, config, }: CanvasProjectMediaDialogsProps) { return ( <> {cropNode?.metadata?.content ? onCrop(cropNode, crop)} /> : null} {annotationNode?.metadata?.content ? { if (typeof dataUrl === "string") onAnnotate(annotationNode, dataUrl); }} /> : null} {annotationEditNode?.metadata?.content ? { if (typeof payload !== "string") onAnnotationEdit(annotationEditNode, payload); }} /> : null} {maskEditNode?.metadata?.content ? onMaskEdit(maskEditNode, payload)} /> : null} {upscaleNode?.metadata?.content ? onUpscale(upscaleNode, params)} /> : null} {imageEditNode?.metadata?.content ? onImageOperation(imageEditNode, payload)} /> : null} {layerDecompositionNode?.metadata?.content ? onLayerDecomposition(layerDecompositionNode, payload)} /> : null} {textEditNode?.metadata?.content ? onTextEdit(textEditNode, payload)} /> : null} ); }