diff --git a/src/system/array.ts b/src/system/array.ts index 27f63f8..8446350 100644 --- a/src/system/array.ts +++ b/src/system/array.ts @@ -85,7 +85,7 @@ export namespace Arrays { value?: T; // parent?: IHierarchicalItem; - children: { [key: string]: IHierarchicalItem } | undefined; + children: Map> | undefined; descendants: T[] | undefined; } @@ -98,7 +98,7 @@ export namespace Arrays { const seed = { name: '', relativePath: '', - children: Object.create(null), + children: new Map(), descendants: [] }; @@ -110,18 +110,19 @@ export namespace Arrays { relativePath = joinPath(relativePath, folderName); if (folder.children === undefined) { - folder.children = Object.create(null); + folder.children = new Map(); } - let f = folder.children![folderName]; + let f = folder.children!.get(folderName); if (f === undefined) { - folder.children![folderName] = f = { + f = { name: folderName, relativePath: relativePath, // parent: folder, children: undefined, descendants: undefined }; + folder.children.set(folderName, f); } if (folder.descendants === undefined) { @@ -147,7 +148,7 @@ export namespace Arrays { ): IHierarchicalItem { if (root.children === undefined) return root; - const children = [...Objects.values(root.children)]; + const children = [...root.children.values()]; // // Attempts less nesting but duplicate roots // if (!isRoot && children.every(c => c.value === undefined)) { diff --git a/src/views/nodes/branchOrTagFolderNode.ts b/src/views/nodes/branchOrTagFolderNode.ts index a79988d..b877a42 100644 --- a/src/views/nodes/branchOrTagFolderNode.ts +++ b/src/views/nodes/branchOrTagFolderNode.ts @@ -32,7 +32,7 @@ export class BranchOrTagFolderNode extends ViewNode { const children: (BranchOrTagFolderNode | BranchNode | TagNode)[] = []; - for (const folder of Objects.values(this.root.children)) { + for (const folder of this.root.children.values()) { if (folder.value === undefined) { // If the folder contains the current branch, expand it by default const expanded = diff --git a/src/views/nodes/folderNode.ts b/src/views/nodes/folderNode.ts index b1fb513..2c839fe 100644 --- a/src/views/nodes/folderNode.ts +++ b/src/views/nodes/folderNode.ts @@ -41,7 +41,7 @@ export class FolderNode extends ViewNode { ); if (nesting !== ViewFilesLayout.List) { children = []; - for (const folder of Objects.values(this.root.children)) { + for (const folder of this.root.children.values()) { if (folder.value === undefined) { children.push( new FolderNode(