"use client"; import { create } from "zustand"; import type { ReferenceTarget } from "@/types/search"; import type { Json } from "@/types/supabase"; import type { MediaAsset } from "@/types/media"; export interface EditorReferenceBridgeResult { blockId: string | null; } export interface EditorReferenceBridge { insertInlineReference: (target: ReferenceTarget, alias?: string) => EditorReferenceBridgeResult; insertEmbedReference: (target: ReferenceTarget) => EditorReferenceBridgeResult; /** * 向当前打开的文档插入一个“附件/媒体”块。 * 主要用于侧边栏文件树拖拽上传后,把文件显示到主编辑区。 */ insertMediaAsset?: (asset: MediaAsset) => void; /** * 向当前打开的文档插入一个“思维导图”块。 * 用于:从垃圾桶恢复思维导图后,把导图重新插入主编辑区。 */ insertMindmapAsset?: (args: { documentId: string; mindmapId: string }) => void; replaceWithSnapshot: (blocks: Json) => void; openTableFullScreen?: (tableId: string) => void; } interface EditorBridgeState { bridge: EditorReferenceBridge | null; registerBridge: (bridge: EditorReferenceBridge | null) => void; } export const useEditorBridgeStore = create((set) => ({ bridge: null, registerBridge: (bridge) => set({ bridge }), }));