SchemaInitializerManager

实例方法

schemaInitializerManager.add()

添加 SchemaInitializer 实例。

  • 类型
1class SchemaInitializerManager {
2    add<P1 = any, P2 = any>(...schemaInitializerList: SchemaInitializer<P1, P2>[]): void
3}
  • 示例
1const myInitializer = new SchemaInitializer({
2  name: 'MyInitializer',
3  title: 'Add block',
4  items: [
5    {
6      name: 'demo',
7      type: 'item',
8      title: 'Demo'
9    }
10  ],
11});
12
13class MyPlugin extends Plugin {
14    async load() {
15        this.app.schemaInitializerManager.add(myInitializer);
16    }
17}

schemaInitializerManager.get()

获取一个 SchemaInitializer 实例。

  • 类型
1class SchemaInitializerManager {
2    get<P1 = ButtonProps, P2 = {}>(name: string): SchemaInitializer<P1, P2> | undefined
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3       const myInitializer = this.app.schemaInitializerManager.get('MyInitializer');
4    }
5}

schemaInitializerManager.getAll()

获取所有的 SchemaInitializer 实例。

  • 类型
1class SchemaInitializerManager {
2    getAll(): Record<string, SchemaInitializer<any, any>>
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        const list = this.app.schemaInitializerManager.getAll();
4    }
5}

app.schemaInitializerManager.has()

判断是否有存在某个 SchemaInitializer 实例。

  • 类型
1class SchemaInitializerManager {
2    has(name: string): boolean
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        const hasMyInitializer = this.app.schemaInitializerManager.has('MyInitializer');
4    }
5}

schemaInitializerManager.remove()

移除 SchemaInitializer 实例。

  • 类型
1class SchemaInitializerManager {
2    remove(name: string): void
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        this.app.schemaInitializerManager.remove('MyInitializer');
4    }
5}

schemaInitializerManager.addItem()

添加 SchemaInitializer 实例的 Item 项,其和直接 schemaInitializer.add() 方法的区别是,可以确保在实例存在时才会添加。

  • 类型
1class SchemaInitializerManager {
2    addItem(schemaInitializerName: string, itemName: string, data: Omit<SchemaInitializerItemType, 'name'>): void
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        // 方式1:先获取,再添加子项,需要确保已注册
4        const myInitializer = this.app.schemaInitializerManager.get('MyInitializer');
5        if (myInitializer) {
6            myInitializer.add('b', { type: 'item', title: 'B' })
7        }
8
9        // 方式2:通过 addItem,内部确保在 MyInitializer 注册时才会添加
10        this.app.schemaInitializerManager.addItem('MyInitializer', 'b', {
11            type: 'item',
12            title: 'B'
13        })
14    }
15}

schemaInitializerManager.removeItem()

移除 实例的 Item 项,其和直接 schemaInitializer.remove() 方法的区别是,可以确保在实例存在时才会移除。

  • 类型
1class SchemaInitializerManager {
2    removeItem(schemaInitializerName: string, itemName: string): void
3}
  • 示例
1class MyPlugin extends Plugin {
2    async load() {
3        // 方式1:先获取,再删除子项,需要确保已注册
4        const myInitializer = this.app.schemaInitializerManager.get('MyInitializer');
5        if (myInitializer) {
6            myInitializer.remove('a')
7        }
8
9        // 方式2:通过 addItem,内部确保在 MyInitializer 注册时才会移除
10        this.app.schemaInitializerManager.remove('MyInitializer', 'a')
11    }
12}