import { inject, injectable } from 'inversify' import { MapStore } from '../../../services/mapStore'; import { LinkedTree } from 'ts-toolset'; import { HtmlSchema } from '../../parts/htmlSchema'; import { IHtmlSchemaNode } from '../../../models/html'; import { ServicesIoc, WorkbenchIoc } from '../../../ioc'; import { MapStoreKeys, globalStoreKeys, UndoManagerKeys } from './common/signature'; import { StyleAccess } from '../../../workbench/parts/styleAccess/styleAccess'; import { UndoRedo } from '../../../common/undoRedo'; import { TreeDndDatasetUndoRedoActionCollection } from '../../../common/tree/treeDatasetUndoRedo'; export interface IHtmlWorkbenchInitiator { } @injectable() export class HtmlWorkbenchInitiator implements IHtmlWorkbenchInitiator { constructor( @inject(ServicesIoc.Identifier.MapStore) private _mapStore: MapStore, @inject(WorkbenchIoc.PartsIdentifier.HtmlSchema) private _htmlSchema: HtmlSchema, @inject(WorkbenchIoc.PartsIdentifier.StyleAccess) private _styleAccess: StyleAccess ) { const cssRuleStore = new Map(); const globalStore = new Map(); /** 初始化通用 存储 */ this._mapStore .register(MapStoreKeys.componentStore, new Map()) .register(MapStoreKeys.editorOptionStore, new Map()) .register(MapStoreKeys.templateSchemaStore, new Map()) .register(MapStoreKeys.pageSchemaStore, new Map()) .register(MapStoreKeys.undoManagerStore, new Map()) .register(MapStoreKeys.cssRuleStore, cssRuleStore) .register(MapStoreKeys.globalStore, globalStore); const undoManagerStore = this._mapStore.get(MapStoreKeys.undoManagerStore)!; // 初始化 htmlSchema 撤销、恢复 对象 let htmlSchemaUndoManager = new UndoRedo(20, TreeDndDatasetUndoRedoActionCollection); undoManagerStore.set(UndoManagerKeys.htmlSchemaUndoManager, htmlSchemaUndoManager); // HtmlSchema const schemaTree = new LinkedTree(); this._htmlSchema.setLinkedTree(schemaTree); globalStore.set(globalStoreKeys.schemaTree, schemaTree); // StyleAccess this._styleAccess.setCssRuleStore(cssRuleStore); } }