h-sphere_sql-seal/src/modules/editor/module.ts
Kacper Kula 285684dfc4
Refactoring Project to use proper Inversion of Control (#171)
* chore: reworking plugin internals into modules

* feat: settings module is now working, added debug module, enabled new api module

* chore: restoring external API

* feat: refactoring project to use proper inversion of control

* feat: plugins can now be loaded in any order

* chore: final file migration, all typescript is in modules now

* chore: fixing dependencies of cellParser

* feat: csv and json views are only registered when they are not colliding with other plugins

* feat: fixed library behaviour on canvas
2025-08-10 09:34:54 +01:00

30 lines
1.1 KiB
TypeScript

import { asClass, asFactory, buildContainer } from "@hypersphere/dity"
import { App, Plugin } from "obsidian"
import { SqlSealDatabase } from "../database/database"
import { Sync } from "../sync/sync/sync"
import { RendererRegistry } from "./renderer/rendererRegistry"
import { EditorInit } from "./init"
import { SqlSealCodeblockHandler } from "./codeblockHandler/SqlSealCodeblockHandler"
import { SqlSealInlineHandler } from "./codeblockHandler/inline/InlineCodeHandler"
import { Settings } from "../settings/Settings"
import { ModernCellParser } from "../syntaxHighlight/cellParser/ModernCellParser"
export const editor = buildContainer(c => c
.register({
blockHandler: asClass(SqlSealCodeblockHandler),
inlineHandler: asClass(SqlSealInlineHandler),
rendererRegistry: asClass(RendererRegistry),
init: asFactory(EditorInit)
})
.externals<{
app: App,
db: SqlSealDatabase,
plugin: Plugin,
sync: Sync,
cellParser: ModernCellParser,
settings: Settings
}>()
.exports('rendererRegistry', 'init')
)
export type EditorModule = typeof editor