import { Crepe } from '@milkdown/crepe'; import { useNodeViewFactory } from '@prosemirror-adapter/react'; import { MediaUploadHandler } from '../../types'; import { VideoSlashMenuItems, SlashMenuItemConfig } from './slash-items'; /** Minimal interface for slash menu group returned by builder.addGroup() */ interface SlashMenuGroup { addItem: (key: string, item: SlashMenuItemConfig) => SlashMenuGroup; } export interface ConfigureVideoOptions { /** Node view factory from useNodeViewFactory() */ nodeViewFactory: ReturnType; /** Optional callback to upload video files. If not provided, uses blob URLs. */ onUploadVideo?: MediaUploadHandler; } /** * Configure video blocks feature for the editor. * Installs video plugins, NodeView, and input rule. * * Usage: * ```ts * const nodeViewFactory = useNodeViewFactory(); * * // In useEditor callback: * configureVideo(crepe, { * nodeViewFactory, * onUploadVideo: async (file) => { * // Upload to S3 and return URL * return uploadedUrl; * } * }); * ``` */ export declare function configureVideo(crepe: Crepe, { nodeViewFactory, onUploadVideo }: ConfigureVideoOptions): void; /** * Adds video item to a slash menu group. * Call this in Crepe's buildMenu callback. * * Usage: * ```ts * [Crepe.Feature.BlockEdit]: { * buildMenu: (builder) => { * const mediaGroup = builder.addGroup('media', 'Media'); * configureVideoSlashMenu(mediaGroup); * }, * }, * ``` */ export declare function configureVideoSlashMenu(group: SlashMenuGroup): void; export { VideoSlashMenuItems };