import { inject, injectable } from 'inversify'; import type { FormSchema, TooltipProps } from '@gedit/ui'; import { EntityManager } from '../common'; import { SelectorConfigEntity } from './layer'; export interface SelectorExtendSchema { type: string; title?: string; className?: string; parentClassName?: string; category?: number; order?: number; icon?: React.JSX.Element; visible?: (node?: any, register?: any) => boolean; tooltipProps?: { [key: string]: any } | ((node?: any, register?: any) => { [key: string]: any }); changeCallback?: (v: (v: boolean) => void) => void; event?: FormSchema & { hover?: TooltipProps }; } export const SelectorExtendContribution = Symbol('SelectorExtendContribution'); export interface SelectorExtendContribution { registerExtendSchema(registry: SelectorExtendContributionRegistry): void } @injectable() export class SelectorExtendContributionRegistry { @inject(EntityManager) readonly entityManager: EntityManager; registerSchema(schema: SelectorExtendSchema[]): void { if (!this.entityManager) { return; } const selectionConfigEntity = this.entityManager.getEntity(SelectorConfigEntity); selectionConfigEntity?.registerExtendSchema(schema); } } @injectable() export class SelectorExtendContributionDefault implements SelectorExtendContribution { registerExtendSchema(registry: SelectorExtendContributionRegistry): void { } }