import {Extension} from '@codemirror/state'; import {EditorView} from '@codemirror/view'; import {useExtensionStore} from '@/stores/extensionStore'; import {Manager} from './manager'; import {registerAllExtensions} from './extensions'; /** * 全局扩展管理器实例 */ const extensionManager = new Manager(); /** * 异步创建动态扩展 * 确保扩展配置已加载 */ export const createDynamicExtensions = async (): Promise => { const extensionStore = useExtensionStore(); // 注册所有扩展工厂 registerAllExtensions(extensionManager); // 确保扩展配置已加载 if (extensionStore.extensions.length === 0) { await extensionStore.loadExtensions(); } // 初始化扩展管理器配置 extensionManager.initExtensions(extensionStore.extensions); // 获取初始扩展配置 return extensionManager.getInitialExtensions(); }; /** * 获取扩展管理器实例 * @returns 扩展管理器 */ export const getExtensionManager = (): Manager => { return extensionManager; }; /** * 设置编辑器视图到扩展管理器 * @param view 编辑器视图 * @param documentId 文档ID */ export const setExtensionManagerView = (view: EditorView, documentId: number): void => { extensionManager.setView(view, documentId); }; /** * 从扩展管理器移除编辑器视图 * @param documentId 文档ID */ export const removeExtensionManagerView = (documentId: number): void => { extensionManager.removeView(documentId); }; // 导出相关模块 export {Manager} from './manager'; export {registerAllExtensions, getExtensionDisplayName, getExtensionDescription} from './extensions';