import type { UniComponent } from '@blocksuite/affine-shared/types'; import { createUniComponentFromWebComponent } from '../utils/uni-component/index.js'; import type { BaseCellRenderer } from './base-cell.js'; import type { CellRenderer, DataViewCellComponent } from './manager.js'; export interface Renderer< Data extends NonNullable = NonNullable, RawValue = unknown, JsonValue = unknown, > { type: string; icon?: UniComponent; cellRenderer: CellRenderer; } export const createFromBaseCellRenderer = < RawValue = unknown, JsonValue = unknown, Data extends Record = Record, >( renderer: new () => BaseCellRenderer ): DataViewCellComponent => { return createUniComponentFromWebComponent(renderer as never) as never; };