26 lines
780 B
TypeScript
26 lines
780 B
TypeScript
"use client";
|
|
|
|
import { create } from "zustand";
|
|
import type { ReferenceTarget } from "@/types/search";
|
|
import type { Json } from "@/types/supabase";
|
|
|
|
export interface EditorReferenceBridgeResult {
|
|
blockId: string | null;
|
|
}
|
|
|
|
export interface EditorReferenceBridge {
|
|
insertInlineReference: (target: ReferenceTarget, alias?: string) => EditorReferenceBridgeResult;
|
|
insertEmbedReference: (target: ReferenceTarget) => EditorReferenceBridgeResult;
|
|
replaceWithSnapshot: (blocks: Json) => void;
|
|
}
|
|
|
|
interface EditorBridgeState {
|
|
bridge: EditorReferenceBridge | null;
|
|
registerBridge: (bridge: EditorReferenceBridge | null) => void;
|
|
}
|
|
|
|
export const useEditorBridgeStore = create<EditorBridgeState>((set) => ({
|
|
bridge: null,
|
|
registerBridge: (bridge) => set({ bridge }),
|
|
}));
|