import { createIdentifier, type ServiceIdentifier, } from '@blocksuite/global/di'; import type { GfxLocalElementModel, GfxPrimitiveElementModel, } from '@blocksuite/std/gfx'; import type { ExtensionType } from '@blocksuite/store'; import type { ElementRenderer } from '../renderer/elements'; export const ElementRendererIdentifier = createIdentifier('element-renderer'); export const ElementRendererExtension = < T extends GfxPrimitiveElementModel | GfxLocalElementModel, >( id: string, renderer: ElementRenderer ): ExtensionType & { identifier: ServiceIdentifier>; } => { const identifier = ElementRendererIdentifier>(id); return { setup: di => { di.addImpl(identifier, () => renderer); }, identifier, }; };