import { PlatePlugin } from 'platejs/react'; import { EditorPluginKit, PluginKitOptions } from '../types/plugin-types'; /** * 创建插件工厂函数 * 用于创建可配置的插件集合 * * @param plugins - 插件数组 * @param defaultOptions - 默认选项 * @returns 插件工厂函数 * * @example * ```ts * const MyPluginKit = createPluginFactory([ * Plugin1, * Plugin2, * ]); * * // 使用默认配置 * const plugins = MyPluginKit(); * * // 使用自定义配置 * const plugins = MyPluginKit({ enabled: true, config: { ... } }); * ``` */ export declare function createPluginFactory(plugins: EditorPluginKit, defaultOptions?: PluginKitOptions): (options?: PluginKitOptions) => EditorPluginKit; /** * 合并多个插件集合 * * @param kits - 插件集合数组 * @returns 合并后的插件数组 * * @example * ```ts * const allPlugins = mergePluginKits( * BasicPluginKit, * AdvancedPluginKit, * CustomPluginKit * ); * ``` */ export declare function mergePluginKits(...kits: EditorPluginKit[]): EditorPluginKit; /** * 过滤插件集合 * * @param kit - 插件集合 * @param predicate - 过滤函数 * @returns 过滤后的插件数组 * * @example * ```ts * const filteredPlugins = filterPluginKit( * EditorKit, * (plugin) => plugin.key !== 'unwanted-plugin' * ); * ``` */ export declare function filterPluginKit(kit: EditorPluginKit, predicate: (plugin: PlatePlugin) => boolean): EditorPluginKit; /** * 替换插件集合中的特定插件 * * @param kit - 插件集合 * @param key - 要替换的插件 key * @param newPlugin - 新插件 * @returns 替换后的插件数组 * * @example * ```ts * const updatedPlugins = replacePlugin( * EditorKit, * 'old-plugin', * NewPlugin * ); * ``` */ export declare function replacePlugin(kit: EditorPluginKit, key: string, newPlugin: PlatePlugin): EditorPluginKit; /** * 在指定插件之前插入新插件 * * @param kit - 插件集合 * @param beforeKey - 参考插件的 key * @param newPlugin - 要插入的新插件 * @returns 插入后的插件数组 */ export declare function insertPluginBefore(kit: EditorPluginKit, beforeKey: string, newPlugin: PlatePlugin): EditorPluginKit; /** * 在指定插件之后插入新插件 * * @param kit - 插件集合 * @param afterKey - 参考插件的 key * @param newPlugin - 要插入的新插件 * @returns 插入后的插件数组 */ export declare function insertPluginAfter(kit: EditorPluginKit, afterKey: string, newPlugin: PlatePlugin): EditorPluginKit;