import type { CanvasNode } from "@/types/canvas"; export const LOCAL_UPLOAD_PREVIEW_METADATA_KEY = "localUploadPreviewUrl"; export const LOCAL_UPLOAD_PENDING_METADATA_KEY = "localUploadPending"; export function isLocalPreviewUrl(value: unknown) { return typeof value === "string" && value.startsWith("blob:"); } export function isCanvasImageUploadPending(node: CanvasNode | null | undefined) { if (!node || node.type !== "image") return false; const data = (node.data || {}) as Record; const metadata = data.metadata && typeof data.metadata === "object" && !Array.isArray(data.metadata) ? (data.metadata as Record) : {}; return ( metadata[LOCAL_UPLOAD_PENDING_METADATA_KEY] === true || isLocalPreviewUrl(data.src) || isLocalPreviewUrl(metadata[LOCAL_UPLOAD_PREVIEW_METADATA_KEY]) ); } export function isCanvasImageReadyForAi(node: CanvasNode | null | undefined) { if (!node || node.type !== "image" || isCanvasImageUploadPending(node)) { return false; } const src = String(((node.data as Record)?.src || "")).trim(); return /^https?:\/\//i.test(src); }