From 4d81a85f22a395f1b90b277f6eec0794de577184 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 28 Nov 2018 11:06:17 +0100 Subject: [PATCH] fix build --- src/vs/base/browser/ui/tree/dataTree.ts | 28 +++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/vs/base/browser/ui/tree/dataTree.ts b/src/vs/base/browser/ui/tree/dataTree.ts index 1b612f43be0..015ec089e11 100644 --- a/src/vs/base/browser/ui/tree/dataTree.ts +++ b/src/vs/base/browser/ui/tree/dataTree.ts @@ -35,15 +35,17 @@ interface IDataTreeListTemplateData { templateData: T; } -function unpack(node: ITreeNode, TFilterData>): ITreeNode { - return new Proxy(Object.create(null), { - get: (_: any, name: string) => { - switch (name) { - case 'element': return node.element.element; - default: return node[name]; - } - } - }); +class DataTreeNodeWrapper implements ITreeNode { + get element(): T { return this.node.element.element; } + get parent(): ITreeNode { return new DataTreeNodeWrapper(this.node.parent); } + get children(): ITreeNode[] { return this.node.children.map(node => new DataTreeNodeWrapper(node)); } + get depth(): number { return this.node.depth; } + get collapsible(): boolean { return this.node.collapsible; } + get collapsed(): boolean { return this.node.collapsed; } + get visible(): boolean { return this.node.visible; } + get filterData(): TFilterData { return this.node.filterData; } + + constructor(private node: ITreeNode, TFilterData>) { } } class DataTreeRenderer implements ITreeRenderer, TFilterData, IDataTreeListTemplateData> { @@ -64,8 +66,8 @@ class DataTreeRenderer implements ITreeRenderer, TFilterData>, index: number, templateData: IDataTreeListTemplateData): void { - this.renderer.renderElement(unpack(element), index, templateData.templateData); + renderElement(node: ITreeNode, TFilterData>, index: number, templateData: IDataTreeListTemplateData): void { + this.renderer.renderElement(new DataTreeNodeWrapper(node), index, templateData.templateData); } renderTwistie(element: IDataTreeNode, twistieElement: HTMLElement): boolean { @@ -77,8 +79,8 @@ class DataTreeRenderer implements ITreeRenderer, TFilterData>, index: number, templateData: IDataTreeListTemplateData): void { - this.renderer.disposeElement(unpack(element), index, templateData.templateData); + disposeElement(node: ITreeNode, TFilterData>, index: number, templateData: IDataTreeListTemplateData): void { + this.renderer.disposeElement(new DataTreeNodeWrapper(node), index, templateData.templateData); } disposeTemplate(templateData: IDataTreeListTemplateData): void {