import { Disposable, TreeDataProvider, TreeItem, TreeItemIndex, } from '../types'; export class CompleteTreeDataProvider implements Required> { private provider: TreeDataProvider; constructor(provider: TreeDataProvider) { this.provider = provider; } public async getTreeItem(itemId: TreeItemIndex): Promise { return this.provider.getTreeItem(itemId); } public async getTreeItems(itemIds: TreeItemIndex[]): Promise { return this.provider.getTreeItems ? this.provider.getTreeItems(itemIds) : Promise.all(itemIds.map(id => this.provider.getTreeItem(id))); } public async onChangeItemChildren( itemId: TreeItemIndex, newChildren: TreeItemIndex[] ): Promise { return this.provider.onChangeItemChildren?.(itemId, newChildren); } public onDidChangeTreeData( listener: (changedItemIds: TreeItemIndex[]) => void ): Disposable { return this.provider.onDidChangeTreeData ? this.provider.onDidChangeTreeData(listener) : { dispose: () => {} }; } public async onRenameItem(item: TreeItem, name: string): Promise { return this.provider.onRenameItem?.(item, name); } }