Files
voidraft/frontend/src/views/editor/manager/index.ts
2025-12-14 02:19:50 +08:00

61 lines
1.6 KiB
TypeScript

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<Extension[]> => {
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';